diff options
Diffstat (limited to 'libio/bug-rewind.c')
-rw-r--r-- | libio/bug-rewind.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/libio/bug-rewind.c b/libio/bug-rewind.c new file mode 100644 index 0000000000..2a30d28e25 --- /dev/null +++ b/libio/bug-rewind.c @@ -0,0 +1,52 @@ +#include <stdio.h> +#include <wchar.h> + +#define PASSED 0 +#define FAILED 3 + + +int +main (void) +{ + FILE *fptr; + char arg1; + char arg2; + int ret, ret1, ret2, result, num; + + ret1 = 0; + ret2 = 0; + + if ((fptr = fopen ("./wrewind.dat", "w+")) == NULL) + { + printf ("Unable to open file.\n"); + return 1; + } + + if ((ret = fwprintf (fptr, L"cderf")) <= 0) + { + printf ("Unable to write to file with fwprintf().\n"); + fclose (fptr); + return 2; + } + + rewind (fptr); + ret1 = fwscanf (fptr, L"%c%c", &arg1, &arg2); + + rewind (fptr); + ret2 = fwscanf (fptr, L"%c%n%c", &arg1, &num, &arg2); + + if (arg2 != 'd') + { + result = FAILED; + printf ("rewind after first fwscanf failed\n"); + } + else + { + printf ("Passed\n"); + result = PASSED; + } + + + fclose (fptr); + return result; +} |