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