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

glibc/2.7/localedata/tst-mbswcs6.c

    1: /* Test for invalid input to wcrtomb.
    2:    Copyright (C) 2001 Free Software Foundation, Inc.
    3:    This file is part of the GNU C Library.
    4:    Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
    5: 
    6:    The GNU C Library is free software; you can redistribute it and/or
    7:    modify it under the terms of the GNU Lesser General Public
    8:    License as published by the Free Software Foundation; either
    9:    version 2.1 of the License, or (at your option) any later version.
   10: 
   11:    The GNU C Library is distributed in the hope that it will be useful,
   12:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   13:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   14:    Lesser General Public License for more details.
   15: 
   16:    You should have received a copy of the GNU Lesser General Public
   17:    License along with the GNU C Library; if not, write to the Free
   18:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   19:    02111-1307 USA.  */
   20: 
   21: #include <errno.h>
   22: #include <locale.h>
   23: #include <stdio.h>
   24: #include <string.h>
   25: #include <wchar.h>
   26: 
   27: 
   28: static int
   29: do_test (const char *loc)
   30: {
   31:   char buf[100];
   32:   size_t n;
   33:   mbstate_t state;
   34:   const char *nloc;
   35:   int res;
   36: 
   37:   nloc = setlocale (LC_ALL, loc);
   38:   if (nloc == NULL)
   39:     {
   40:       printf ("could not set locale \"%s\"\n", loc);
   41:       return 1;
   42:     }
   43:   printf ("new locale: %s\n", nloc);
   44: 
   45:   memset (&state, '\0', sizeof (state));
   46:   errno = 0;
   47:   n = wcrtomb (buf, (wchar_t) -15l, &state);
   48: 
   49:   printf ("n = %zd, errno = %d (%s)\n", n, errno, strerror (errno));
   50: 
   51:   res = n != (size_t) -1 || errno != EILSEQ;
   52:   if (res)
   53:     puts ("*** FAIL");
   54:   putchar ('\n');
   55: 
   56:   return res;
   57: }
   58: 
   59: 
   60: int
   61: main (void)
   62: {
   63:   int res;
   64: 
   65:   res = do_test ("C");
   66:   res |= do_test ("de_DE.ISO-8859-1");
   67:   res |= do_test ("de_DE.UTF-8");
   68:   res |= do_test ("en_US.ANSI_X3.4-1968");
   69:   res |= do_test ("ja_JP.EUC-JP");
   70:   res |= do_test ("hr_HR.ISO-8859-2");
   71:   //res |= do_test ("ru_RU.KOI8-R");
   72: 
   73:   return res;
   74: }
Syntax (Markdown)