1 /* $NetBSD: nl_langinfo.c,v 1.8 2002/03/17 22:14:30 tshiozak Exp $ */ 2 3 /* 4 * Written by J.T. Conklin <jtc@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.8 2002/03/17 22:14:30 tshiozak 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 s = _CurrentRuneLocale->rl_codeset; 112 if (!s) 113 s = ""; 114 break; 115 default: 116 s = ""; 117 break; 118 } 119 120 /* The return value should be really const, but the interface says OW */ 121 /* LINTED const castaway. */ 122 return (char *) s; 123 } 124