1 /* $NetBSD: nl_langinfo.c,v 1.6 1998/11/13 15:49:04 christos 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.6 1998/11/13 15:49:04 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 18 char * 19 nl_langinfo(item) 20 nl_item item; 21 { 22 const char *s; 23 24 switch (item) { 25 case D_T_FMT: 26 s = _CurrentTimeLocale->d_t_fmt; 27 break; 28 case D_FMT: 29 s = _CurrentTimeLocale->d_fmt; 30 break; 31 case T_FMT: 32 s = _CurrentTimeLocale->t_fmt; 33 break; 34 case T_FMT_AMPM: 35 s = _CurrentTimeLocale->t_fmt_ampm; 36 break; 37 case AM_STR: 38 case PM_STR: 39 s = _CurrentTimeLocale->am_pm[(size_t)(item - AM_STR)]; 40 break; 41 case DAY_1: 42 case DAY_2: 43 case DAY_3: 44 case DAY_4: 45 case DAY_5: 46 case DAY_6: 47 case DAY_7: 48 s = _CurrentTimeLocale->day[(size_t)(item - DAY_1)]; 49 break; 50 case ABDAY_1: 51 case ABDAY_2: 52 case ABDAY_3: 53 case ABDAY_4: 54 case ABDAY_5: 55 case ABDAY_6: 56 case ABDAY_7: 57 s = _CurrentTimeLocale->abday[(size_t)(item - ABDAY_1)]; 58 break; 59 case MON_1: 60 case MON_2: 61 case MON_3: 62 case MON_4: 63 case MON_5: 64 case MON_6: 65 case MON_7: 66 case MON_8: 67 case MON_9: 68 case MON_10: 69 case MON_11: 70 case MON_12: 71 s = _CurrentTimeLocale->mon[(size_t)(item - MON_1)]; 72 break; 73 case ABMON_1: 74 case ABMON_2: 75 case ABMON_3: 76 case ABMON_4: 77 case ABMON_5: 78 case ABMON_6: 79 case ABMON_7: 80 case ABMON_8: 81 case ABMON_9: 82 case ABMON_10: 83 case ABMON_11: 84 case ABMON_12: 85 s = _CurrentTimeLocale->abmon[(size_t)(item - ABMON_1)]; 86 break; 87 case RADIXCHAR: 88 s = _CurrentNumericLocale->decimal_point; 89 break; 90 case THOUSEP: 91 s = _CurrentNumericLocale->thousands_sep; 92 break; 93 case YESSTR: 94 s = _CurrentMessagesLocale->yesstr; 95 break; 96 case YESEXPR: 97 s = _CurrentMessagesLocale->yesexpr; 98 break; 99 case NOSTR: 100 s = _CurrentMessagesLocale->nostr; 101 break; 102 case NOEXPR: 103 s = _CurrentMessagesLocale->noexpr; 104 break; 105 case CRNCYSTR: /* XXX */ 106 s = ""; 107 break; 108 default: 109 s = ""; 110 break; 111 } 112 113 /* The return value should be really const, but the interface says OW */ 114 /* LINTED const castaway. */ 115 return (char *) s; 116 } 117