diff options
Diffstat (limited to '')
| -rw-r--r-- | src/regress/lib/libc/stdio/test___freading.c | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/src/regress/lib/libc/stdio/test___freading.c b/src/regress/lib/libc/stdio/test___freading.c index 05716f3a38..f74eb78d35 100644 --- a/src/regress/lib/libc/stdio/test___freading.c +++ b/src/regress/lib/libc/stdio/test___freading.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: test___freading.c,v 1.1 2025/05/25 00:20:54 yasuoka Exp $ */ | 1 | /* $OpenBSD: test___freading.c,v 1.2 2025/06/12 07:39:26 yasuoka Exp $ */ |
| 2 | 2 | ||
| 3 | /* | 3 | /* |
| 4 | * Copyright (c) 2025 YASUOKA Masahiko <yasuoka@yasuoka.net> | 4 | * Copyright (c) 2025 YASUOKA Masahiko <yasuoka@yasuoka.net> |
| @@ -21,14 +21,31 @@ | |||
| 21 | #include <stdio_ext.h> | 21 | #include <stdio_ext.h> |
| 22 | #include <stdlib.h> | 22 | #include <stdlib.h> |
| 23 | #include <string.h> | 23 | #include <string.h> |
| 24 | #include <unistd.h> | ||
| 24 | 25 | ||
| 25 | /* we use assert() */ | 26 | /* we use assert() */ |
| 26 | #undef NDEBUG | 27 | #undef NDEBUG |
| 27 | 28 | ||
| 28 | #define TMPFILENAME "test___freading.tmp" | 29 | #define TMPFILENAME "test___freading.tmp" |
| 29 | 30 | ||
| 31 | void setup(void); | ||
| 32 | |||
| 30 | void test___freading0(void); | 33 | void test___freading0(void); |
| 31 | void test___freading1(void); | 34 | void test___freading1(void); |
| 35 | void test___freading2(void); | ||
| 36 | |||
| 37 | void | ||
| 38 | setup(void) | ||
| 39 | { | ||
| 40 | FILE *fp; | ||
| 41 | |||
| 42 | /* common setup */ | ||
| 43 | unlink(TMPFILENAME); | ||
| 44 | fp = fopen(TMPFILENAME, "w+"); | ||
| 45 | assert(fp != NULL); | ||
| 46 | fputs("Hello world\n", fp); | ||
| 47 | fclose(fp); | ||
| 48 | } | ||
| 32 | 49 | ||
| 33 | void | 50 | void |
| 34 | test___freading0(void) | 51 | test___freading0(void) |
| @@ -75,11 +92,34 @@ test___freading1(void) | |||
| 75 | assert(r == 0); | 92 | assert(r == 0); |
| 76 | } | 93 | } |
| 77 | 94 | ||
| 95 | void | ||
| 96 | test___freading2(void) | ||
| 97 | { | ||
| 98 | int r; | ||
| 99 | FILE *fp; | ||
| 100 | |||
| 101 | /* | ||
| 102 | * until v1.10 of fpurge.c mistakenly enables the writing buffer | ||
| 103 | * without _SRD flag set. | ||
| 104 | */ | ||
| 105 | fp = fopen(TMPFILENAME, "r+"); | ||
| 106 | assert(fp != NULL); | ||
| 107 | assert(fgetc(fp) == 'H'); | ||
| 108 | fpurge(fp); | ||
| 109 | fseek(fp, 0, SEEK_CUR); | ||
| 110 | assert(fputc('X', fp) == 'X'); | ||
| 111 | assert(__freading(fp) == 0); | ||
| 112 | |||
| 113 | r = fclose(fp); | ||
| 114 | assert(r == 0); | ||
| 115 | } | ||
| 116 | |||
| 78 | int | 117 | int |
| 79 | main(int argc, char *argv[]) | 118 | main(int argc, char *argv[]) |
| 80 | { | 119 | { |
| 81 | test___freading0(); | 120 | test___freading0(); |
| 82 | test___freading1(); | 121 | test___freading1(); |
| 122 | test___freading2(); | ||
| 83 | 123 | ||
| 84 | exit(0); | 124 | exit(0); |
| 85 | } | 125 | } |
