]>
Commit | Line | Data |
---|---|---|
46e4bd3b | 1 | /* Test for fmemopen implementation. |
04277e02 | 2 | Copyright (C) 2000-2019 Free Software Foundation, Inc. |
46e4bd3b UD |
3 | This file is part of the GNU C Library. |
4 | Contributed by Hanno Mueller, kontakt@hanno.de, 2000. | |
5 | ||
6 | The GNU C Library is free software; you can redistribute it and/or | |
41bdb6e2 AJ |
7 | modify it under the terms of the GNU Lesser General Public |
8 | License as published by the Free Software Foundation; either | |
9 | version 2.1 of the License, or (at your option) any later version. | |
46e4bd3b UD |
10 | |
11 | The GNU C Library is distributed in the hope that it will be useful, | |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
41bdb6e2 | 14 | Lesser General Public License for more details. |
46e4bd3b | 15 | |
41bdb6e2 | 16 | You should have received a copy of the GNU Lesser General Public |
59ba27a6 PE |
17 | License along with the GNU C Library; if not, see |
18 | <http://www.gnu.org/licenses/>. */ | |
46e4bd3b UD |
19 | |
20 | static char buffer[] = "foobar"; | |
21 | ||
2d8e36e6 | 22 | #include <errno.h> |
46e4bd3b UD |
23 | #include <stdio.h> |
24 | #include <string.h> | |
7c2ce714 | 25 | #include <errno.h> |
63e952d9 PP |
26 | #include <mcheck.h> |
27 | ||
28 | static int | |
29 | do_bz18820 (void) | |
30 | { | |
31 | char ch; | |
32 | FILE *stream; | |
33 | ||
2d8e36e6 | 34 | errno = 0; |
63e952d9 PP |
35 | stream = fmemopen (&ch, 1, "?"); |
36 | if (stream) | |
37 | { | |
38 | printf ("fmemopen: expected NULL, got %p\n", stream); | |
39 | fclose (stream); | |
40 | return 1; | |
41 | } | |
2d8e36e6 PP |
42 | if (errno != EINVAL) |
43 | { | |
44 | printf ("fmemopen: got %i, expected EINVAL (%i)\n", errno, EINVAL); | |
45 | return 10; | |
46 | } | |
63e952d9 PP |
47 | |
48 | stream = fmemopen (NULL, 42, "?"); | |
49 | if (stream) | |
50 | { | |
51 | printf ("fmemopen: expected NULL, got %p\n", stream); | |
52 | fclose (stream); | |
53 | return 2; | |
54 | } | |
55 | ||
2d8e36e6 PP |
56 | errno = 0; |
57 | stream = fmemopen (NULL, ~0, "w"); | |
58 | if (stream) | |
59 | { | |
60 | printf ("fmemopen: expected NULL, got %p\n", stream); | |
61 | fclose (stream); | |
62 | return 3; | |
63 | } | |
64 | if (errno != ENOMEM) | |
65 | { | |
66 | printf ("fmemopen: got %i, expected ENOMEM (%i)\n", errno, ENOMEM); | |
67 | return 20; | |
68 | } | |
69 | ||
63e952d9 PP |
70 | return 0; |
71 | } | |
46e4bd3b | 72 | |
29955b5d AS |
73 | static int |
74 | do_test (void) | |
46e4bd3b UD |
75 | { |
76 | int ch; | |
77 | FILE *stream; | |
7c2ce714 | 78 | int ret = 0; |
46e4bd3b | 79 | |
63e952d9 PP |
80 | mtrace (); |
81 | ||
7c2ce714 | 82 | stream = fmemopen (buffer, strlen (buffer), "r+"); |
46e4bd3b UD |
83 | |
84 | while ((ch = fgetc (stream)) != EOF) | |
85 | printf ("Got %c\n", ch); | |
86 | ||
7c2ce714 AS |
87 | fputc ('1', stream); |
88 | if (fflush (stream) != EOF || errno != ENOSPC) | |
89 | { | |
90 | printf ("fflush didn't fail with ENOSPC\n"); | |
91 | ret = 1; | |
92 | } | |
93 | ||
46e4bd3b UD |
94 | fclose (stream); |
95 | ||
63e952d9 | 96 | return ret + do_bz18820 (); |
46e4bd3b | 97 | } |
29955b5d AS |
98 | |
99 | #define TEST_FUNCTION do_test () | |
100 | #include "../test-skeleton.c" |