#undef G_DISABLE_ASSERT #undef G_LOG_DOMAIN #ifdef GLIB_COMPILATION #undef GLIB_COMPILATION #endif #include "glib.h" #include #include #include /* These only work in the POSIX locale, maybe C too - * type POSIX into the program to check them */ char* posix_tests [] = { "19981024", "981024", "October 1998", "October 98", "oCT 98", "10/24/98", "10 -- 24 -- 98", "10/24/1998", "October 24, 1998", NULL }; int main(int argc, char** argv) { GDate* d; gchar* loc; gchar input[1024]; loc = setlocale(LC_ALL,""); if (loc) g_print("\nLocale set to %s\n", loc); else g_print("\nLocale unchanged\n"); d = g_date_new(); while (fgets(input, 1023, stdin)) { if (input[0] == '\n') { g_print("Enter a date to parse and press enter, or type 'POSIX':\n"); continue; } if (strcmp(input,"POSIX\n") == 0) { char** s = posix_tests; while (*s) { g_date_set_parse(d, *s); g_print("POSIXy parse test '%s' ...", *s); if (!g_date_valid(d)) { g_print(" failed.\n"); } else { gchar buf[256]; g_date_strftime(buf,100," parsed '%x' (%B %d %Y)\n", d); g_print("%s", buf); } ++s; } } else { g_date_set_parse(d, input); if (!g_date_valid(d)) { g_print("Parse failed.\n"); } else { gchar buf[256]; g_date_strftime(buf,100,"Parsed: '%x' (%B %d %Y)\n", d); g_print("%s", buf); } } } g_date_free(d); return 0; }