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

glibc/2.7/libio/bug-ftell.c

    1: #include <locale.h>
    2: #include <stdio.h>
    3: #include <wchar.h>
    4: #include <sys/types.h>
    5: 
    6: 
    7: static int
    8: do_test (void)
    9: {
   10:   if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL)
   11:     {
   12:       puts ("setlocale failed");
   13:       return 1;
   14:     }
   15: 
   16:   FILE *fp = tmpfile ();
   17:   if (fp == NULL)
   18:     {
   19:       puts ("tmpfile failed");
   20:       return 1;
   21:     }
   22: 
   23:   if (fputws (L"hello", fp) == EOF)
   24:     {
   25:       puts ("fputws failed");
   26:       return 1;
   27:     }
   28: 
   29:   rewind (fp);
   30: 
   31:   const wchar_t *cp;
   32:   unsigned int cnt;
   33:   for (cp = L"hello", cnt = 1; *cp != L'\0'; ++cp, ++cnt)
   34:     {
   35:       wint_t wc = fgetwc (fp);
   36:       if (wc != (wint_t) *cp)
   37:         {
   38:           printf ("fgetwc failed: got L'%lc', expected L'%lc'\n",
   39:                   wc, (wint_t) *cp);
   40:           return 1;
   41:         }
   42:       off_t o = ftello (fp);
   43:       if (o != cnt)
   44:         {
   45:           printf ("ftello failed: got %lu, expected %u\n",
   46:                   (unsigned long int) o, cnt);
   47:           return 1;
   48:         }
   49:       printf ("round %u OK\n", cnt);
   50:     }
   51: 
   52:   fclose (fp);
   53: 
   54:   return 0;
   55: }
   56: 
   57: #define TEST_FUNCTION do_test ()
   58: #include "../test-skeleton.c"
Syntax (Markdown)