(linenum→info "unix/slp.c:2238")

glibc/2.7/libio/bug-rewind2.c

    1: #include <stdio.h>
    2: #include <wchar.h>
    3: 
    4: 
    5: static int fd;
    6: 
    7: static void prepare (void);
    8: #define PREPARE(argc, argv) prepare ()
    9: 
   10: 
   11: #define TEST_FUNCTION do_test ()
   12: static int do_test (void);
   13: #include "../test-skeleton.c"
   14: 
   15: 
   16: static void
   17: prepare (void)
   18: {
   19:   fd = create_temp_file ("wrewind2.", NULL);
   20:   if (fd == -1)
   21:     exit (3);
   22: }
   23: 
   24: 
   25: static int
   26: do_test (void)
   27: {
   28:   wchar_t dummy[10];
   29:   int ret = 0;
   30:   FILE *fp;
   31:   int result = 0;
   32: 
   33:   fp = fdopen (fd, "w+");
   34:   if (fp == NULL)
   35:     {
   36:       puts ("fopen(""testfile"", ""w+"") returned NULL.");
   37:       return 1;
   38:     }
   39:   else
   40:     {
   41:       fwprintf (fp, L"abcd");
   42:       printf ("current pos = %ld\n", ftell (fp));
   43:       if (ftell (fp) != 4)
   44:         result = 1;
   45: 
   46:       rewind (fp);
   47:       ret = fwscanf (fp, L"%c", dummy);
   48: 
   49:       printf ("current pos = %ld\n", ftell (fp));
   50:       if (ftell (fp) != 1)
   51:         result = 1;
   52: 
   53:       rewind (fp);
   54:       printf ("current pos = %ld\n", ftell (fp));
   55:       if (ftell (fp) != 0)
   56:         result = 1;
   57: 
   58:       fclose (fp);
   59:     }
   60: 
   61:   return result;
   62: }
Syntax (Markdown)