Home | History | Annotate | Line # | Download | only in locale
nl_langinfo.c revision 1.11
      1 /*	$NetBSD: nl_langinfo.c,v 1.11 2005/11/29 03:11:59 christos Exp $	*/
      2 
      3 /*
      4  * Written by J.T. Conklin <jtc (at) NetBSD.org>.
      5  * Public domain.
      6  */
      7 
      8 #include <sys/cdefs.h>
      9 #if defined(LIBC_SCCS) && !defined(lint)
     10 __RCSID("$NetBSD: nl_langinfo.c,v 1.11 2005/11/29 03:11:59 christos Exp $");
     11 #endif /* LIBC_SCCS and not lint */
     12 
     13 #include <sys/localedef.h>
     14 #include <locale.h>
     15 #include <nl_types.h>
     16 #include <langinfo.h>
     17 #include "rune.h"
     18 #include "runetype.h"
     19 
     20 char *
     21 nl_langinfo(item)
     22 	nl_item item;
     23 {
     24 	const char *s;
     25 
     26 	switch (item) {
     27 	case D_T_FMT:
     28 		s = _CurrentTimeLocale->d_t_fmt;
     29 		break;
     30 	case D_FMT:
     31 		s = _CurrentTimeLocale->d_fmt;
     32 		break;
     33 	case T_FMT:
     34 		s = _CurrentTimeLocale->t_fmt;
     35 		break;
     36 	case T_FMT_AMPM:
     37 		s = _CurrentTimeLocale->t_fmt_ampm;
     38 		break;
     39 	case AM_STR:
     40 	case PM_STR:
     41 		s = _CurrentTimeLocale->am_pm[(size_t)(item - AM_STR)];
     42 		break;
     43 	case DAY_1:
     44 	case DAY_2:
     45 	case DAY_3:
     46 	case DAY_4:
     47 	case DAY_5:
     48 	case DAY_6:
     49 	case DAY_7:
     50 		s = _CurrentTimeLocale->day[(size_t)(item - DAY_1)];
     51 		break;
     52 	case ABDAY_1:
     53 	case ABDAY_2:
     54 	case ABDAY_3:
     55 	case ABDAY_4:
     56 	case ABDAY_5:
     57 	case ABDAY_6:
     58 	case ABDAY_7:
     59 		s = _CurrentTimeLocale->abday[(size_t)(item - ABDAY_1)];
     60 		break;
     61 	case MON_1:
     62 	case MON_2:
     63 	case MON_3:
     64 	case MON_4:
     65 	case MON_5:
     66 	case MON_6:
     67 	case MON_7:
     68 	case MON_8:
     69 	case MON_9:
     70 	case MON_10:
     71 	case MON_11:
     72 	case MON_12:
     73 		s = _CurrentTimeLocale->mon[(size_t)(item - MON_1)];
     74 		break;
     75 	case ABMON_1:
     76 	case ABMON_2:
     77 	case ABMON_3:
     78 	case ABMON_4:
     79 	case ABMON_5:
     80 	case ABMON_6:
     81 	case ABMON_7:
     82 	case ABMON_8:
     83 	case ABMON_9:
     84 	case ABMON_10:
     85 	case ABMON_11:
     86 	case ABMON_12:
     87 		s = _CurrentTimeLocale->abmon[(size_t)(item - ABMON_1)];
     88 		break;
     89 	case RADIXCHAR:
     90 		s = _CurrentNumericLocale->decimal_point;
     91 		break;
     92 	case THOUSEP:
     93 		s = _CurrentNumericLocale->thousands_sep;
     94 		break;
     95 	case YESSTR:
     96 		s = _CurrentMessagesLocale->yesstr;
     97 		break;
     98 	case YESEXPR:
     99 		s = _CurrentMessagesLocale->yesexpr;
    100 		break;
    101 	case NOSTR:
    102 		s = _CurrentMessagesLocale->nostr;
    103 		break;
    104 	case NOEXPR:
    105 		s = _CurrentMessagesLocale->noexpr;
    106 		break;
    107 	case CRNCYSTR:				/* XXX */
    108 		s = "";
    109 		break;
    110 	case CODESET:
    111 #ifdef WITH_RUNE
    112 		s = _CurrentRuneLocale->rl_codeset;
    113 #else
    114 		s = NULL;
    115 #endif
    116 		if (!s)
    117 			s = "";
    118 		break;
    119 	default:
    120 		s = "";
    121 		break;
    122 	}
    123 
    124 	/* The return value should be really const, but the interface says OW */
    125 	return __UNCONST(s);
    126 }
    127