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

glibc/2.7/iconv/tst-iconv2.c

    1: /* Copyright (C) 2001 Free Software Foundation, Inc.
    2:    This file is part of the GNU C Library.
    3:    Contributed by Ulrich Drepper <drepper@cygnus.com>, 2001.
    4: 
    5:    The GNU C Library is free software; you can redistribute it and/or
    6:    modify it under the terms of the GNU Lesser General Public
    7:    License as published by the Free Software Foundation; either
    8:    version 2.1 of the License, or (at your option) any later version.
    9: 
   10:    The GNU C Library is distributed in the hope that it will be useful,
   11:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   12:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   13:    Lesser General Public License for more details.
   14: 
   15:    You should have received a copy of the GNU Lesser General Public
   16:    License along with the GNU C Library; if not, write to the Free
   17:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   18:    02111-1307 USA.  */
   19: 
   20: #include <errno.h>
   21: #include <iconv.h>
   22: #include <mcheck.h>
   23: #include <stddef.h>
   24: #include <stdio.h>
   25: #include <stdlib.h>
   26: #include <string.h>
   27: 
   28: 
   29: int
   30: main (void)
   31: {
   32:   char buf[3];
   33:   const wchar_t wc[1] = L"a";
   34:   iconv_t cd;
   35:   char *inptr;
   36:   size_t inlen;
   37:   char *outptr;
   38:   size_t outlen;
   39:   size_t n;
   40:   int e;
   41:   int result = 0;
   42: 
   43:   mtrace ();
   44: 
   45:   cd = iconv_open ("UCS4", "WCHAR_T");
   46:   if (cd == (iconv_t) -1)
   47:     {
   48:       printf ("cannot convert from wchar_t to UCS4: %m\n");
   49:       exit (1);
   50:     }
   51: 
   52:   inptr = (char *) wc;
   53:   inlen = sizeof (wchar_t);
   54:   outptr = buf;
   55:   outlen = 3;
   56: 
   57:   n = iconv (cd, &inptr, &inlen, &outptr, &outlen);
   58:   e = errno;
   59: 
   60:   if (n != (size_t) -1)
   61:     {
   62:       printf ("incorrect iconv() return value: %zd, expected -1\n", n);
   63:       result = 1;
   64:     }
   65: 
   66:   if (e != E2BIG)
   67:     {
   68:       printf ("incorrect error value: %s, expected %s\n",
   69:               strerror (e), strerror (E2BIG));
   70:       result = 1;
   71:     }
   72: 
   73:   if (inptr != (char *) wc)
   74:     {
   75:       puts ("inptr changed");
   76:       result = 1;
   77:     }
   78: 
   79:   if (inlen != sizeof (wchar_t))
   80:     {
   81:       puts ("inlen changed");
   82:       result = 1;
   83:     }
   84: 
   85:   if (outptr != buf)
   86:     {
   87:       puts ("outptr changed");
   88:       result = 1;
   89:     }
   90: 
   91:   if (outlen != 3)
   92:     {
   93:       puts ("outlen changed");
   94:       result = 1;
   95:     }
   96: 
   97:   iconv_close (cd);
   98: 
   99:   return result;
  100: }
Syntax (Markdown)