/* Test of fwrite() function, adapted from gnulib-tests in grep. Copyright (C) 2011-2013 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>. */ #include <errno.h> #include <fcntl.h> #include <unistd.h> #include <stdio.h> static int do_test (void) { char tmpl[] = "/tmp/tst-fwrite-error.XXXXXX"; int fd = mkstemp (tmpl); if (fd == -1) { printf ("mkstemp failed with errno %d\n", errno); return 1; } FILE *fp = fdopen (fd, "w"); if (fp == NULL) { printf ("fdopen failed with errno %d\n", errno); return 1; } char buf[] = "world"; setvbuf (fp, NULL, _IONBF, 0); close (fd); unlink (tmpl); errno = 0; int ret = fwrite (buf, 1, sizeof (buf), fp); if (ret != 0) { printf ("fwrite returned %d\n", ret); return 1; } if (errno != EBADF) { printf ("Errno is not EBADF: %d\n", errno); return 1; } if (ferror (fp) == 0) { printf ("ferror not set\n"); return 1; } return 0; } #define TEST_FUNCTION do_test () #include "../test-skeleton.c"