]> git.ipfire.org Git - thirdparty/glibc.git/blame - libio/iofwrite_u.c
Update copyright dates with scripts/update-copyrights.
[thirdparty/glibc.git] / libio / iofwrite_u.c
CommitLineData
04277e02 1/* Copyright (C) 1993-2019 Free Software Foundation, Inc.
41bdb6e2 2 This file is part of the GNU C Library.
ba9234d9 3
41bdb6e2
AJ
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
ba9234d9 8
41bdb6e2
AJ
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
ba9234d9 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41bdb6e2
AJ
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
15 License along with the GNU C Library; if not, see
16 <http://www.gnu.org/licenses/>.
41bdb6e2
AJ
17
18 As a special exception, if you link the code in this file with
19 files compiled with a GNU compiler to produce an executable,
20 that does not cause the resulting executable to be covered by
21 the GNU Lesser General Public License. This exception does not
22 however invalidate any other reasons why the executable file
23 might be covered by the GNU Lesser General Public License.
24 This exception applies to code released by its copyright holders
25 in files containing the exception. */
ba9234d9
UD
26
27#include "libioP.h"
8eaaffde 28#include <stdio.h>
ba9234d9 29
085320f5
UD
30#undef fwrite_unlocked
31
9964a145
ZW
32size_t
33fwrite_unlocked (const void *buf, size_t size, size_t count, FILE *fp)
ba9234d9 34{
9964a145
ZW
35 size_t request = size * count;
36 size_t written = 0;
ba9234d9 37 CHECK_FILE (fp, 0);
ba9234d9 38 if (request == 0)
a27c96b0 39 return 0;
d64b6ad0
UD
40 if (_IO_fwide (fp, -1) == -1)
41 {
42 written = _IO_sputn (fp, (const char *) buf, request);
3d110c7c
EB
43 /* We have written all of the input in case the return value indicates
44 this or EOF is returned. The latter is a special case where we
45 simply did not manage to flush the buffer. But the data is in the
46 buffer and therefore written as far as fwrite is concerned. */
47 if (written == request || written == EOF)
d64b6ad0
UD
48 return count;
49 }
50
51 return written / size;
ba9234d9 52}
3ba06713 53libc_hidden_def (fwrite_unlocked)