Release 960811
[wine] / misc / ole2nls.c
1 /*
2  *      OLE2NLS library
3  *
4  *      Copyright 1995  Martin von Loewis
5  */
6
7 /*      At the moment, these are only empty stubs.
8  */
9
10 #include <string.h>
11 #include "windows.h"
12 #include "ole.h"
13 #include "options.h"
14 #include "winnls.h"
15 #include "stddebug.h"
16 #include "debug.h"
17
18 /***********************************************************************
19  *           GetUserDefaultLCID       (OLE2NLS.1)
20  */
21 DWORD GetUserDefaultLCID()
22 {
23 /* Default sorting, neutral sublanguage */
24     switch(Options.language)
25     {
26     case LANG_En: return 0x09;
27     case LANG_Es: return 0x0a;
28     case LANG_De: return 0x07;
29     case LANG_No: return 0x14;
30     case LANG_Fr: return 0x0c;
31     case LANG_Fi: return 0x0b;
32     case LANG_Da: return 0x06;
33     case LANG_Cz: return 0x05;
34     case LANG_Eo: return 0x25; /* not official */
35     case LANG_It: return 0x10;
36     case LANG_Ko: return 0x12;
37     default:
38         return 0;  /* Neutral language */
39     }
40 }
41
42 /***********************************************************************
43  *         GetSystemDefaultLCID       (OLE2NLS.2)
44  */
45 DWORD GetSystemDefaultLCID()
46 {
47         return GetUserDefaultLCID();
48 }
49
50 /***********************************************************************
51  *         GetUserDefaultLangID       (OLE2NLS.3)
52  */
53 WORD GetUserDefaultLangID()
54 {
55         return (WORD)GetUserDefaultLCID();
56 }
57
58 /***********************************************************************
59  *         GetSystemDefaultLangID     (OLE2NLS.4)
60  */
61 WORD GetSystemDefaultLangID()
62 {
63         return GetUserDefaultLangID();
64 }
65
66 /***********************************************************************
67  *         GetLocaleInfoA             (OLE2NLS.5)
68  * Is the last parameter really WORD for Win16?
69  */
70 int GetLocaleInfoA(DWORD lcid,DWORD LCType,LPSTR buf,WORD len)
71 {
72         char *retString;
73     int retLen;
74     dprintf_ole(stddeb,"GetLocaleInfoA(%8lX,%8lX,%p,%4X)\n",
75                         lcid,LCType,buf,len);
76         /* Wine is supporting only the default locale */
77         if(lcid!=GetUserDefaultLCID())
78         {
79                 dprintf_ole(stdnimp,"GetLocaleInfoA: Unknown locale\n");
80                 return 0;
81         }
82         /* As an option, we could obtain the value from win.ini.
83            This would not match the Wine compile-time option.
84            Also, not all identifiers are available from win.ini */
85         retString=0;
86         retLen=0;
87         /* If we are through all of this, retLen should not be zero anymore.
88            If it is, the value is not supported */
89 #define LOCVAL(type,value)      if(type==LCType)                        \
90                                                                 {retLen=strlen(value)+1;\
91                                                                  retString=value;       \
92                                                                 }
93 #define UNSUPPORTED(type)   if(type==lcid)retString=#type;
94
95 /* I really wish I would know a better way to do this */
96 UNSUPPORTED(LOCALE_ILANGUAGE)
97 UNSUPPORTED(LOCALE_SLANGUAGE)
98 UNSUPPORTED(LOCALE_SENGLANGUAGE)
99 UNSUPPORTED(LOCALE_SABBREVLANGNAME)
100 UNSUPPORTED(LOCALE_SNATIVELANGNAME)
101 UNSUPPORTED(LOCALE_ICOUNTRY)
102 UNSUPPORTED(LOCALE_SCOUNTRY)
103 UNSUPPORTED(LOCALE_SENGCOUNTRY)
104 UNSUPPORTED(LOCALE_SABBREVCTRYNAME)
105 UNSUPPORTED(LOCALE_SNATIVECTRYNAME)
106 UNSUPPORTED(LOCALE_IDEFAULTLANGUAGE)
107 UNSUPPORTED(LOCALE_IDEFAULTCOUNTRY)
108 UNSUPPORTED(LOCALE_IDEFAULTCODEPAGE)
109 UNSUPPORTED(LOCALE_IDEFAULTANSICODEPAGE)
110 UNSUPPORTED(LOCALE_SLIST)
111 UNSUPPORTED(LOCALE_IMEASURE)
112 UNSUPPORTED(LOCALE_SDECIMAL)
113 UNSUPPORTED(LOCALE_STHOUSAND)
114 UNSUPPORTED(LOCALE_SGROUPING)
115 UNSUPPORTED(LOCALE_IDIGITS)
116 UNSUPPORTED(LOCALE_ILZERO)
117 UNSUPPORTED(LOCALE_INEGNUMBER)
118 UNSUPPORTED(LOCALE_SNATIVEDIGITS)
119 UNSUPPORTED(LOCALE_SCURRENCY)
120 UNSUPPORTED(LOCALE_SINTLSYMBOL)
121 UNSUPPORTED(LOCALE_SMONDECIMALSEP)
122 UNSUPPORTED(LOCALE_SMONTHOUSANDSEP)
123 UNSUPPORTED(LOCALE_SMONGROUPING)
124 UNSUPPORTED(LOCALE_ICURRDIGITS)
125 UNSUPPORTED(LOCALE_IINTLCURRDIGITS)
126 UNSUPPORTED(LOCALE_ICURRENCY)
127 UNSUPPORTED(LOCALE_INEGCURR)
128 UNSUPPORTED(LOCALE_SDATE)
129 UNSUPPORTED(LOCALE_STIME)
130 UNSUPPORTED(LOCALE_SSHORTDATE)
131 UNSUPPORTED(LOCALE_SLONGDATE)
132 UNSUPPORTED(LOCALE_STIMEFORMAT)
133 UNSUPPORTED(LOCALE_IDATE)
134 UNSUPPORTED(LOCALE_ILDATE)
135 UNSUPPORTED(LOCALE_ITIME)
136 UNSUPPORTED(LOCALE_ITIMEMARKPOSN)
137 UNSUPPORTED(LOCALE_ICENTURY)
138 UNSUPPORTED(LOCALE_ITLZERO)
139 UNSUPPORTED(LOCALE_IDAYLZERO)
140 UNSUPPORTED(LOCALE_IMONLZERO)
141 UNSUPPORTED(LOCALE_S1159)
142 UNSUPPORTED(LOCALE_S2359)
143 UNSUPPORTED(LOCALE_ICALENDARTYPE)
144 UNSUPPORTED(LOCALE_IOPTIONALCALENDAR)
145 UNSUPPORTED(LOCALE_IFIRSTDAYOFWEEK)
146 UNSUPPORTED(LOCALE_IFIRSTWEEKOFYEAR)
147 UNSUPPORTED(LOCALE_SDAYNAME1)
148 UNSUPPORTED(LOCALE_SDAYNAME2)
149 UNSUPPORTED(LOCALE_SDAYNAME3)
150 UNSUPPORTED(LOCALE_SDAYNAME4)
151 UNSUPPORTED(LOCALE_SDAYNAME5)
152 UNSUPPORTED(LOCALE_SDAYNAME6)
153 UNSUPPORTED(LOCALE_SDAYNAME7)
154 UNSUPPORTED(LOCALE_SABBREVDAYNAME1)
155 UNSUPPORTED(LOCALE_SABBREVDAYNAME2)
156 UNSUPPORTED(LOCALE_SABBREVDAYNAME3)
157 UNSUPPORTED(LOCALE_SABBREVDAYNAME4)
158 UNSUPPORTED(LOCALE_SABBREVDAYNAME5)
159 UNSUPPORTED(LOCALE_SABBREVDAYNAME6)
160 UNSUPPORTED(LOCALE_SABBREVDAYNAME7)
161 UNSUPPORTED(LOCALE_SMONTHNAME1)
162 UNSUPPORTED(LOCALE_SMONTHNAME2)
163 UNSUPPORTED(LOCALE_SMONTHNAME3)
164 UNSUPPORTED(LOCALE_SMONTHNAME4)
165 UNSUPPORTED(LOCALE_SMONTHNAME5)
166 UNSUPPORTED(LOCALE_SMONTHNAME6)
167 UNSUPPORTED(LOCALE_SMONTHNAME7)
168 UNSUPPORTED(LOCALE_SMONTHNAME8)
169 UNSUPPORTED(LOCALE_SMONTHNAME9)
170 UNSUPPORTED(LOCALE_SMONTHNAME10)
171 UNSUPPORTED(LOCALE_SMONTHNAME11)
172 UNSUPPORTED(LOCALE_SMONTHNAME12)
173 UNSUPPORTED(LOCALE_SMONTHNAME13)
174 UNSUPPORTED(LOCALE_SABBREVMONTHNAME1)
175 UNSUPPORTED(LOCALE_SABBREVMONTHNAME2)
176 UNSUPPORTED(LOCALE_SABBREVMONTHNAME3)
177 UNSUPPORTED(LOCALE_SABBREVMONTHNAME4)
178 UNSUPPORTED(LOCALE_SABBREVMONTHNAME5)
179 UNSUPPORTED(LOCALE_SABBREVMONTHNAME6)
180 UNSUPPORTED(LOCALE_SABBREVMONTHNAME7)
181 UNSUPPORTED(LOCALE_SABBREVMONTHNAME8)
182 UNSUPPORTED(LOCALE_SABBREVMONTHNAME9)
183 UNSUPPORTED(LOCALE_SABBREVMONTHNAME10)
184 UNSUPPORTED(LOCALE_SABBREVMONTHNAME11)
185 UNSUPPORTED(LOCALE_SABBREVMONTHNAME12)
186 UNSUPPORTED(LOCALE_SABBREVMONTHNAME13)
187 UNSUPPORTED(LOCALE_SPOSITIVESIGN)
188 UNSUPPORTED(LOCALE_SNEGATIVESIGN)
189 UNSUPPORTED(LOCALE_IPOSSIGNPOSN)
190 UNSUPPORTED(LOCALE_INEGSIGNPOSN)
191 UNSUPPORTED(LOCALE_IPOSSYMPRECEDES)
192 UNSUPPORTED(LOCALE_IPOSSEPBYSPACE)
193 UNSUPPORTED(LOCALE_INEGSYMPRECEDES)
194 UNSUPPORTED(LOCALE_INEGSEPBYSPACE)
195
196 /* Now, the language specific definitions. They don't have to be
197    complete */
198     switch(Options.language)
199     {
200     case LANG_De:
201 /* This definitions apply to Germany only. Users in Austria 
202    or Switzerland might want to modify them */
203 LOCVAL(LOCALE_ILANGUAGE,"9")
204 LOCVAL(LOCALE_SLANGUAGE,"Deutsch")
205 LOCVAL(LOCALE_SENGLANGUAGE,"German")
206 LOCVAL(LOCALE_SABBREVLANGNAME,"deu")
207 LOCVAL(LOCALE_SNATIVELANGNAME,"Deutsch")
208 LOCVAL(LOCALE_ICOUNTRY,"49")
209 LOCVAL(LOCALE_SCOUNTRY,"Deutschland")
210 LOCVAL(LOCALE_SENGCOUNTRY,"Deutschland")
211 LOCVAL(LOCALE_SABBREVCTRYNAME,"De")
212 LOCVAL(LOCALE_SNATIVECTRYNAME,"Deutschland")
213 LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9")
214 LOCVAL(LOCALE_IDEFAULTCOUNTRY,"49")
215 /* Dunno
216 LOCVAL(LOCALE_IDEFAULTCODEPAGE)
217 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE)
218 */
219 LOCVAL(LOCALE_SLIST,";")
220 LOCVAL(LOCALE_IMEASURE,"0")
221 LOCVAL(LOCALE_SDECIMAL,",")
222 LOCVAL(LOCALE_STHOUSAND,".")
223 /*
224 LOCVAL(LOCALE_SGROUPING)
225 */
226 LOCVAL(LOCALE_IDIGITS,"2")
227 LOCVAL(LOCALE_ILZERO,"1")
228 /*
229 LOCVAL(LOCALE_INEGNUMBER)
230 Is this "0123456789" ??
231 LOCVAL(LOCALE_SNATIVEDIGITS)
232 */
233 LOCVAL(LOCALE_SCURRENCY,"DM")
234 /*
235 LOCVAL(LOCALE_SINTLSYMBOL)
236 LOCVAL(LOCALE_SMONDECIMALSEP)
237 LOCVAL(LOCALE_SMONTHOUSANDSEP)
238 LOCVAL(LOCALE_SMONGROUPING)
239 */
240 LOCVAL(LOCALE_ICURRDIGITS,"2")
241 /*
242 LOCVAL(LOCALE_IINTLCURRDIGITS)
243 */
244 LOCVAL(LOCALE_ICURRENCY,"3")
245 LOCVAL(LOCALE_INEGCURR,"8")
246 LOCVAL(LOCALE_SDATE,".")
247 LOCVAL(LOCALE_STIME,":")
248 LOCVAL(LOCALE_SSHORTDATE,"dd.MM.yyyy")
249 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
250 /*
251 LOCVAL(LOCALE_STIMEFORMAT)
252 */
253 LOCVAL(LOCALE_IDATE,"1")
254 /*
255 LOCVAL(LOCALE_ILDATE)
256 */
257 LOCVAL(LOCALE_ITIME,"1")
258 /*
259 LOCVAL(LOCALE_ITIMEMARKPOSN)
260 LOCVAL(LOCALE_ICENTURY)
261 */
262 LOCVAL(LOCALE_ITLZERO,"1")
263 /*
264 LOCVAL(LOCALE_IDAYLZERO)
265 LOCVAL(LOCALE_IMONLZERO)
266 LOCVAL(LOCALE_S1159)
267 LOCVAL(LOCALE_S2359)
268 LOCVAL(LOCALE_ICALENDARTYPE)
269 LOCVAL(LOCALE_IOPTIONALCALENDAR)
270 LOCVAL(LOCALE_IFIRSTDAYOFWEEK)
271 LOCVAL(LOCALE_IFIRSTWEEKOFYEAR)
272 */
273 LOCVAL(LOCALE_SDAYNAME1,"Montag")
274 LOCVAL(LOCALE_SDAYNAME2,"Dienstag")
275 LOCVAL(LOCALE_SDAYNAME3,"Mittwoch")
276 LOCVAL(LOCALE_SDAYNAME4,"Donnerstag")
277 LOCVAL(LOCALE_SDAYNAME5,"Freitag")
278 LOCVAL(LOCALE_SDAYNAME6,"Sonnabend")
279 LOCVAL(LOCALE_SDAYNAME7,"Sonntag")
280 LOCVAL(LOCALE_SABBREVDAYNAME1,"Mo")
281 LOCVAL(LOCALE_SABBREVDAYNAME2,"Di")
282 LOCVAL(LOCALE_SABBREVDAYNAME3,"Mi")
283 LOCVAL(LOCALE_SABBREVDAYNAME4,"Do")
284 LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr")
285 LOCVAL(LOCALE_SABBREVDAYNAME6,"Sa")
286 LOCVAL(LOCALE_SABBREVDAYNAME7,"So")
287 LOCVAL(LOCALE_SMONTHNAME1,"Januar")
288 LOCVAL(LOCALE_SMONTHNAME2,"Februar")
289 LOCVAL(LOCALE_SMONTHNAME3,"März")
290 LOCVAL(LOCALE_SMONTHNAME4,"April")
291 LOCVAL(LOCALE_SMONTHNAME5,"Mai")
292 LOCVAL(LOCALE_SMONTHNAME6,"Juni")
293 LOCVAL(LOCALE_SMONTHNAME7,"Juli")
294 LOCVAL(LOCALE_SMONTHNAME8,"August")
295 LOCVAL(LOCALE_SMONTHNAME9,"September")
296 LOCVAL(LOCALE_SMONTHNAME10,"Oktober")
297 LOCVAL(LOCALE_SMONTHNAME11,"November")
298 LOCVAL(LOCALE_SMONTHNAME12,"Dezember")
299 LOCVAL(LOCALE_SMONTHNAME13,"")
300 LOCVAL(LOCALE_SABBREVMONTHNAME1,"Jan")
301 LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb")
302 LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mär")
303 LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr")
304 LOCVAL(LOCALE_SABBREVMONTHNAME5,"Mai")
305 LOCVAL(LOCALE_SABBREVMONTHNAME6,"Jun")
306 LOCVAL(LOCALE_SABBREVMONTHNAME7,"Jul")
307 LOCVAL(LOCALE_SABBREVMONTHNAME8,"Aug")
308 LOCVAL(LOCALE_SABBREVMONTHNAME9,"Sep")
309 LOCVAL(LOCALE_SABBREVMONTHNAME10,"Okt")
310 LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov")
311 LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dez")
312 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
313 /*
314 LOCVAL(LOCALE_SPOSITIVESIGN)
315 LOCVAL(LOCALE_SNEGATIVESIGN)
316 LOCVAL(LOCALE_IPOSSIGNPOSN)
317 LOCVAL(LOCALE_INEGSIGNPOSN)
318 LOCVAL(LOCALE_IPOSSYMPRECEDES)
319 LOCVAL(LOCALE_IPOSSEPBYSPACE)
320 LOCVAL(LOCALE_INEGSYMPRECEDES)
321 LOCVAL(LOCALE_INEGSEPBYSPACE)
322 */
323     break;  /* LANG(De) */
324
325     case LANG_Da:
326 /* LOCVAL(LOCALE_ILANGUAGE,"9") */
327 LOCVAL(LOCALE_SLANGUAGE,"Dansk")
328 LOCVAL(LOCALE_SENGLANGUAGE,"Danish")
329 LOCVAL(LOCALE_SABBREVLANGNAME,"dan")
330 LOCVAL(LOCALE_SNATIVELANGNAME,"Dansk")
331 LOCVAL(LOCALE_ICOUNTRY,"45")
332 LOCVAL(LOCALE_SCOUNTRY,"Danmark")
333 LOCVAL(LOCALE_SENGCOUNTRY,"Denmark")
334 LOCVAL(LOCALE_SABBREVCTRYNAME,"Da")
335 LOCVAL(LOCALE_SNATIVECTRYNAME,"Danmark")
336 /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9") */
337 LOCVAL(LOCALE_IDEFAULTCOUNTRY,"45")
338 /* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */
339 /* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */
340 LOCVAL(LOCALE_SLIST,";")
341 LOCVAL(LOCALE_IMEASURE,"0")
342 LOCVAL(LOCALE_SDECIMAL,",")
343 LOCVAL(LOCALE_STHOUSAND,".")
344 /* LOCVAL(LOCALE_SGROUPING) */
345 LOCVAL(LOCALE_IDIGITS,"2")
346 LOCVAL(LOCALE_ILZERO,"1")
347 /* LOCVAL(LOCALE_INEGNUMBER) */
348 /* LOCVAL(LOCALE_SNATIVEDIGITS) */
349 LOCVAL(LOCALE_SCURRENCY,"kr")
350 /* LOCVAL(LOCALE_SINTLSYMBOL) */
351 LOCVAL(LOCALE_SMONDECIMALSEP,",")
352 LOCVAL(LOCALE_SMONTHOUSANDSEP,".")
353 /* LOCVAL(LOCALE_SMONGROUPING) */
354 LOCVAL(LOCALE_ICURRDIGITS,"2")
355 /* LOCVAL(LOCALE_IINTLCURRDIGITS) */
356 LOCVAL(LOCALE_ICURRENCY,"3")
357 LOCVAL(LOCALE_INEGCURR,"8")
358 LOCVAL(LOCALE_SDATE,".")
359 LOCVAL(LOCALE_STIME,":")
360 LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy")
361 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
362 /* LOCVAL(LOCALE_STIMEFORMAT) */
363 LOCVAL(LOCALE_IDATE,"1")
364 /* LOCVAL(LOCALE_ILDATE) */
365 LOCVAL(LOCALE_ITIME,"1")
366 /* LOCVAL(LOCALE_ITIMEMARKPOSN) */
367 /* LOCVAL(LOCALE_ICENTURY) */
368 LOCVAL(LOCALE_ITLZERO,"1")
369 /* LOCVAL(LOCALE_IDAYLZERO) */
370 /* LOCVAL(LOCALE_IMONLZERO) */
371 /* LOCVAL(LOCALE_S1159) */
372 /* LOCVAL(LOCALE_S2359) */
373 /* LOCVAL(LOCALE_ICALENDARTYPE) */
374 /* LOCVAL(LOCALE_IOPTIONALCALENDAR) */
375 /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */
376 /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */
377 LOCVAL(LOCALE_SDAYNAME1,"Mandag")
378 LOCVAL(LOCALE_SDAYNAME2,"Tirsdag")
379 LOCVAL(LOCALE_SDAYNAME3,"Onsdag")
380 LOCVAL(LOCALE_SDAYNAME4,"Torsdag")
381 LOCVAL(LOCALE_SDAYNAME5,"Fredag")
382 LOCVAL(LOCALE_SDAYNAME6,"Lørdag")
383 LOCVAL(LOCALE_SDAYNAME7,"Søndag")
384 LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma")
385 LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti")
386 LOCVAL(LOCALE_SABBREVDAYNAME3,"On")
387 LOCVAL(LOCALE_SABBREVDAYNAME4,"To")
388 LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr")
389 LOCVAL(LOCALE_SABBREVDAYNAME6,"Lø")
390 LOCVAL(LOCALE_SABBREVDAYNAME7,"Sø")
391 LOCVAL(LOCALE_SMONTHNAME1,"Januar")
392 LOCVAL(LOCALE_SMONTHNAME2,"Februar")
393 LOCVAL(LOCALE_SMONTHNAME3,"Marts")
394 LOCVAL(LOCALE_SMONTHNAME4,"April")
395 LOCVAL(LOCALE_SMONTHNAME5,"Maj")
396 LOCVAL(LOCALE_SMONTHNAME6,"Juni")
397 LOCVAL(LOCALE_SMONTHNAME7,"Juli")
398 LOCVAL(LOCALE_SMONTHNAME8,"August")
399 LOCVAL(LOCALE_SMONTHNAME9,"September")
400 LOCVAL(LOCALE_SMONTHNAME10,"Oktober")
401 LOCVAL(LOCALE_SMONTHNAME11,"November")
402 LOCVAL(LOCALE_SMONTHNAME12,"December")
403 LOCVAL(LOCALE_SMONTHNAME13,"")
404 LOCVAL(LOCALE_SABBREVMONTHNAME1,"Jan")
405 LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb")
406 LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mar")
407 LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr")
408 LOCVAL(LOCALE_SABBREVMONTHNAME5,"Maj")
409 LOCVAL(LOCALE_SABBREVMONTHNAME6,"Jun")
410 LOCVAL(LOCALE_SABBREVMONTHNAME7,"Jul")
411 LOCVAL(LOCALE_SABBREVMONTHNAME8,"Aug")
412 LOCVAL(LOCALE_SABBREVMONTHNAME9,"Sep")
413 LOCVAL(LOCALE_SABBREVMONTHNAME10,"Okt")
414 LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov")
415 LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dec")
416 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
417 /* LOCVAL(LOCALE_SPOSITIVESIGN) */
418 /* LOCVAL(LOCALE_SNEGATIVESIGN) */
419 /* LOCVAL(LOCALE_IPOSSIGNPOSN) */
420 /* LOCVAL(LOCALE_INEGSIGNPOSN) */
421 /* LOCVAL(LOCALE_IPOSSYMPRECEDES) */
422 /* LOCVAL(LOCALE_IPOSSEPBYSPACE) */
423 /* LOCVAL(LOCALE_INEGSYMPRECEDES) */
424 /* LOCVAL(LOCALE_INEGSEPBYSPACE) */
425     break; /* LANG(Da) */
426
427     case LANG_Eo:
428 /* LOCVAL(LOCALE_ILANGUAGE,"9") ISO numerical ID for language TODO */
429 LOCVAL(LOCALE_SLANGUAGE,"Esperanto")
430 LOCVAL(LOCALE_SENGLANGUAGE,"Esperanto")
431 /* LOCVAL(LOCALE_SABBREVLANGNAME,"deu") */
432 LOCVAL(LOCALE_SNATIVELANGNAME,"Esperanto")
433 /* LOCVAL(LOCALE_ICOUNTRY,"49") not official in any one country */
434 /* LOCVAL(LOCALE_SCOUNTRY,"Deutschland") */
435 /* LOCVAL(LOCALE_SENGCOUNTRY,"Germany") */
436 /* LOCVAL(LOCALE_SABBREVCTRYNAME,"De") */
437 /* LOCVAL(LOCALE_SNATIVECTRYNAME,"Deutschland") */
438 /* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9") ISO ID of lang TODO */
439 /* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"49") */
440 LOCVAL(LOCALE_IDEFAULTCODEPAGE,3) /* is this right? TODO */
441 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE,3) /* is this right? TODO */
442 LOCVAL(LOCALE_SLIST,";")
443 LOCVAL(LOCALE_IMEASURE,"0")
444 LOCVAL(LOCALE_SDECIMAL,",")
445 LOCVAL(LOCALE_STHOUSAND,".")
446 /* LOCVAL(LOCALE_SGROUPING) */
447 LOCVAL(LOCALE_IDIGITS,"2")
448 LOCVAL(LOCALE_ILZERO,"1")
449 /* LOCVAL(LOCALE_INEGNUMBER) */
450 /* LOCVAL(LOCALE_SNATIVEDIGITS) */
451 LOCVAL(LOCALE_SCURRENCY,"NLG") /* accounting currency of UEA */
452 /* LOCVAL(LOCALE_SINTLSYMBOL) */
453 /* LOCVAL(LOCALE_SMONDECIMALSEP) */
454 /* LOCVAL(LOCALE_SMONTHOUSANDSEP) */
455 /* LOCVAL(LOCALE_SMONGROUPING) */
456 /* LOCVAL(LOCALE_ICURRDIGITS,"2") */
457 /* LOCVAL(LOCALE_IINTLCURRDIGITS) */
458 LOCVAL(LOCALE_ICURRENCY,"3")
459 LOCVAL(LOCALE_INEGCURR,"8")
460 LOCVAL(LOCALE_SDATE,".")
461 LOCVAL(LOCALE_STIME,":")
462 LOCVAL(LOCALE_SSHORTDATE,"yyyy.mm.dd")
463 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
464 /* LOCVAL(LOCALE_STIMEFORMAT) */
465 LOCVAL(LOCALE_IDATE,"1")
466 /* LOCVAL(LOCALE_ILDATE) */
467 LOCVAL(LOCALE_ITIME,"1")
468 /* LOCVAL(LOCALE_ITIMEMARKPOSN) */
469 /* LOCVAL(LOCALE_ICENTURY) */
470 LOCVAL(LOCALE_ITLZERO,"1")
471 /* LOCVAL(LOCALE_IDAYLZERO) */
472 /* LOCVAL(LOCALE_IMONLZERO) */
473 /* LOCVAL(LOCALE_S1159) */
474 /* LOCVAL(LOCALE_S2359) */
475 /* LOCVAL(LOCALE_ICALENDARTYPE) */
476 /* LOCVAL(LOCALE_IOPTIONALCALENDAR) */
477 /* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */
478 /* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */
479 LOCVAL(LOCALE_SDAYNAME1,"lundo")
480 LOCVAL(LOCALE_SDAYNAME2,"mardo")
481 LOCVAL(LOCALE_SDAYNAME3,"merkredo")
482 LOCVAL(LOCALE_SDAYNAME4,"¼aýdo")
483 LOCVAL(LOCALE_SDAYNAME5,"vendredo")
484 LOCVAL(LOCALE_SDAYNAME6,"sabato")
485 LOCVAL(LOCALE_SDAYNAME7,"dimanæo")
486 LOCVAL(LOCALE_SABBREVDAYNAME1,"lu")
487 LOCVAL(LOCALE_SABBREVDAYNAME2,"ma")
488 LOCVAL(LOCALE_SABBREVDAYNAME3,"me")
489 LOCVAL(LOCALE_SABBREVDAYNAME4,"¼a")
490 LOCVAL(LOCALE_SABBREVDAYNAME5,"ve")
491 LOCVAL(LOCALE_SABBREVDAYNAME6,"sa")
492 LOCVAL(LOCALE_SABBREVDAYNAME7,"di")
493 LOCVAL(LOCALE_SMONTHNAME1,"januaro")
494 LOCVAL(LOCALE_SMONTHNAME2,"februaro")
495 LOCVAL(LOCALE_SMONTHNAME3,"marto")
496 LOCVAL(LOCALE_SMONTHNAME4,"aprilo")
497 LOCVAL(LOCALE_SMONTHNAME5,"majo")
498 LOCVAL(LOCALE_SMONTHNAME6,"junio")
499 LOCVAL(LOCALE_SMONTHNAME7,"julio")
500 LOCVAL(LOCALE_SMONTHNAME8,"aýgusto")
501 LOCVAL(LOCALE_SMONTHNAME9,"septembro")
502 LOCVAL(LOCALE_SMONTHNAME10,"oktobro")
503 LOCVAL(LOCALE_SMONTHNAME11,"novembro")
504 LOCVAL(LOCALE_SMONTHNAME12,"decembro")
505 LOCVAL(LOCALE_SMONTHNAME13,"")
506 LOCVAL(LOCALE_SABBREVMONTHNAME1,"jan")
507 LOCVAL(LOCALE_SABBREVMONTHNAME2,"feb")
508 LOCVAL(LOCALE_SABBREVMONTHNAME3,"mar")
509 LOCVAL(LOCALE_SABBREVMONTHNAME4,"apr")
510 LOCVAL(LOCALE_SABBREVMONTHNAME5,"maj")
511 LOCVAL(LOCALE_SABBREVMONTHNAME6,"jun")
512 LOCVAL(LOCALE_SABBREVMONTHNAME7,"jul")
513 LOCVAL(LOCALE_SABBREVMONTHNAME8,"aýg")
514 LOCVAL(LOCALE_SABBREVMONTHNAME9,"sep")
515 LOCVAL(LOCALE_SABBREVMONTHNAME10,"okt")
516 LOCVAL(LOCALE_SABBREVMONTHNAME11,"nov")
517 LOCVAL(LOCALE_SABBREVMONTHNAME12,"dec")
518 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
519 /* LOCVAL(LOCALE_SPOSITIVESIGN) */
520 /* LOCVAL(LOCALE_SNEGATIVESIGN) */
521 /* LOCVAL(LOCALE_IPOSSIGNPOSN) */
522 /* LOCVAL(LOCALE_INEGSIGNPOSN) */
523 /* LOCVAL(LOCALE_IPOSSYMPRECEDES) */
524 /* LOCVAL(LOCALE_IPOSSEPBYSPACE) */
525 /* LOCVAL(LOCALE_INEGSYMPRECEDES) */
526 /* LOCVAL(LOCALE_INEGSEPBYSPACE) */
527     break;  /* LANG(Eo) */
528
529     case LANG_Fi:
530 LOCVAL(LOCALE_ILANGUAGE,"11")
531 LOCVAL(LOCALE_SLANGUAGE,"Suomi")
532 LOCVAL(LOCALE_SENGLANGUAGE,"Finnish")
533 LOCVAL(LOCALE_SABBREVLANGNAME,"fin")
534 LOCVAL(LOCALE_SNATIVELANGNAME,"suomi")
535 LOCVAL(LOCALE_ICOUNTRY,"49")
536 LOCVAL(LOCALE_SCOUNTRY,"Suomi")
537 LOCVAL(LOCALE_SENGCOUNTRY,"Finland")
538 LOCVAL(LOCALE_SABBREVCTRYNAME,"Fin")
539 LOCVAL(LOCALE_SNATIVECTRYNAME,"Suomi")
540 LOCVAL(LOCALE_IDEFAULTLANGUAGE,"11")
541 LOCVAL(LOCALE_IDEFAULTCOUNTRY,"358")
542 /* 
543 LOCVAL(LOCALE_IDEFAULTCODEPAGE)
544 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE)
545 */
546 LOCVAL(LOCALE_SLIST,";")
547 LOCVAL(LOCALE_IMEASURE,"0")
548 LOCVAL(LOCALE_SDECIMAL,",")
549 LOCVAL(LOCALE_STHOUSAND,".")
550 /*
551 LOCVAL(LOCALE_SGROUPING)
552 */
553 LOCVAL(LOCALE_IDIGITS,"2")
554 LOCVAL(LOCALE_ILZERO,"1")
555 /*
556 LOCVAL(LOCALE_INEGNUMBER)
557 Is this "0123456789" ??
558 LOCVAL(LOCALE_SNATIVEDIGITS)
559 */
560 LOCVAL(LOCALE_SCURRENCY,"mk")
561 /*
562 LOCVAL(LOCALE_SINTLSYMBOL)
563 LOCVAL(LOCALE_SMONDECIMALSEP)
564 LOCVAL(LOCALE_SMONTHOUSANDSEP)
565 LOCVAL(LOCALE_SMONGROUPING)
566 */
567 LOCVAL(LOCALE_ICURRDIGITS,"2")
568 /*
569 LOCVAL(LOCALE_IINTLCURRDIGITS)
570 */
571 LOCVAL(LOCALE_ICURRENCY,"3")
572 LOCVAL(LOCALE_INEGCURR,"8")
573 LOCVAL(LOCALE_SDATE,".")
574 LOCVAL(LOCALE_STIME,":")
575 LOCVAL(LOCALE_SSHORTDATE,"dd.MM.yyyy")
576 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
577 /*
578 LOCVAL(LOCALE_STIMEFORMAT)
579 */
580 LOCVAL(LOCALE_IDATE,"1")
581 /*
582 LOCVAL(LOCALE_ILDATE)
583 */
584 LOCVAL(LOCALE_ITIME,"1")
585 /*
586 LOCVAL(LOCALE_ITIMEMARKPOSN)
587 LOCVAL(LOCALE_ICENTURY)
588 */
589 LOCVAL(LOCALE_ITLZERO,"1")
590 /*
591 LOCVAL(LOCALE_IDAYLZERO)
592 LOCVAL(LOCALE_IMONLZERO)
593 LOCVAL(LOCALE_S1159)
594 LOCVAL(LOCALE_S2359)
595 LOCVAL(LOCALE_ICALENDARTYPE)
596 LOCVAL(LOCALE_IOPTIONALCALENDAR)
597 LOCVAL(LOCALE_IFIRSTDAYOFWEEK)
598 LOCVAL(LOCALE_IFIRSTWEEKOFYEAR)
599 */
600 LOCVAL(LOCALE_SDAYNAME1,"maanantai")
601 LOCVAL(LOCALE_SDAYNAME2,"tiistai")
602 LOCVAL(LOCALE_SDAYNAME3,"keskiviikko")
603 LOCVAL(LOCALE_SDAYNAME4,"torstai")
604 LOCVAL(LOCALE_SDAYNAME5,"perjantai")
605 LOCVAL(LOCALE_SDAYNAME6,"lauantai")
606 LOCVAL(LOCALE_SDAYNAME7,"sunnuntai")
607 LOCVAL(LOCALE_SABBREVDAYNAME1,"Ma")
608 LOCVAL(LOCALE_SABBREVDAYNAME2,"Ti")
609 LOCVAL(LOCALE_SABBREVDAYNAME3,"Ke")
610 LOCVAL(LOCALE_SABBREVDAYNAME4,"To")
611 LOCVAL(LOCALE_SABBREVDAYNAME5,"Pe")
612 LOCVAL(LOCALE_SABBREVDAYNAME6,"La")
613 LOCVAL(LOCALE_SABBREVDAYNAME7,"Su")
614 LOCVAL(LOCALE_SMONTHNAME1,"tammikuu")
615 LOCVAL(LOCALE_SMONTHNAME2,"helmikuu")
616 LOCVAL(LOCALE_SMONTHNAME3,"maaliskuu")
617 LOCVAL(LOCALE_SMONTHNAME4,"huhtikuu")
618 LOCVAL(LOCALE_SMONTHNAME5,"toukokuu")
619 LOCVAL(LOCALE_SMONTHNAME6,"kesäkuu")
620 LOCVAL(LOCALE_SMONTHNAME7,"heinäkuu")
621 LOCVAL(LOCALE_SMONTHNAME8,"elokuu")
622 LOCVAL(LOCALE_SMONTHNAME9,"syyskuu")
623 LOCVAL(LOCALE_SMONTHNAME10,"lokakuu")
624 LOCVAL(LOCALE_SMONTHNAME11,"marraskuu")
625 LOCVAL(LOCALE_SMONTHNAME12,"joulukuu")
626 LOCVAL(LOCALE_SMONTHNAME13,"")
627 LOCVAL(LOCALE_SABBREVMONTHNAME1,"tammi")
628 LOCVAL(LOCALE_SABBREVMONTHNAME2,"helmi")
629 LOCVAL(LOCALE_SABBREVMONTHNAME3,"maalis")
630 LOCVAL(LOCALE_SABBREVMONTHNAME4,"huhti")
631 LOCVAL(LOCALE_SABBREVMONTHNAME5,"touko")
632 LOCVAL(LOCALE_SABBREVMONTHNAME6,"kesä")
633 LOCVAL(LOCALE_SABBREVMONTHNAME7,"heinä")
634 LOCVAL(LOCALE_SABBREVMONTHNAME8,"elo")
635 LOCVAL(LOCALE_SABBREVMONTHNAME9,"syys")
636 LOCVAL(LOCALE_SABBREVMONTHNAME10,"loka")
637 LOCVAL(LOCALE_SABBREVMONTHNAME11,"marras")
638 LOCVAL(LOCALE_SABBREVMONTHNAME12,"joulu")
639 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
640 /*
641 LOCVAL(LOCALE_SPOSITIVESIGN)
642 LOCVAL(LOCALE_SNEGATIVESIGN)
643 LOCVAL(LOCALE_IPOSSIGNPOSN)
644 LOCVAL(LOCALE_INEGSIGNPOSN)
645 LOCVAL(LOCALE_IPOSSYMPRECEDES)
646 LOCVAL(LOCALE_IPOSSEPBYSPACE)
647 LOCVAL(LOCALE_INEGSYMPRECEDES)
648 LOCVAL(LOCALE_INEGSEPBYSPACE)
649 */
650     break;  /* LANG(Fi) */
651
652     case LANG_It:
653 LOCVAL(LOCALE_ILANGUAGE,"9")
654 LOCVAL(LOCALE_SLANGUAGE,"Italiano")
655 LOCVAL(LOCALE_SENGLANGUAGE,"Italian")
656 LOCVAL(LOCALE_SABBREVLANGNAME,"ita")
657 LOCVAL(LOCALE_SNATIVELANGNAME,"Italiano")
658 LOCVAL(LOCALE_ICOUNTRY,"39")
659 LOCVAL(LOCALE_SCOUNTRY,"Italia")
660 LOCVAL(LOCALE_SENGCOUNTRY,"Italy")
661 LOCVAL(LOCALE_SABBREVCTRYNAME,"It")
662 LOCVAL(LOCALE_SNATIVECTRYNAME,"Italia")
663 LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9")
664 LOCVAL(LOCALE_IDEFAULTCOUNTRY,"39")
665 /* Dunno
666 LOCVAL(LOCALE_IDEFAULTCODEPAGE)
667 LOCVAL(LOCALE_IDEFAULTANSICODEPAGE)
668 */
669 LOCVAL(LOCALE_SLIST,";")
670 LOCVAL(LOCALE_IMEASURE,"0")
671 LOCVAL(LOCALE_SDECIMAL,",")
672 LOCVAL(LOCALE_STHOUSAND,".")
673 /*
674 LOCVAL(LOCALE_SGROUPING)
675 */
676 LOCVAL(LOCALE_IDIGITS,"2")
677 LOCVAL(LOCALE_ILZERO,"1")
678 /*
679 LOCVAL(LOCALE_INEGNUMBER)
680 Is this "0123456789" ??
681 LOCVAL(LOCALE_SNATIVEDIGITS)
682 */
683 LOCVAL(LOCALE_SCURRENCY,"Lit.")
684 /*
685 LOCVAL(LOCALE_SINTLSYMBOL)
686 LOCVAL(LOCALE_SMONDECIMALSEP)
687 LOCVAL(LOCALE_SMONTHOUSANDSEP)
688 LOCVAL(LOCALE_SMONGROUPING)
689 */
690 LOCVAL(LOCALE_ICURRDIGITS,"2")
691 /*
692 LOCVAL(LOCALE_IINTLCURRDIGITS)
693 */
694 LOCVAL(LOCALE_ICURRENCY,"3")
695 LOCVAL(LOCALE_INEGCURR,"8")
696 LOCVAL(LOCALE_SDATE,".")
697 LOCVAL(LOCALE_STIME,":")
698 LOCVAL(LOCALE_SSHORTDATE,"dd.MM.yyyy")
699 LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
700 /*
701 LOCVAL(LOCALE_STIMEFORMAT)
702 */
703 LOCVAL(LOCALE_IDATE,"1")
704 /*
705 LOCVAL(LOCALE_ILDATE)
706 */
707 LOCVAL(LOCALE_ITIME,"1")
708 /*
709 LOCVAL(LOCALE_ITIMEMARKPOSN)
710 LOCVAL(LOCALE_ICENTURY)
711 */
712 LOCVAL(LOCALE_ITLZERO,"1")
713 /*
714 LOCVAL(LOCALE_IDAYLZERO)
715 LOCVAL(LOCALE_IMONLZERO)
716 LOCVAL(LOCALE_S1159)
717 LOCVAL(LOCALE_S2359)
718 LOCVAL(LOCALE_ICALENDARTYPE)
719 LOCVAL(LOCALE_IOPTIONALCALENDAR)
720 LOCVAL(LOCALE_IFIRSTDAYOFWEEK)
721 LOCVAL(LOCALE_IFIRSTWEEKOFYEAR)
722 */
723 LOCVAL(LOCALE_SDAYNAME1,"Lunedi'")
724 LOCVAL(LOCALE_SDAYNAME2,"Martedi'")
725 LOCVAL(LOCALE_SDAYNAME3,"Mercoledi'")
726 LOCVAL(LOCALE_SDAYNAME4,"Giovedi'")
727 LOCVAL(LOCALE_SDAYNAME5,"Venerdi'")
728 LOCVAL(LOCALE_SDAYNAME6,"Sabato")
729 LOCVAL(LOCALE_SDAYNAME7,"Domenica")
730 LOCVAL(LOCALE_SABBREVDAYNAME1,"Lu")
731 LOCVAL(LOCALE_SABBREVDAYNAME2,"Ma")
732 LOCVAL(LOCALE_SABBREVDAYNAME3,"Me")
733 LOCVAL(LOCALE_SABBREVDAYNAME4,"Gi")
734 LOCVAL(LOCALE_SABBREVDAYNAME5,"Ve")
735 LOCVAL(LOCALE_SABBREVDAYNAME6,"Sa")
736 LOCVAL(LOCALE_SABBREVDAYNAME7,"Do")
737 LOCVAL(LOCALE_SMONTHNAME1,"Gennaio")
738 LOCVAL(LOCALE_SMONTHNAME2,"Febbraio")
739 LOCVAL(LOCALE_SMONTHNAME3,"Marzo")
740 LOCVAL(LOCALE_SMONTHNAME4,"Aprile")
741 LOCVAL(LOCALE_SMONTHNAME5,"Maggio")
742 LOCVAL(LOCALE_SMONTHNAME6,"Giugno")
743 LOCVAL(LOCALE_SMONTHNAME7,"Luglio")
744 LOCVAL(LOCALE_SMONTHNAME8,"Agosto")
745 LOCVAL(LOCALE_SMONTHNAME9,"Settembre")
746 LOCVAL(LOCALE_SMONTHNAME10,"Ottobre")
747 LOCVAL(LOCALE_SMONTHNAME11,"Novembre")
748 LOCVAL(LOCALE_SMONTHNAME12,"Dicembre")
749 LOCVAL(LOCALE_SMONTHNAME13,"")
750 LOCVAL(LOCALE_SABBREVMONTHNAME1,"Gen")
751 LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb")
752 LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mar")
753 LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr")
754 LOCVAL(LOCALE_SABBREVMONTHNAME5,"Mag")
755 LOCVAL(LOCALE_SABBREVMONTHNAME6,"Giu")
756 LOCVAL(LOCALE_SABBREVMONTHNAME7,"Lug")
757 LOCVAL(LOCALE_SABBREVMONTHNAME8,"Ago")
758 LOCVAL(LOCALE_SABBREVMONTHNAME9,"Set")
759 LOCVAL(LOCALE_SABBREVMONTHNAME10,"Ott")
760 LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov")
761 LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dic")
762 LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
763 /*
764 LOCVAL(LOCALE_SPOSITIVESIGN)
765 LOCVAL(LOCALE_SNEGATIVESIGN)
766 LOCVAL(LOCALE_IPOSSIGNPOSN)
767 LOCVAL(LOCALE_INEGSIGNPOSN)
768 LOCVAL(LOCALE_IPOSSYMPRECEDES)
769 LOCVAL(LOCALE_IPOSSEPBYSPACE)
770 LOCVAL(LOCALE_INEGSYMPRECEDES)
771 LOCVAL(LOCALE_INEGSEPBYSPACE)
772 */
773     break;  /* LANG(It) */
774
775
776 /*Insert other languages here*/
777
778     default:
779         break;
780     }  /* switch */
781
782         if(!retLen)
783         {
784                 if(!retString)fprintf(stderr,"Unkown LC type %lX\n",LCType);
785                 else fprintf(stderr,"'%s' not supported for your language.\n",
786                         retString);
787                 return 0;
788         }
789
790         if(retLen>len)retLen=len;
791         lstrcpyn32A(buf,retString,len);
792         return retLen;
793 }
794
795
796 /***********************************************************************
797  *           CompareString16       (OLE2NLS.8)
798  */
799 UINT16 CompareString16(DWORD lcid,DWORD fdwStyle,
800         LPCSTR s1,DWORD l1,LPCSTR s2,DWORD l2)
801 {
802         return (UINT16)CompareString32A(lcid,fdwStyle,s1,l1,s2,l2);
803 }
804
805 /***********************************************************************
806  *           CompareString32A   (KERNEL32.29)
807  * This implementation ignores the locale
808  * FIXME
809  */
810 UINT32 CompareString32A(DWORD lcid, DWORD fdwStyle, 
811         LPCSTR s1, DWORD l1, LPCSTR s2,DWORD l2)
812 {
813         int len,ret;
814         if(fdwStyle & NORM_IGNORENONSPACE)
815         {
816                 fprintf(stdnimp, "CompareStringA: IGNORENONSPACE not supprted\n");
817         }
818         if(fdwStyle & NORM_IGNORESYMBOLS)
819                 fprintf(stdnimp, "CompareStringA: IGNORESYMBOLS not supported\n");
820         /* Is strcmp defaulting to string sort or to word sort?? */
821         /* FIXME: Handle NORM_STRINGSORT */
822         l1 = (l1==-1)?strlen(s1):l1;
823         l2 = (l2==-1)?strlen(s2):l2;
824         len = l1<l2 ? l1:l2;
825         ret = (fdwStyle & NORM_IGNORECASE) ?
826                 lstrncmpi32A(s1,s2,len) : lstrncmp32A(s1,s2,len);
827         /* not equal, return 1 or 3 */
828         if(ret!=0)return ret+2;
829         /* same len, return 2 */
830         if(l1==l2)return 2;
831         /* the longer one is lexically greater */
832         return (l1<l2)? 1 : 3;
833 }
834
835 /***********************************************************************
836  *           CompareString32W       (KERNEL32.30)
837  * This implementation ignores the locale
838  * FIXME
839  */
840 UINT32 CompareString32W(DWORD lcid, DWORD fdwStyle, 
841         LPCWSTR s1, DWORD l1, LPCWSTR s2,DWORD l2)
842 {
843         int len,ret;
844         if(fdwStyle & NORM_IGNORENONSPACE)
845                 fprintf(stdnimp,"CompareStringW:IGNORENONSPACE not supprted\n");
846         if(fdwStyle & NORM_IGNORESYMBOLS)
847                 fprintf(stdnimp,"CompareStringW:IGNORESYMBOLS not supported\n");
848
849         /* Is strcmp defaulting to string sort or to word sort?? */
850         /* FIXME: Handle NORM_STRINGSORT */
851         l1 = (l1==-1)?lstrlen32W(s1):l1;
852         l2 = (l2==-1)?lstrlen32W(s2):l2;
853         len = l1<l2 ? l1:l2;
854         ret = (fdwStyle & NORM_IGNORECASE) ?
855                 lstrncmpi32W(s1,s2,len) : lstrncmp32W(s1,s2,len);
856         /* not equal, return 1 or 3 */
857         if(ret!=0) return ret+2;
858         /* same len, return 2 */
859         if(l1==l2) return 2;
860         /* the longer one is lexically greater */
861         return (l1<l2)? 1 : 3;
862 }
863
864 /***********************************************************************
865  *           SetLocalInfoA       (KERNEL32.499)
866  */
867 BOOL SetLocaleInfoA(DWORD lcid, DWORD lctype, LPCSTR data) {
868         fprintf(stdnimp,"SetLocaleInfoA(%ld,%ld,%s)\n",lcid,lctype,data);
869         return TRUE;
870 }