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