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