| #include <stdio.h> | 
 | #include <wchar.h> | 
 |  | 
 | #define PASSED  0 | 
 | #define	FAILED  3 | 
 |  | 
 |  | 
 | static int fd; | 
 |  | 
 | static void prepare (void); | 
 | #define PREPARE(argc, argv) prepare () | 
 |  | 
 |  | 
 | #define TEST_FUNCTION do_test () | 
 | static int do_test (void); | 
 | #include "../test-skeleton.c" | 
 |  | 
 |  | 
 | static void | 
 | prepare (void) | 
 | { | 
 |   fd = create_temp_file ("wrewind.", NULL); | 
 |   if (fd == -1) | 
 |     exit (3); | 
 | } | 
 |  | 
 |  | 
 | static int | 
 | do_test (void) | 
 | { | 
 |   FILE *fptr; | 
 |   char arg1; | 
 |   char arg2; | 
 |   int ret1, ret2, result, num; | 
 |  | 
 |   ret1 = 0; | 
 |   ret2 = 0; | 
 |  | 
 |   fptr = fdopen (fd, "w+"); | 
 |   if (fptr == NULL) | 
 |     { | 
 |       printf ("Unable to open file.\n"); | 
 |       return 1; | 
 |     } | 
 |  | 
 |   if (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); | 
 |   if (ret1 != 2) | 
 |     { | 
 |       printf ("first fwscanf returned %d, expected 2\n", ret1); | 
 |       return 3; | 
 |     } | 
 |  | 
 |   rewind (fptr); | 
 |   ret2 = fwscanf (fptr, L"%c%n%c", &arg1, &num, &arg2); | 
 |   if (ret2 != 2) | 
 |     { | 
 |       printf ("second fwscanf returned %d, expected 2\n", ret2); | 
 |       return 4; | 
 |     } | 
 |  | 
 |   if (arg2 != 'd') | 
 |     { | 
 |       result = FAILED; | 
 |       printf ("rewind after first fwscanf failed\n"); | 
 |     } | 
 |   else | 
 |     { | 
 |       printf ("Passed\n"); | 
 |       result = PASSED; | 
 |     } | 
 |  | 
 |  | 
 |   fclose (fptr); | 
 |   return result; | 
 | } |