added a top level readme file.
[reactos.git] / rosapps / cmd / locale.c
1 /*
2 * LOCALE.C - locale handling.
3 *
4 *
5 * History:
6 *
7 * 09-Jan-1999 (Eric Kohl <ekohl@abo.rhein-zeitung.de>)
8 * Started.
9 *
10 * 20-Jan-1999 (Eric Kohl <ekohl@abo.rhein-zeitung.de>)
11 * Unicode safe!
12 */
13
14 #include "config.h"
15
16 #include <windows.h>
17 #include <tchar.h>
18 #include <string.h>
19 #include <stdlib.h>
20
21 #include "cmd.h"
22
23
24 TCHAR cDateSeparator;
25 TCHAR cTimeSeparator;
26 TCHAR cThousandSeparator;
27 TCHAR cDecimalSeparator;
28 INT nDateFormat;
29 INT nTimeFormat;
30 TCHAR aszDayNames[7][8];
31 INT nNumberGroups;
32
33
34 VOID InitLocale (VOID)
35 {
36 #ifdef LOCALE_WINDOWS
37 TCHAR szBuffer[256];
38 INT i;
39
40 /* date settings */
41 GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SDATE, szBuffer, 256);
42 CharToOem (szBuffer, szBuffer);
43 cDateSeparator = szBuffer[0];
44 GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_IDATE, szBuffer, 256);
45 nDateFormat = _ttoi (szBuffer);
46
47 /* time settings */
48 GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_STIME, szBuffer, 256);
49 CharToOem (szBuffer, szBuffer);
50 cTimeSeparator = szBuffer[0];
51 GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_ITIME, szBuffer, 256);
52 nTimeFormat = _ttoi (szBuffer);
53
54 /* number settings */
55 GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_STHOUSAND, szBuffer, 256);
56 CharToOem (szBuffer, szBuffer);
57 cThousandSeparator = szBuffer[0];
58 GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, szBuffer, 256);
59 CharToOem (szBuffer, szBuffer);
60 cDecimalSeparator = szBuffer[0];
61 GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SGROUPING, szBuffer, 256);
62 nNumberGroups = _ttoi (szBuffer);
63
64 /* days of week */
65 for (i = 0; i < 7; i++)
66 {
67 GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SABBREVDAYNAME1 + i, szBuffer, 256);
68 CharToOem (szBuffer, szBuffer);
69 _tcscpy (aszDayNames[(i+1)%7], szBuffer); /* little hack */
70 }
71 #endif
72
73 #ifdef LOCALE_GERMAN
74 LPTSTR names [7] = {_T("So"), _T("Mo"), _T("Di"), _T("Mi"), _T("Do"), _T("Fr"), _T("Sa")};
75 INT i;
76
77 /* date settings */
78 cDateSeparator = '.';
79 nDateFormat = 1; /* ddmmyy */
80
81 /* time settings */
82 cTimeSeparator = ':';
83 nTimeFormat = 1; /* 24 hour */
84
85 /* number settings */
86 cThousandSeparator = '.';
87 cDecimalSeparator = ',';
88 nNumberGroups = 3;
89
90 /* days of week */
91 for (i = 0; i < 7; i++)
92 _tcscpy (aszDayNames[i], names[i]);
93 #endif
94
95 #ifdef LOCALE_DEFAULT
96 LPTSTR names [7] = {_T("Son"), _T("Mon"), _T("Tue"), _T("Wed"), _T("Thu"), _T("Fri"), _T("Sat")};
97 INT i;
98
99 /* date settings */
100 cDateSeparator = '-';
101 nDateFormat = 0; /* mmddyy */
102
103 /* time settings */
104 cTimeSeparator = ':';
105 nTimeFormat = 0; /* 12 hour */
106
107 /* number settings */
108 cThousandSeparator = ',';
109 cDecimalSeparator = '.';
110 nNumberGroups = 3;
111
112 /* days of week */
113 for (i = 0; i < 7; i++)
114 _tcscpy (aszDayNames[i], names[i]);
115 #endif
116 }