summaryrefslogtreecommitdiff
path: root/test/locale/tst_nl_langinfo.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/locale/tst_nl_langinfo.c')
-rw-r--r--test/locale/tst_nl_langinfo.c296
1 files changed, 296 insertions, 0 deletions
diff --git a/test/locale/tst_nl_langinfo.c b/test/locale/tst_nl_langinfo.c
new file mode 100644
index 0000000..fcf2fe2
--- /dev/null
+++ b/test/locale/tst_nl_langinfo.c
@@ -0,0 +1,296 @@
+#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;
+}