123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296 |
- #include <locale.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <langinfo.h>
- #include <nl_types.h>
- #if !defined(__UCLIBC__) && 0
- #define DO_EXTRA
- #endif
- int main(int argc, char **argv)
- {
- char *l;
- const unsigned char *x;
- /* const unsigned char *y; */
- const unsigned char *p;
- if (argc > 2) {
- printf("invalid args\n");
- return EXIT_FAILURE;
- }
- if (argc == 1) {
- l = "";
- } else {
- l = *++argv;
- }
- if (!(x = setlocale(LC_ALL,l))) {
- printf("couldn't set locale %s\n", l);
- return EXIT_FAILURE;
- }
- /* printf("\nsetlocale returned:\n "); */
- /* do { */
- /* printf("\\x%02x", *x); */
- /* } while (*x++); */
- /* printf("\n"); */
- #ifndef __BCC__
- #define STR(X) #X
- #else
- #define STR(X) __STR(X)
- #endif
- #define __PASTE2(A,B) A.B
- #define DO_NL_I(X) \
- printf( STR(X) " = %d\n", (int) nl_langinfo(X) );
- #define DO_NL_S(X) \
- printf( STR(X) " = \"%s\"\n", nl_langinfo(X) );
- #define DO_NL_C(X) \
- printf( STR(X) " = \"\\x%02x\"\n", *((unsigned char *) nl_langinfo(X)) );
- printf("ctype\n");
- DO_NL_S(CODESET);
- #ifdef DO_EXTRA
- DO_NL_I(_NL_CTYPE_INDIGITS_MB_LEN);
- DO_NL_S(_NL_CTYPE_INDIGITS0_MB);
- DO_NL_S(_NL_CTYPE_INDIGITS1_MB);
- DO_NL_S(_NL_CTYPE_INDIGITS2_MB);
- DO_NL_S(_NL_CTYPE_INDIGITS3_MB);
- DO_NL_S(_NL_CTYPE_INDIGITS4_MB);
- DO_NL_S(_NL_CTYPE_INDIGITS5_MB);
- DO_NL_S(_NL_CTYPE_INDIGITS6_MB);
- DO_NL_S(_NL_CTYPE_INDIGITS7_MB);
- DO_NL_S(_NL_CTYPE_INDIGITS8_MB);
- DO_NL_S(_NL_CTYPE_INDIGITS9_MB);
- #endif
- DO_NL_S(_NL_CTYPE_OUTDIGIT0_MB);
- DO_NL_S(_NL_CTYPE_OUTDIGIT1_MB);
- DO_NL_S(_NL_CTYPE_OUTDIGIT2_MB);
- DO_NL_S(_NL_CTYPE_OUTDIGIT3_MB);
- DO_NL_S(_NL_CTYPE_OUTDIGIT4_MB);
- DO_NL_S(_NL_CTYPE_OUTDIGIT5_MB);
- DO_NL_S(_NL_CTYPE_OUTDIGIT6_MB);
- DO_NL_S(_NL_CTYPE_OUTDIGIT7_MB);
- DO_NL_S(_NL_CTYPE_OUTDIGIT8_MB);
- DO_NL_S(_NL_CTYPE_OUTDIGIT9_MB);
- printf("numeric\n");
- DO_NL_S(RADIXCHAR); /* DECIMAL_POINT */
- DO_NL_S(THOUSEP); /* THOUSANDS_SEP */
- /* DO_NL_S(GROUPING); */
- printf("GROUPING = \"");
- for (p = (unsigned char *) nl_langinfo(GROUPING) ; *p ; p++) {
- printf("\\x%02x", *p);
- }
- printf("\"\n\n");
- printf("monetary\n");
- DO_NL_S(INT_CURR_SYMBOL);
- DO_NL_S(CURRENCY_SYMBOL);
- DO_NL_S(MON_DECIMAL_POINT);
- DO_NL_S(MON_THOUSANDS_SEP);
- /* DO_NL_S(MON_GROUPING); */
- printf("MON_GROUPING = \"");
- for (p = (unsigned char *) nl_langinfo(MON_GROUPING) ; *p ; p++) {
- printf("\\x%02x", *p);
- }
- printf("\"\n\n");
- DO_NL_S(POSITIVE_SIGN);
- DO_NL_S(NEGATIVE_SIGN);
- DO_NL_C(INT_FRAC_DIGITS);
- DO_NL_C(FRAC_DIGITS);
- DO_NL_C(P_CS_PRECEDES);
- DO_NL_C(P_SEP_BY_SPACE);
- DO_NL_C(N_CS_PRECEDES);
- DO_NL_C(N_SEP_BY_SPACE);
- DO_NL_C(P_SIGN_POSN);
- DO_NL_C(N_SIGN_POSN);
- DO_NL_C(INT_P_CS_PRECEDES);
- DO_NL_C(INT_P_SEP_BY_SPACE);
- DO_NL_C(INT_N_CS_PRECEDES);
- DO_NL_C(INT_N_SEP_BY_SPACE);
- DO_NL_C(INT_P_SIGN_POSN);
- DO_NL_C(INT_N_SIGN_POSN);
- DO_NL_S(CRNCYSTR); /* CURRENCY_SYMBOL */
- printf("time\n");
- DO_NL_S(ABDAY_1);
- DO_NL_S(ABDAY_2);
- DO_NL_S(ABDAY_3);
- DO_NL_S(ABDAY_4);
- DO_NL_S(ABDAY_5);
- DO_NL_S(ABDAY_6);
- DO_NL_S(ABDAY_7);
- DO_NL_S(DAY_1);
- DO_NL_S(DAY_2);
- DO_NL_S(DAY_3);
- DO_NL_S(DAY_4);
- DO_NL_S(DAY_5);
- DO_NL_S(DAY_6);
- DO_NL_S(DAY_7);
- DO_NL_S(ABMON_1);
- DO_NL_S(ABMON_2);
- DO_NL_S(ABMON_3);
- DO_NL_S(ABMON_4);
- DO_NL_S(ABMON_5);
- DO_NL_S(ABMON_6);
- DO_NL_S(ABMON_7);
- DO_NL_S(ABMON_8);
- DO_NL_S(ABMON_9);
- DO_NL_S(ABMON_10);
- DO_NL_S(ABMON_11);
- DO_NL_S(ABMON_12);
- DO_NL_S(MON_1);
- DO_NL_S(MON_2);
- DO_NL_S(MON_3);
- DO_NL_S(MON_4);
- DO_NL_S(MON_5);
- DO_NL_S(MON_6);
- DO_NL_S(MON_7);
- DO_NL_S(MON_8);
- DO_NL_S(MON_9);
- DO_NL_S(MON_10);
- DO_NL_S(MON_11);
- DO_NL_S(MON_12);
- DO_NL_S(AM_STR);
- DO_NL_S(PM_STR);
- DO_NL_S(D_T_FMT);
- DO_NL_S(D_FMT);
- DO_NL_S(T_FMT);
- DO_NL_S(T_FMT_AMPM);
- /* DO_NL_S(ERA); */
- {
- const char *p = nl_langinfo(ERA);
- if (!p || !*p) {
- printf("ERA = (none)\n");
- } else {
- int i;
- printf("ERA:\n");
- for (i=0 ; i < 100 ; i++) {
- printf(" %3d: \"%s\"\n", i, p);
- while (*p) ++p;
- ++p;
- if (!*p) break;
- }
- }
- }
- DO_NL_S(ERA_YEAR); /* non SuSv3 */
- DO_NL_S(ERA_D_FMT);
- /* DO_NL_S(ALT_DIGITS); */
- {
- const char *p = nl_langinfo(ALT_DIGITS);
- if (!p || !*p) {
- printf("ALT_DIGITS = (none)\n");
- } else {
- int i;
- printf("ALT_DIGITS:\n");
- for (i=0 ; i < 100 ; i++) {
- printf(" %3d: \"%s\"\n", i, p);
- while (*p) ++p;
- ++p;
- }
- }
- }
- DO_NL_S(ERA_D_T_FMT);
- DO_NL_S(ERA_T_FMT);
- #ifdef DO_EXTRA
- DO_NL_C(_NL_TIME_WEEK_NDAYS);
- DO_NL_I(_NL_TIME_WEEK_1STDAY); /* grr... this won't work with 16bit ptrs */
- DO_NL_C(_NL_TIME_WEEK_1STWEEK);
- DO_NL_C(_NL_TIME_FIRST_WEEKDAY);
- DO_NL_C(_NL_TIME_FIRST_WORKDAY);
- DO_NL_C(_NL_TIME_CAL_DIRECTION);
- DO_NL_S(_NL_TIME_TIMEZONE);
- DO_NL_S(_DATE_FMT);
- #endif
- printf("messages\n");
- DO_NL_S(YESEXPR);
- DO_NL_S(NOEXPR);
- DO_NL_S(YESSTR);
- DO_NL_S(NOSTR);
- #ifdef DO_EXTRA
- printf("paper\n");
- DO_NL_I(_NL_PAPER_HEIGHT);
- DO_NL_I(_NL_PAPER_WIDTH);
- printf("name\n");
- DO_NL_S(_NL_NAME_NAME_FMT);
- DO_NL_S(_NL_NAME_NAME_GEN);
- DO_NL_S(_NL_NAME_NAME_MR);
- DO_NL_S(_NL_NAME_NAME_MRS);
- DO_NL_S(_NL_NAME_NAME_MISS);
- DO_NL_S(_NL_NAME_NAME_MS);
- printf("address\n");
- DO_NL_S(_NL_ADDRESS_POSTAL_FMT);
- DO_NL_S(_NL_ADDRESS_COUNTRY_NAME);
- DO_NL_S(_NL_ADDRESS_COUNTRY_POST);
- DO_NL_S(_NL_ADDRESS_COUNTRY_AB2);
- DO_NL_S(_NL_ADDRESS_COUNTRY_AB3);
- DO_NL_S(_NL_ADDRESS_COUNTRY_CAR);
- DO_NL_I(_NL_ADDRESS_COUNTRY_NUM);
- DO_NL_S(_NL_ADDRESS_COUNTRY_ISBN);
- DO_NL_S(_NL_ADDRESS_LANG_NAME);
- DO_NL_S(_NL_ADDRESS_LANG_AB);
- DO_NL_S(_NL_ADDRESS_LANG_TERM);
- DO_NL_S(_NL_ADDRESS_LANG_LIB);
- printf("telephone\n");
- DO_NL_S(_NL_TELEPHONE_TEL_INT_FMT);
- DO_NL_S(_NL_TELEPHONE_TEL_DOM_FMT);
- DO_NL_S(_NL_TELEPHONE_INT_SELECT);
- DO_NL_S(_NL_TELEPHONE_INT_PREFIX);
- printf("measurement\n");
- DO_NL_C(_NL_MEASUREMENT_MEASUREMENT); /* 1 is metric, 2 is US */
- printf("identification\n");
- DO_NL_S(_NL_IDENTIFICATION_TITLE);
- DO_NL_S(_NL_IDENTIFICATION_SOURCE);
- DO_NL_S(_NL_IDENTIFICATION_ADDRESS);
- DO_NL_S(_NL_IDENTIFICATION_CONTACT);
- DO_NL_S(_NL_IDENTIFICATION_EMAIL);
- DO_NL_S(_NL_IDENTIFICATION_TEL);
- DO_NL_S(_NL_IDENTIFICATION_FAX);
- DO_NL_S(_NL_IDENTIFICATION_LANGUAGE);
- DO_NL_S(_NL_IDENTIFICATION_TERRITORY);
- DO_NL_S(_NL_IDENTIFICATION_AUDIENCE);
- DO_NL_S(_NL_IDENTIFICATION_APPLICATION);
- DO_NL_S(_NL_IDENTIFICATION_ABBREVIATION);
- DO_NL_S(_NL_IDENTIFICATION_REVISION);
- DO_NL_S(_NL_IDENTIFICATION_DATE);
- DO_NL_S(_NL_IDENTIFICATION_CATEGORY);
- #endif
- return EXIT_SUCCESS;
- }
|