Changeset 367 for trunk/src/kernel32/lang.cpp
- Timestamp:
- Jul 22, 1999, 5:42:18 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/lang.cpp
r247 r367 1 /* $Id: lang.cpp,v 1.9 1999-06-29 17:23:47 sandervl Exp $ */2 3 1 /* 4 2 * Win32 language API functions for OS/2 … … 6 4 * Copyright 1998 Sander van Leeuwen 7 5 * Copyright 1998 Patrick Haller 8 * 6 * Copyright 1999 Przemyslaw Dobrowolski 9 7 * 10 8 * Project Odin Software License can be found in LICENSE.TXT … … 14 12 #include <winnls.h> 15 13 #include <stdlib.h> 14 #include <stdio.h> 16 15 #include <string.h> 17 16 #include <winos2def.h> 18 17 #include "unicode.h" 19 18 20 21 19 //****************************************************************************** 22 20 //****************************************************************************** … … 54 52 return(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); 55 53 } 56 //****************************************************************************** 57 //****************************************************************************** 54 55 /***************************************************************************** 56 * Name : DWORD GetLocaleInfoA 57 * Purpose : The GetLocaleInfoA function returns specific locale information 58 * Parameters: LCID lcid locale identifier 59 * LCTYPE LCType type of information 60 * LPSTR buf address of buffer for information 61 * int len size of buffer 62 * Variables : 63 * Result : size of target buffer 64 * Remark : In this version LOCALE_SYSTEM_DEFAULT == LOCALE_USER_DEFAULT 65 * look into GetLocaleInfoW 66 * 67 * Status : TESTED 68 * 69 * Author : Przemyslaw Dobrowolski [Tue, 1999/07/21 12:18] 70 *****************************************************************************/ 58 71 int WIN32API GetLocaleInfoA(LCID lcid, LCTYPE LCType, LPSTR buf, int len) 59 72 { 60 COUNTRYCODE Country = {0}; 61 COUNTRYINFO CtryInfo = {0}; 62 ULONG ulInfoLen = 0; 63 64 dprintf(("KERNEL32: OS2GetLocaleInfoA: Not complete!\n")); 73 LPWSTR lpWStr; 74 int ret_len; 75 65 76 if (len && (! buf) ) 66 77 { … … 69 80 } 70 81 71 // Only standard. TODO: Use os2.ini PM_National section 72 DosQueryCtryInfo(sizeof(CtryInfo), &Country, &CtryInfo, &ulInfoLen); 73 74 LCType &= ~(LOCALE_NOUSEROVERRIDE|LOCALE_USE_CP_ACP); 75 76 switch(LCType) 82 dprintf(("KERNEL32: OS2GetLocaleInfoA lcID=%d,lcType=%x,buf=%X,len=%d\n",lcid,LCType,buf,len)); 83 84 if (buf) 85 lpWStr=(LPWSTR)malloc(len*(sizeof(WCHAR))); 86 else 87 lpWStr=NULL; // Query for buffer size 88 89 ret_len=GetLocaleInfoW(lcid, LCType, lpWStr, len); 90 91 if (buf) 77 92 { 78 case LOCALE_SDECIMAL: 79 if(buf) *buf = CtryInfo.szDecimal[0]; 80 return 1; 81 case LOCALE_SDATE: 82 if(buf) *buf = CtryInfo.szDateSeparator[0]; 83 return 1; 84 case LOCALE_STIME: 85 if(buf) *buf = CtryInfo.szTimeSeparator[0]; 86 return 1; 87 case LOCALE_STHOUSAND: 88 if(buf) *buf = CtryInfo.szThousandsSeparator[0]; 89 return 1; 90 case LOCALE_SCURRENCY: 91 if(len > strlen(CtryInfo.szCurrency)) 92 { 93 strcpy(buf, CtryInfo.szCurrency); 94 return (strlen(buf) + 1); 95 } 96 else 97 break; 98 case LOCALE_SSHORTDATE: 99 if(CtryInfo.fsDateFmt == 0) 100 { 101 if(len > 8) 102 { 103 strcpy(buf, "MMXddXyy"); 104 buf[2] = buf[5] = CtryInfo.szDateSeparator[0]; 105 return 9; 106 } 107 else 108 break; 109 } 110 else if(CtryInfo.fsDateFmt == 1) 111 { 112 if(len > 8) 113 { 114 strcpy(buf, "ddXMMXyy"); 115 buf[2] = buf[5] = CtryInfo.szDateSeparator[0]; 116 return 9; 117 } 118 else 119 break; 120 } 121 else /* if(CtryInfo.fsDateFmt == 2) */ 122 { 123 if(len > 8) 124 { 125 strcpy(buf, "yyXMMXdd"); 126 buf[2] = buf[5] = CtryInfo.szDateSeparator[0]; 127 return 9; 128 } 129 else 130 break; 131 } 132 case LOCALE_STIMEFORMAT: 133 if(CtryInfo.fsTimeFmt == 0) 134 { 135 if(len > 8) 136 { 137 strcpy(buf, "HHXmmXss"); 138 buf[2] = buf[5] = CtryInfo.szTimeSeparator[0]; 139 return 9; 140 } 141 else 142 break; 143 } 144 else /* if(CtryInfo.fsTimeFmt == 1) */ 145 { 146 if(len > 8) 147 { 148 strcpy(buf, "HHXmmXss"); 149 buf[2] = buf[5] = CtryInfo.szTimeSeparator[0]; 150 return 9; 151 } 152 else 153 break; 154 } 155 case LOCALE_S1159: 156 if(CtryInfo.fsTimeFmt == 0) 157 { 158 if(len > 2) 159 { 160 strcpy(buf, "AM"); 161 return 3; 162 } 163 else 164 break; 165 } 166 if(buf) *buf = 0; 167 return 1; 168 case LOCALE_S2359: 169 if(CtryInfo.fsTimeFmt == 0) 170 { 171 if(len > 2) 172 { 173 strcpy(buf, "PM"); 174 return 3; 175 } 176 else 177 break; 178 } 179 if(buf) *buf = 0; 180 return 1; 181 /*** 182 LOCALE_SABBREVMONTHNAME11: 183 LOCALE_SABBREVMONTHNAME12: 184 LOCALE_SABBREVMONTHNAME13: 185 LOCALE_SPOSITIVESIGN: 186 LOCALE_SNEGATIVESIGN: 187 LOCALE_IPOSSIGNPOSN: 188 LOCALE_INEGSIGNPOSN: 189 LOCALE_IPOSSYMPRECEDES: 190 LOCALE_IPOSSEPBYSPACE: 191 LOCALE_INEGSYMPRECEDES: 192 LOCALE_INEGSEPBYSPACE: 193 LOCALE_FONTSIGNATURE: 194 LOCALE_SISO639LANGNAME: 195 LOCALE_SISO3166CTRYNAME: 196 ***/ 197 default: 198 dprintf(("KERNEL32: OS2GetLocaleInfoA: LCType %d not yet supported\n", LCType)); 199 if(buf) *buf = '1'; 200 return(1); 93 UnicodeToAscii(lpWStr,buf); 94 free(lpWStr); 201 95 } 202 96 203 // a 'break' in 'switch(LCType)': buffer too small 204 SetLastError(ERROR_INSUFFICIENT_BUFFER); 205 return 0; 206 207 } 208 //****************************************************************************** 209 //****************************************************************************** 97 dprintf(("KERNEL32: OS2GetLocaleInfoA returned %d\n",len)); 98 99 return (ret_len); 100 } 101 //****************************************************************************** 102 //****************************************************************************** 103 static BOOL LocaleFromUniStr(LPWSTR lpUniStr, LPWSTR wbuf, ULONG *pLen) 104 { 105 if (wbuf) 106 { 107 if (*pLen > UniStrlen(lpUniStr)) 108 UniStrcpy(wbuf,lpUniStr); 109 else 110 { 111 SetLastError(ERROR_INSUFFICIENT_BUFFER); 112 *pLen=0; 113 return FALSE; 114 } 115 } 116 117 *pLen=UniStrlen(lpUniStr)+1; // + null terminator 118 119 return TRUE; 120 } 121 //****************************************************************************** 122 //****************************************************************************** 123 static BOOL LocaleFromUniChar(WCHAR wcUniChar, LPWSTR wbuf, ULONG *pLen) 124 { 125 if (wbuf) 126 { 127 if (*pLen > sizeof(WCHAR)) 128 { 129 wbuf[0]=(WCHAR)'0'+wcUniChar; 130 wbuf[1]=0; 131 } 132 else 133 { 134 SetLastError(ERROR_INSUFFICIENT_BUFFER); 135 *pLen=0; 136 return FALSE; 137 } 138 } 139 140 *pLen=2; 141 142 return TRUE; 143 } 144 145 /***************************************************************************** 146 * Name : DWORD GetLocaleInfoW 147 * Purpose : The GetLocaleInfoW function returns specific locale information 148 * Parameters: LCID lcid locale identifier 149 * LCTYPE LCType type of information 150 * LPSTRW wbuf address of buffer for information 151 * int len size of buffer 152 * Variables : 153 * Result : size of target buffer 154 * Remark : In this version LOCALE_SYSTEM_DEFAULT == LOCALE_USER_DEFAULT 155 * 156 * LOCALE_STHOUSAND - with some languages returns OS/2 separator not Windows! 157 * LOCALE_IMEASURE - return '0' like English US 158 * LOCALE_INEGNUMBER - return '1' like English US 159 * LOCALE_ICURRDIGITS - return '2' like English US 160 * LOCALE_IDATE are identical as LOCALE_ILDATE (must be fixed?) 161 * LOCALE_SGROUPING and 162 * LOCALE_SMONGROUPING are tested only with Polish & English languages 163 * LOCALE_SMONTHNAME13 and 164 * LOCALE_SABBERVMONTHNAME13 - returns empty string like English US 165 * LOCALE_FONTSIGNATURE - return empty string like English US 166 * 167 * Status : FULLY TESTED 168 * 169 * Author : Przemyslaw Dobrowolski [Tue, 1999/07/22 17:07] 170 *****************************************************************************/ 210 171 int WIN32API GetLocaleInfoW(LCID lcid, LCTYPE LCType, LPWSTR wbuf, int len) 211 172 { 212 WORD wlen; 213 char *abuf; 214 215 dprintf(("KERNEL32: OS2GetLocaleInfoW\n")); 173 LocaleObject locale_object = NULL; 174 struct UniLconv *puni_lconv = NULL; 175 WCHAR *pInfoItem; 176 int rc; 177 COUNTRYCODE Country = {0}; 178 COUNTRYINFO CtryInfo = {0}; 179 ULONG ulInfoLen = 0; 180 181 dprintf(("KERNEL32: OS2GetLocaleInfoW lcID=%d,lcType=%x,wbuf=%X,len=%d\n",lcid,LCType,wbuf,len)); 182 216 183 if (len && (! wbuf) ) 217 184 { … … 219 186 return 0; 220 187 } 221 abuf = (char *) malloc(len); 222 wlen = GetLocaleInfoA(lcid, LCType, abuf, len); 223 224 if (wlen && len) // no check of wbuf length !! 225 AsciiToUnicodeN(abuf, wbuf, wlen); 226 227 free(abuf); 228 return wlen; 229 } 188 189 if (wbuf) *wbuf==0; 190 191 rc=UniCreateLocaleObject(UNI_UCS_STRING_POINTER,(UniChar *)L"", &locale_object); 192 193 if ( rc == ULS_SUCCESS ) 194 { 195 UniQueryLocaleInfo(locale_object, &puni_lconv); 196 197 DosQueryCtryInfo(sizeof(COUNTRYINFO), &Country, &CtryInfo, &ulInfoLen); 198 199 ulInfoLen = len; // Now we use this variable as returned length info 200 201 LCType &= ~(LOCALE_NOUSEROVERRIDE|LOCALE_USE_CP_ACP); 202 203 switch(LCType) 204 { 205 case LOCALE_SDECIMAL: 206 LocaleFromUniStr(puni_lconv->decimal_point,wbuf,&ulInfoLen); 207 break; 208 209 case LOCALE_IMEASURE: // Fixme! 210 // only like English US 211 LocaleFromUniChar(0,wbuf,&ulInfoLen); 212 break; 213 214 case LOCALE_INEGNUMBER: // Fixme! 215 // only like English US 216 LocaleFromUniChar(1,wbuf,&ulInfoLen); 217 break; 218 219 case LOCALE_ICURRDIGITS:// Fixme! 220 // only like English US 221 LocaleFromUniChar(2,wbuf,&ulInfoLen); 222 break; 223 224 case LOCALE_STHOUSAND: 225 LocaleFromUniStr(puni_lconv->thousands_sep,wbuf,&ulInfoLen); 226 break; 227 228 case LOCALE_SGROUPING: // tested only with Polish & English 229 if (wbuf) 230 { 231 if (puni_lconv->grouping) 232 { 233 if (len >= 3*sizeof(WCHAR)) 234 { 235 wbuf[0]='0'+*puni_lconv->grouping; 236 wbuf[1]=(WCHAR)';'; 237 wbuf[2]=(WCHAR)'0'; 238 wbuf[3]=0; 239 ulInfoLen=4; 240 } 241 else 242 { 243 SetLastError(ERROR_INSUFFICIENT_BUFFER); 244 break; 245 } 246 } 247 else 248 { 249 wbuf[0]=20; // Windows return space!! 250 ulInfoLen=2; 251 } 252 } 253 else 254 ulInfoLen=2; 255 break; 256 257 case LOCALE_SMONGROUPING: // tested only with Polish & English 258 if (wbuf) 259 { 260 if (puni_lconv->mon_grouping) 261 { 262 if (len >= 3*sizeof(WCHAR)) 263 { 264 wbuf[0]='0'+*puni_lconv->mon_grouping; 265 wbuf[1]=(WCHAR)';'; 266 wbuf[2]=(WCHAR)'0'; 267 wbuf[3]=0; 268 ulInfoLen=4; 269 } 270 else 271 { 272 SetLastError(ERROR_INSUFFICIENT_BUFFER); 273 break; 274 } 275 } 276 else 277 { 278 wbuf[0]=20; // Windows return space!! 279 ulInfoLen=2; 280 } 281 } 282 else 283 ulInfoLen=2; 284 break; 285 286 287 case LOCALE_SCURRENCY: 288 LocaleFromUniStr(puni_lconv->currency_symbol,wbuf,&ulInfoLen); 289 break; 290 291 case LOCALE_SMONDECIMALSEP: 292 LocaleFromUniStr(puni_lconv->mon_decimal_point,wbuf,&ulInfoLen); 293 break; 294 295 case LOCALE_SMONTHOUSANDSEP: 296 LocaleFromUniStr(puni_lconv->mon_thousands_sep,wbuf,&ulInfoLen); 297 break; 298 299 case LOCALE_SPOSITIVESIGN: 300 LocaleFromUniStr(puni_lconv->positive_sign,wbuf,&ulInfoLen); 301 break; 302 303 case LOCALE_SNEGATIVESIGN: 304 LocaleFromUniStr(puni_lconv->negative_sign,wbuf,&ulInfoLen); 305 break; 306 307 case LOCALE_IPOSSIGNPOSN: 308 LocaleFromUniChar(puni_lconv->p_sign_posn,wbuf,&ulInfoLen); 309 break; 310 311 case LOCALE_INEGSIGNPOSN: 312 LocaleFromUniChar(puni_lconv->n_sign_posn,wbuf,&ulInfoLen); 313 break; 314 315 case LOCALE_IPOSSYMPRECEDES: 316 LocaleFromUniChar(puni_lconv->p_cs_precedes,wbuf,&ulInfoLen); 317 break; 318 319 case LOCALE_IPOSSEPBYSPACE: 320 LocaleFromUniChar(puni_lconv->p_sep_by_space,wbuf,&ulInfoLen); 321 break; 322 323 case LOCALE_INEGSYMPRECEDES: 324 LocaleFromUniChar(puni_lconv->n_cs_precedes,wbuf,&ulInfoLen); 325 break; 326 327 case LOCALE_INEGSEPBYSPACE: 328 LocaleFromUniChar(puni_lconv->n_sep_by_space,wbuf,&ulInfoLen); 329 break; 330 331 case LOCALE_S1159: 332 UniQueryLocaleItem(locale_object, AM_STR,&pInfoItem); 333 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 334 UniFreeMem(pInfoItem); 335 break; 336 337 case LOCALE_S2359: 338 UniQueryLocaleItem(locale_object, PM_STR,&pInfoItem); 339 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 340 UniFreeMem(pInfoItem); 341 break; 342 343 case LOCALE_IDEFAULTLANGUAGE: 344 case LOCALE_ILANGUAGE: 345 UniQueryLocaleItem(locale_object, XWINLOCALE,&pInfoItem); 346 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 347 UniFreeMem(pInfoItem); 348 break; 349 350 case LOCALE_INEGCURR: 351 UniQueryLocaleItem(locale_object, INEGCURR,&pInfoItem); 352 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 353 UniFreeMem(pInfoItem); 354 break; 355 356 case LOCALE_ICURRENCY: 357 UniQueryLocaleItem(locale_object, ICURRENCY,&pInfoItem); 358 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 359 UniFreeMem(pInfoItem); 360 break; 361 362 363 364 case LOCALE_SNATIVELANGNAME: 365 case LOCALE_SLANGUAGE: 366 UniQueryLocaleItem(locale_object, SLANGUAGE,&pInfoItem); 367 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 368 UniFreeMem(pInfoItem); 369 break; 370 371 case LOCALE_SABBREVLANGNAME: 372 UniQueryLocaleItem(locale_object, SABBREVLANGNAME,&pInfoItem); 373 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 374 UniFreeMem(pInfoItem); 375 break; 376 377 case LOCALE_IDEFAULTCOUNTRY: 378 case LOCALE_ICOUNTRY: 379 UniQueryLocaleItem(locale_object, ICOUNTRY,&pInfoItem); 380 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 381 UniFreeMem(pInfoItem); 382 break; 383 384 case LOCALE_SENGLANGUAGE: 385 UniQueryLocaleItem(locale_object, SENGLANGUAGE,&pInfoItem); 386 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 387 UniFreeMem(pInfoItem); 388 break; 389 390 case LOCALE_SENGCOUNTRY: 391 case LOCALE_SCOUNTRY: 392 UniQueryLocaleItem(locale_object, SENGCOUNTRYNAME,&pInfoItem); 393 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 394 UniFreeMem(pInfoItem); 395 break; 396 397 case LOCALE_SABBREVCTRYNAME: 398 UniQueryLocaleItem(locale_object, SABBREVCTRYNAME,&pInfoItem); 399 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 400 UniFreeMem(pInfoItem); 401 break; 402 403 case LOCALE_SNATIVECTRYNAME: 404 UniQueryLocaleItem(locale_object, SCOUNTRY,&pInfoItem); 405 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 406 UniFreeMem(pInfoItem); 407 break; 408 409 case LOCALE_SNATIVEDIGITS: 410 UniQueryLocaleItem(locale_object, SNATIVEDIGITS,&pInfoItem); 411 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 412 UniFreeMem(pInfoItem); 413 break; 414 415 416 case LOCALE_IDEFAULTCODEPAGE: 417 UniQueryLocaleItem(locale_object, ICODEPAGE,&pInfoItem); 418 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 419 UniFreeMem(pInfoItem); 420 break; 421 422 case LOCALE_IDEFAULTANSICODEPAGE: 423 UniQueryLocaleItem(locale_object, IANSICODEPAGE,&pInfoItem); 424 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 425 UniFreeMem(pInfoItem); 426 break; 427 428 case LOCALE_IDEFAULTMACCODEPAGE: 429 UniQueryLocaleItem(locale_object, IMACCODEPAGE,&pInfoItem); 430 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 431 UniFreeMem(pInfoItem); 432 break; 433 434 case LOCALE_SLIST: 435 UniQueryLocaleItem(locale_object, LISTSEP,&pInfoItem); 436 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 437 UniFreeMem(pInfoItem); 438 break; 439 440 case LOCALE_SINTLSYMBOL: 441 UniQueryLocaleItem(locale_object, SINTLSYMBOL,&pInfoItem); 442 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 443 UniFreeMem(pInfoItem); 444 break; 445 446 case LOCALE_SDAYNAME7: 447 UniQueryLocaleItem(locale_object, DAY_1,&pInfoItem); 448 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 449 UniFreeMem(pInfoItem); 450 break; 451 452 case LOCALE_SDAYNAME1: 453 UniQueryLocaleItem(locale_object, DAY_2,&pInfoItem); 454 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 455 UniFreeMem(pInfoItem); 456 break; 457 458 case LOCALE_SDAYNAME2: 459 UniQueryLocaleItem(locale_object, DAY_3,&pInfoItem); 460 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 461 UniFreeMem(pInfoItem); 462 break; 463 464 case LOCALE_SDAYNAME3: 465 UniQueryLocaleItem(locale_object, DAY_4,&pInfoItem); 466 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 467 UniFreeMem(pInfoItem); 468 break; 469 470 case LOCALE_SDAYNAME4: 471 UniQueryLocaleItem(locale_object, DAY_5,&pInfoItem); 472 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 473 UniFreeMem(pInfoItem); 474 break; 475 476 case LOCALE_SDAYNAME5: 477 UniQueryLocaleItem(locale_object, DAY_6,&pInfoItem); 478 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 479 UniFreeMem(pInfoItem); 480 break; 481 482 case LOCALE_SDAYNAME6: 483 UniQueryLocaleItem(locale_object, DAY_7,&pInfoItem); 484 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 485 UniFreeMem(pInfoItem); 486 break; 487 488 case LOCALE_SABBREVDAYNAME7: 489 UniQueryLocaleItem(locale_object, ABDAY_1,&pInfoItem); 490 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 491 UniFreeMem(pInfoItem); 492 break; 493 494 case LOCALE_SABBREVDAYNAME1: 495 UniQueryLocaleItem(locale_object, ABDAY_2,&pInfoItem); 496 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 497 UniFreeMem(pInfoItem); 498 break; 499 500 case LOCALE_SABBREVDAYNAME2: 501 UniQueryLocaleItem(locale_object, ABDAY_3,&pInfoItem); 502 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 503 UniFreeMem(pInfoItem); 504 break; 505 506 case LOCALE_SABBREVDAYNAME3: 507 UniQueryLocaleItem(locale_object, ABDAY_4,&pInfoItem); 508 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 509 UniFreeMem(pInfoItem); 510 break; 511 512 case LOCALE_SABBREVDAYNAME4: 513 UniQueryLocaleItem(locale_object, ABDAY_5,&pInfoItem); 514 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 515 UniFreeMem(pInfoItem); 516 break; 517 518 case LOCALE_SABBREVDAYNAME5: 519 UniQueryLocaleItem(locale_object, ABDAY_6,&pInfoItem); 520 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 521 UniFreeMem(pInfoItem); 522 break; 523 524 case LOCALE_SABBREVDAYNAME6: 525 UniQueryLocaleItem(locale_object, ABDAY_7,&pInfoItem); 526 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 527 UniFreeMem(pInfoItem); 528 break; 529 530 case LOCALE_SMONTHNAME1: 531 UniQueryLocaleItem(locale_object, MON_1,&pInfoItem); 532 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 533 UniFreeMem(pInfoItem); 534 break; 535 536 case LOCALE_SMONTHNAME2: 537 UniQueryLocaleItem(locale_object, MON_2,&pInfoItem); 538 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 539 UniFreeMem(pInfoItem); 540 break; 541 542 case LOCALE_SMONTHNAME3: 543 UniQueryLocaleItem(locale_object, MON_3,&pInfoItem); 544 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 545 UniFreeMem(pInfoItem); 546 break; 547 548 case LOCALE_SMONTHNAME4: 549 UniQueryLocaleItem(locale_object, MON_4,&pInfoItem); 550 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 551 UniFreeMem(pInfoItem); 552 break; 553 554 case LOCALE_SMONTHNAME5: 555 UniQueryLocaleItem(locale_object, MON_5,&pInfoItem); 556 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 557 UniFreeMem(pInfoItem); 558 break; 559 560 case LOCALE_SMONTHNAME6: 561 UniQueryLocaleItem(locale_object, MON_6,&pInfoItem); 562 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 563 UniFreeMem(pInfoItem); 564 break; 565 566 case LOCALE_SMONTHNAME7: 567 UniQueryLocaleItem(locale_object, MON_7,&pInfoItem); 568 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 569 UniFreeMem(pInfoItem); 570 break; 571 572 case LOCALE_SMONTHNAME8: 573 UniQueryLocaleItem(locale_object, MON_8,&pInfoItem); 574 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 575 UniFreeMem(pInfoItem); 576 break; 577 578 case LOCALE_SMONTHNAME9: 579 UniQueryLocaleItem(locale_object, MON_9,&pInfoItem); 580 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 581 UniFreeMem(pInfoItem); 582 break; 583 584 case LOCALE_SMONTHNAME10: 585 UniQueryLocaleItem(locale_object, MON_10,&pInfoItem); 586 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 587 UniFreeMem(pInfoItem); 588 break; 589 590 case LOCALE_SMONTHNAME11: 591 UniQueryLocaleItem(locale_object, MON_11,&pInfoItem); 592 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 593 UniFreeMem(pInfoItem); 594 break; 595 596 case LOCALE_SMONTHNAME12: 597 UniQueryLocaleItem(locale_object, MON_12,&pInfoItem); 598 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 599 UniFreeMem(pInfoItem); 600 break; 601 602 case LOCALE_FONTSIGNATURE: // FixMe!!! 603 case LOCALE_SABBREVMONTHNAME13: 604 case LOCALE_SMONTHNAME13: 605 LocaleFromUniStr((LPWSTR)L"\0",wbuf,&ulInfoLen); 606 break; 607 608 case LOCALE_SABBREVMONTHNAME1: 609 UniQueryLocaleItem(locale_object, ABMON_1,&pInfoItem); 610 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 611 UniFreeMem(pInfoItem); 612 break; 613 614 case LOCALE_SABBREVMONTHNAME2: 615 UniQueryLocaleItem(locale_object, ABMON_2,&pInfoItem); 616 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 617 UniFreeMem(pInfoItem); 618 break; 619 620 case LOCALE_SABBREVMONTHNAME3: 621 UniQueryLocaleItem(locale_object, ABMON_3,&pInfoItem); 622 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 623 UniFreeMem(pInfoItem); 624 break; 625 626 case LOCALE_SABBREVMONTHNAME4: 627 UniQueryLocaleItem(locale_object, ABMON_4,&pInfoItem); 628 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 629 UniFreeMem(pInfoItem); 630 break; 631 632 case LOCALE_SABBREVMONTHNAME5: 633 UniQueryLocaleItem(locale_object, ABMON_5,&pInfoItem); 634 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 635 UniFreeMem(pInfoItem); 636 break; 637 638 case LOCALE_SABBREVMONTHNAME6: 639 UniQueryLocaleItem(locale_object, ABMON_6,&pInfoItem); 640 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 641 UniFreeMem(pInfoItem); 642 break; 643 644 case LOCALE_SABBREVMONTHNAME7: 645 UniQueryLocaleItem(locale_object, ABMON_7,&pInfoItem); 646 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 647 UniFreeMem(pInfoItem); 648 break; 649 650 case LOCALE_SABBREVMONTHNAME8: 651 UniQueryLocaleItem(locale_object, ABMON_8,&pInfoItem); 652 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 653 UniFreeMem(pInfoItem); 654 break; 655 656 case LOCALE_SABBREVMONTHNAME9: 657 UniQueryLocaleItem(locale_object, ABMON_9,&pInfoItem); 658 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 659 UniFreeMem(pInfoItem); 660 break; 661 662 case LOCALE_SABBREVMONTHNAME10: 663 UniQueryLocaleItem(locale_object, ABMON_10,&pInfoItem); 664 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 665 UniFreeMem(pInfoItem); 666 break; 667 668 case LOCALE_SABBREVMONTHNAME11: 669 UniQueryLocaleItem(locale_object, ABMON_11,&pInfoItem); 670 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 671 UniFreeMem(pInfoItem); 672 break; 673 674 case LOCALE_SABBREVMONTHNAME12: 675 UniQueryLocaleItem(locale_object, ABMON_12,&pInfoItem); 676 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 677 UniFreeMem(pInfoItem); 678 break; 679 680 case LOCALE_SDATE: 681 UniQueryLocaleItem(locale_object, DATESEP,&pInfoItem); 682 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 683 UniFreeMem(pInfoItem); 684 break; 685 686 case LOCALE_STIME: 687 UniQueryLocaleItem(locale_object, TIMESEP,&pInfoItem); 688 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 689 UniFreeMem(pInfoItem); 690 break; 691 692 case LOCALE_IDATE: 693 case LOCALE_ILDATE: 694 LocaleFromUniChar(CtryInfo.fsDateFmt,wbuf,&ulInfoLen); 695 break; 696 697 case LOCALE_ITIME: 698 UniQueryLocaleItem(locale_object, TIMESEP,&pInfoItem); 699 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 700 UniFreeMem(pInfoItem); 701 break; 702 703 case LOCALE_SSHORTDATE: 704 UniQueryLocaleItem(locale_object, WSHORTDATE,&pInfoItem); 705 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 706 UniFreeMem(pInfoItem); 707 break; 708 709 case LOCALE_SLONGDATE: 710 UniQueryLocaleItem(locale_object, WLONGDATE,&pInfoItem); 711 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 712 UniFreeMem(pInfoItem); 713 break; 714 715 716 case LOCALE_STIMEFORMAT: 717 UniQueryLocaleItem(locale_object, WTIMEFORMAT,&pInfoItem); 718 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 719 UniFreeMem(pInfoItem); 720 break; 721 722 case LOCALE_SISO639LANGNAME: 723 UniQueryLocaleItem(locale_object, SISO639LANGNAME,&pInfoItem); 724 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 725 UniFreeMem(pInfoItem); 726 break; 727 728 case LOCALE_SISO3166CTRYNAME: 729 UniQueryLocaleItem(locale_object, SISO3166CTRYNAME,&pInfoItem); 730 LocaleFromUniStr(pInfoItem,wbuf,&ulInfoLen); 731 UniFreeMem(pInfoItem); 732 break; 733 734 default: 735 dprintf(("KERNEL32: OS2GetLocaleInfoW: LCType %X not yet supported\n", LCType)); 736 if (wbuf) 737 { 738 wbuf[0] = (WCHAR) '1'; 739 wbuf[1] = 0; 740 } 741 ulInfoLen=2; 742 break; 743 744 } 745 UniFreeLocaleInfo(puni_lconv); 746 UniFreeLocaleObject(locale_object); 747 } 748 else 749 return (0); 750 751 dprintf(("KERNEL32: OS2GetLocaleInfoW returned %d\n",ulInfoLen)); 752 753 return (ulInfoLen); 754 } 755 230 756 //****************************************************************************** 231 757 //****************************************************************************** … … 417 943 return (0); 418 944 } 419 420
Note:
See TracChangeset
for help on using the changeset viewer.