Complete Citrus import. Import message catalog implement from
[dragonfly.git] / lib / libc / locale / nl_langinfo.c
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 }