Back to index

glibc  2.9
Functions
tst-wcrtomb.c File Reference
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wchar.h>

Go to the source code of this file.

Functions

static int check_ascii (const char *locname)
int main (void)

Function Documentation

static int check_ascii ( const char *  locname) [static]

Definition at line 52 of file tst-wcrtomb.c.

{
  wchar_t wc;
  int res = 0;

  printf ("Testing locale \"%s\":\n", locname);

  for (wc = 0; wc <= 127; ++wc)
    {
      char buf[2 * MB_CUR_MAX];
      mbstate_t s;
      size_t n;

      memset (buf, '\xff', sizeof (buf));
      memset (&s, '\0', sizeof (s));

      n = wcrtomb (buf, wc, &s);
      if (n == (size_t) -1)
       {
         printf ("%s: '\\x%x': encoding error\n", locname, (int) wc);
         ++res;
       }
      else if (n == 0)
       {
         printf ("%s: '\\x%x': 0 returned\n", locname, (int) wc);
         ++res;
       }
      else if (n != 1)
       {
         printf ("%s: '\\x%x': not 1 returned\n", locname, (int) wc);
         ++res;
       }
      else if (wc != (wchar_t) buf[0])
       {
         printf ("%s: L'\\x%x': buf[0] != '\\x%x'\n", locname, (int) wc,
                (int) wc);
         ++res;
       }
    }

  printf (res == 1 ? "%d error\n" : "%d errors\n", res);

  return res != 0;
}

Here is the call graph for this function:

Here is the caller graph for this function:

int main ( void  )

Definition at line 31 of file tst-wcrtomb.c.

{
  int result = 0;

  /* Check mapping of ASCII range for some character sets which have
     ASCII as a subset.  For those the wide char generated must have
     the same value.  */
  setlocale (LC_ALL, "C");
  result |= check_ascii (setlocale (LC_ALL, NULL));

  setlocale (LC_ALL, "de_DE.UTF-8");
  result |= check_ascii (setlocale (LC_ALL, NULL));

  setlocale (LC_ALL, "ja_JP.EUC-JP");
  result |= check_ascii (setlocale (LC_ALL, NULL));

  return result;
}

Here is the call graph for this function: