xref: /netbsd-src/lib/libc/locale/nl_langinfo.c (revision 3cec974c61d7fac0a37c0377723a33214a458c8b)
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