1
/* Test of fwrite() function.
2
Copyright (C) 2011-2012 Free Software Foundation, Inc.
4
This program is free software; you can redistribute it and/or modify
5
it under the terms of the GNU General Public License as published by
6
the Free Software Foundation; either version 3, or (at your option)
9
This program is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
GNU General Public License for more details.
14
You should have received a copy of the GNU General Public License
15
along with this program; if not, see <http://www.gnu.org/licenses/>. */
21
#include "signature.h"
22
SIGNATURE_CHECK (fwrite, size_t, (const void *, size_t, size_t, FILE *));
28
#include "msvc-inval.h"
33
main (int argc, char **argv)
35
const char *filename = "test-fwrite.txt";
37
/* We don't have an fwrite() function that installs an invalid parameter
38
handler so far. So install that handler here, explicitly. */
39
#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \
40
&& MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING
41
gl_msvc_inval_ensure_handler ();
44
/* Test that fwrite() on an unbuffered stream sets errno if someone else
45
closes the stream fd behind the back of stdio. */
47
FILE *fp = fopen (filename, "w");
48
char buf[5] = "world";
50
setvbuf (fp, NULL, _IONBF, 0);
51
ASSERT (close (fileno (fp)) == 0);
53
ASSERT (fwrite (buf, 1, sizeof (buf), fp) == 0);
54
ASSERT (errno == EBADF);
59
/* Test that fwrite() on an unbuffered stream sets errno if the stream
60
was constructed with an invalid file descriptor. */
62
FILE *fp = fdopen (-1, "w");
65
char buf[5] = "world";
66
setvbuf (fp, NULL, _IONBF, 0);
68
ASSERT (fwrite (buf, 1, sizeof (buf), fp) == 0);
69
ASSERT (errno == EBADF);
75
FILE *fp = fdopen (99, "w");
78
char buf[5] = "world";
79
setvbuf (fp, NULL, _IONBF, 0);
81
ASSERT (fwrite (buf, 1, sizeof (buf), fp) == 0);
82
ASSERT (errno == EBADF);