| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | #include <stdio.h>#include <time.h>#include <features.h>#include <wchar.h>#include <locale.h>#define NUM_OF_DATES 7#define NUM_OF_LOCALES 3#define BUF_SIZE 256intmain (void){  wchar_t buf[BUF_SIZE];  struct tm *tp;  time_t time_list[NUM_OF_DATES] = {	  500, 68200000, 694223999,	  694224000, 704900000, 705000000,	  705900000  };  char *locale_list[NUM_OF_LOCALES] = {	  "C",	  "fr_FR.ISO-8859-1",	  "ja_JP.UTF-8"  };  int result = 0, ddd, lll;  size_t n;  for (lll = 0; lll < NUM_OF_LOCALES; lll++) {	  printf ("\nUsing locale: %s\n", locale_list[lll]);	  char* set = setlocale(LC_ALL, locale_list[lll]);	  if (set == NULL) {		  printf ("FAILED!\n\n");		  continue;	  } else		  printf ("\n");	  for (ddd = 0; ddd < NUM_OF_DATES; ddd++) {		  tp = localtime(&time_list[ddd]);		  printf ("%ld corresponds to ", time_list[ddd]);		  n = wcsftime (buf, sizeof (buf) / sizeof (buf[0]),				L"%H:%M:%S  %Y-%m-%d%n", tp);		  if (n != 21) {			result = 1;			printf ("FAILED!\n");		  }		  printf ("%ls", buf);		  wcsftime (buf, sizeof (buf) / sizeof (buf[0]),			L"%tor, as %%D %%T: %D %T%n", tp);		  printf ("%ls", buf);		  wcsftime (buf, sizeof (buf) / sizeof (buf[0]), L"%A (%a)%n", tp);		  printf ("The weekday was %ls", buf);		  wcsftime (buf, sizeof (buf) / sizeof (buf[0]), L"%B (%b) %Y%n", tp);		  /* glibc bug? forgets aigu from french february février		   * See s/printf (/wprintf (L/g */		  //wprintf (L"Month was %ls", buf);		  printf ("Month was %ls", buf);	  }  }  return result;}
 |