Mercurial > hg > octave-nkf > gnulib-hg
annotate tests/test-fread.c @ 15887:89c762414427
New module 'atanf'.
* lib/math.in.h (atanf): New declaration.
* lib/atanf.c: New file.
* m4/atanf.m4: New file.
* m4/math_h.m4 (gl_MATH_H): Test whether atanf is declared.
(gl_MATH_H_DEFAULTS): Initialize GNULIB_ATANF, HAVE_ATANF.
* modules/math (Makefile.am): Substitute GNULIB_ATANF, HAVE_ATANF.
* modules/atanf: New file.
* tests/test-math-c++.cc: Check the declaration of atanf.
* doc/posix-functions/atanf.texi: Mention the new module.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sat, 08 Oct 2011 23:55:44 +0200 |
parents | 22a143e3638f |
children | 8250f2777afc |
rev | line source |
---|---|
15772 | 1 /* Test of fread() function. |
2 Copyright (C) 2011 Free Software Foundation, Inc. | |
3 | |
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) | |
7 any later version. | |
8 | |
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. | |
13 | |
14 You should have received a copy of the GNU General Public License | |
15 along with this program; if not, write to the Free Software Foundation, | |
16 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ | |
17 | |
18 #include <config.h> | |
19 | |
20 #include <stdio.h> | |
21 | |
22 #include "signature.h" | |
23 SIGNATURE_CHECK (fread, size_t, (void *, size_t, size_t, FILE *)); | |
24 | |
25 #include <errno.h> | |
26 #include <fcntl.h> | |
27 #include <unistd.h> | |
28 | |
15795
dd52b68a488b
fputc, fwrite tests: Avoid test failure on MSVC.
Bruno Haible <bruno@clisp.org>
parents:
15772
diff
changeset
|
29 #include "msvc-inval.h" |
dd52b68a488b
fputc, fwrite tests: Avoid test failure on MSVC.
Bruno Haible <bruno@clisp.org>
parents:
15772
diff
changeset
|
30 |
15772 | 31 #include "macros.h" |
32 | |
33 int | |
34 main (int argc, char **argv) | |
35 { | |
36 const char *filename = "test-fread.txt"; | |
37 | |
15795
dd52b68a488b
fputc, fwrite tests: Avoid test failure on MSVC.
Bruno Haible <bruno@clisp.org>
parents:
15772
diff
changeset
|
38 /* We don't have an fread() function that installs an invalid parameter |
dd52b68a488b
fputc, fwrite tests: Avoid test failure on MSVC.
Bruno Haible <bruno@clisp.org>
parents:
15772
diff
changeset
|
39 handler so far. So install that handler here, explicitly. */ |
15796
22a143e3638f
fgetc, fputc, fread, fwrite tests: Fix link error.
Bruno Haible <bruno@clisp.org>
parents:
15795
diff
changeset
|
40 #if HAVE_MSVC_INVALID_PARAMETER_HANDLER \ |
22a143e3638f
fgetc, fputc, fread, fwrite tests: Fix link error.
Bruno Haible <bruno@clisp.org>
parents:
15795
diff
changeset
|
41 && MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING |
15795
dd52b68a488b
fputc, fwrite tests: Avoid test failure on MSVC.
Bruno Haible <bruno@clisp.org>
parents:
15772
diff
changeset
|
42 gl_msvc_inval_ensure_handler (); |
dd52b68a488b
fputc, fwrite tests: Avoid test failure on MSVC.
Bruno Haible <bruno@clisp.org>
parents:
15772
diff
changeset
|
43 #endif |
dd52b68a488b
fputc, fwrite tests: Avoid test failure on MSVC.
Bruno Haible <bruno@clisp.org>
parents:
15772
diff
changeset
|
44 |
15772 | 45 /* Prepare a file. */ |
46 { | |
47 const char text[] = "hello world"; | |
48 int fd = open (filename, O_RDWR | O_CREAT | O_TRUNC, 0600); | |
49 ASSERT (fd >= 0); | |
50 ASSERT (write (fd, text, sizeof (text)) == sizeof (text)); | |
51 ASSERT (close (fd) == 0); | |
52 } | |
53 | |
54 /* Test that fread() sets errno if someone else closes the stream | |
55 fd behind the back of stdio. */ | |
56 { | |
57 FILE *fp = fopen (filename, "r"); | |
58 char buf[5]; | |
59 ASSERT (fp != NULL); | |
60 ASSERT (close (fileno (fp)) == 0); | |
61 errno = 0; | |
62 ASSERT (fread (buf, 1, sizeof (buf), fp) == 0); | |
63 ASSERT (errno == EBADF); | |
64 ASSERT (ferror (fp)); | |
65 fclose (fp); | |
66 } | |
67 | |
68 /* Test that fread() sets errno if the stream was constructed with | |
69 an invalid file descriptor. */ | |
70 { | |
71 FILE *fp = fdopen (-1, "r"); | |
72 if (fp != NULL) | |
73 { | |
74 char buf[1]; | |
75 errno = 0; | |
76 ASSERT (fread (buf, 1, 1, fp) == 0); | |
77 ASSERT (errno == EBADF); | |
78 ASSERT (ferror (fp)); | |
79 fclose (fp); | |
80 } | |
81 } | |
82 { | |
83 FILE *fp = fdopen (99, "r"); | |
84 if (fp != NULL) | |
85 { | |
86 char buf[1]; | |
87 errno = 0; | |
88 ASSERT (fread (buf, 1, 1, fp) == 0); | |
89 ASSERT (errno == EBADF); | |
90 ASSERT (ferror (fp)); | |
91 fclose (fp); | |
92 } | |
93 } | |
94 | |
95 /* Clean up. */ | |
96 unlink (filename); | |
97 | |
98 return 0; | |
99 } |