xref: /openbsd-src/lib/libc/locale/nl_langinfo.c (revision 3a628b46e7aaa520a6215eccabf31d313c2e7de0)
1*3a628b46Sschwarze /*	$OpenBSD: nl_langinfo.c,v 1.9 2017/09/05 03:16:13 schwarze Exp $ */
2df930be7Sderaadt /*
3df930be7Sderaadt  * Written by J.T. Conklin <jtc@netbsd.org>.
4df930be7Sderaadt  * Public domain.
5df930be7Sderaadt  */
6df930be7Sderaadt 
7df930be7Sderaadt #include <locale.h>
8df930be7Sderaadt #include <nl_types.h>
9df930be7Sderaadt #include <langinfo.h>
10558b4987Sguenther 
11558b4987Sguenther #include "localedef.h"
123ec4269fSespie #include "rune.h"
133ec4269fSespie #include "runetype.h"
14df930be7Sderaadt 
15df930be7Sderaadt char *
nl_langinfo(nl_item item)16cf20c6bbSotto nl_langinfo(nl_item item)
17df930be7Sderaadt {
18df930be7Sderaadt 	const char *s;
19df930be7Sderaadt 
20df930be7Sderaadt 	switch (item) {
21df930be7Sderaadt 	case D_T_FMT:
22df930be7Sderaadt 		s = _CurrentTimeLocale->d_t_fmt;
23df930be7Sderaadt 		break;
24df930be7Sderaadt 	case D_FMT:
25df930be7Sderaadt 		s = _CurrentTimeLocale->d_fmt;
26df930be7Sderaadt 		break;
27df930be7Sderaadt 	case T_FMT:
28df930be7Sderaadt 		s = _CurrentTimeLocale->t_fmt;
29df930be7Sderaadt 		break;
30df930be7Sderaadt 	case T_FMT_AMPM:
31df930be7Sderaadt 		s = _CurrentTimeLocale->t_fmt_ampm;
32df930be7Sderaadt 		break;
33df930be7Sderaadt 	case AM_STR:
34df930be7Sderaadt 	case PM_STR:
35df930be7Sderaadt 		s = _CurrentTimeLocale->am_pm[item - AM_STR];
36df930be7Sderaadt 		break;
37df930be7Sderaadt 	case DAY_1:
38df930be7Sderaadt 	case DAY_2:
39df930be7Sderaadt 	case DAY_3:
40df930be7Sderaadt 	case DAY_4:
41df930be7Sderaadt 	case DAY_5:
42df930be7Sderaadt 	case DAY_6:
43df930be7Sderaadt 	case DAY_7:
44df930be7Sderaadt 		s = _CurrentTimeLocale->day[item - DAY_1];
45df930be7Sderaadt 		break;
46df930be7Sderaadt 	case ABDAY_1:
47df930be7Sderaadt 	case ABDAY_2:
48df930be7Sderaadt 	case ABDAY_3:
49df930be7Sderaadt 	case ABDAY_4:
50df930be7Sderaadt 	case ABDAY_5:
51df930be7Sderaadt 	case ABDAY_6:
52df930be7Sderaadt 	case ABDAY_7:
53df930be7Sderaadt 		s = _CurrentTimeLocale->abday[item - ABDAY_1];
54df930be7Sderaadt 		break;
55df930be7Sderaadt 	case MON_1:
56df930be7Sderaadt 	case MON_2:
57df930be7Sderaadt 	case MON_3:
58df930be7Sderaadt 	case MON_4:
59df930be7Sderaadt 	case MON_5:
60df930be7Sderaadt 	case MON_6:
61df930be7Sderaadt 	case MON_7:
62df930be7Sderaadt 	case MON_8:
63df930be7Sderaadt 	case MON_9:
64df930be7Sderaadt 	case MON_10:
65df930be7Sderaadt 	case MON_11:
66df930be7Sderaadt 	case MON_12:
67df930be7Sderaadt 		s = _CurrentTimeLocale->mon[item - MON_1];
68df930be7Sderaadt 		break;
69df930be7Sderaadt 	case ABMON_1:
70df930be7Sderaadt 	case ABMON_2:
71df930be7Sderaadt 	case ABMON_3:
72df930be7Sderaadt 	case ABMON_4:
73df930be7Sderaadt 	case ABMON_5:
74df930be7Sderaadt 	case ABMON_6:
75df930be7Sderaadt 	case ABMON_7:
76df930be7Sderaadt 	case ABMON_8:
77df930be7Sderaadt 	case ABMON_9:
78df930be7Sderaadt 	case ABMON_10:
79df930be7Sderaadt 	case ABMON_11:
80df930be7Sderaadt 	case ABMON_12:
81df930be7Sderaadt 		s = _CurrentTimeLocale->abmon[item - ABMON_1];
82df930be7Sderaadt 		break;
83df930be7Sderaadt 	case RADIXCHAR:
84df930be7Sderaadt 		s = _CurrentNumericLocale->decimal_point;
85df930be7Sderaadt 		break;
86df930be7Sderaadt 	case THOUSEP:
87df930be7Sderaadt 		s = _CurrentNumericLocale->thousands_sep;
88df930be7Sderaadt 		break;
89df930be7Sderaadt 	case YESSTR:
90df930be7Sderaadt 		s = _CurrentMessagesLocale->yesstr;
91df930be7Sderaadt 		break;
92df930be7Sderaadt 	case YESEXPR:
93df930be7Sderaadt 		s = _CurrentMessagesLocale->yesexpr;
94df930be7Sderaadt 		break;
95df930be7Sderaadt 	case NOSTR:
96df930be7Sderaadt 		s = _CurrentMessagesLocale->nostr;
97df930be7Sderaadt 		break;
98df930be7Sderaadt 	case NOEXPR:
99df930be7Sderaadt 		s = _CurrentMessagesLocale->noexpr;
100df930be7Sderaadt 		break;
101df930be7Sderaadt 	case CRNCYSTR:				/* XXX */
102df930be7Sderaadt 		s = "";
103df930be7Sderaadt 		break;
1043ec4269fSespie 	case CODESET:
105*3a628b46Sschwarze 		s = _CurrentRuneLocale()->rl_codeset;
1063ec4269fSespie 		if (!s)
1073ec4269fSespie 			s = "";
1083ec4269fSespie 		break;
109df930be7Sderaadt 	default:
110df930be7Sderaadt 		s = "";
111df930be7Sderaadt 		break;
112df930be7Sderaadt 	}
113df930be7Sderaadt 
114df930be7Sderaadt 	return (char *) s;
115df930be7Sderaadt }
11625d6a9e8Sguenther DEF_WEAK(nl_langinfo);
117