bug-rewind.c 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include <stdio.h>
  2. #include <wchar.h>
  3. #define PASSED 0
  4. #define FAILED 3
  5. static int fd;
  6. static void prepare (void);
  7. #define PREPARE(argc, argv) prepare ()
  8. #define TEST_FUNCTION do_test ()
  9. static int do_test (void);
  10. #include "../test-skeleton.c"
  11. static void
  12. prepare (void)
  13. {
  14. fd = create_temp_file ("wrewind.", NULL);
  15. if (fd == -1)
  16. exit (3);
  17. }
  18. static int
  19. do_test (void)
  20. {
  21. FILE *fptr;
  22. char arg1;
  23. char arg2;
  24. int ret1, ret2, result, num;
  25. ret1 = 0;
  26. ret2 = 0;
  27. fptr = fdopen (fd, "w+");
  28. if (fptr == NULL)
  29. {
  30. printf ("Unable to open file.\n");
  31. return 1;
  32. }
  33. if (fwprintf (fptr, L"cderf") <= 0)
  34. {
  35. printf ("Unable to write to file with fwprintf().\n");
  36. fclose (fptr);
  37. return 2;
  38. }
  39. rewind (fptr);
  40. ret1 = fwscanf (fptr, L"%c%c", &arg1, &arg2);
  41. if (ret1 != 2)
  42. {
  43. printf ("first fwscanf returned %d, expected 2\n", ret1);
  44. return 3;
  45. }
  46. rewind (fptr);
  47. ret2 = fwscanf (fptr, L"%c%n%c", &arg1, &num, &arg2);
  48. if (ret2 != 2)
  49. {
  50. printf ("second fwscanf returned %d, expected 2\n", ret2);
  51. return 4;
  52. }
  53. if (arg2 != 'd')
  54. {
  55. result = FAILED;
  56. printf ("rewind after first fwscanf failed\n");
  57. }
  58. else
  59. {
  60. printf ("Passed\n");
  61. result = PASSED;
  62. }
  63. fclose (fptr);
  64. return result;
  65. }