Changeset 349 for trunk/src/helpers
- Timestamp:
- Mar 27, 2007, 9:32:24 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/helpers/nls.c
r319 r349 22 22 23 23 /* 24 * Copyright (C) 1997-200 6Ulrich Mller.24 * Copyright (C) 1997-2007 Ulrich Mller. 25 25 * This file is part of the "XWorkplace helpers" source package. 26 26 * This is free software; you can redistribute it and/or modify … … 64 64 #pragma hdrstop 65 65 66 #pragma library("LIBULS") 67 #pragma library("LIBCONV") 66 // WarpIN V1.0.15 (2007-03-26) [pr]: @@fixes 936 67 // UCONV functions 68 int (* CALLCONV G_UniCreateUconvObject)(UniChar *code_set, UconvObject *uobj) = NULL; 69 int (* CALLCONV G_UniStrFromUcs)(UconvObject co, char *target, UniChar *source, 70 int len) = NULL; 71 int (* CALLCONV G_UniFreeUconvObject)(UconvObject uobj) = NULL; 72 // LIBUNI functions 73 int (* CALLCONV G_UniCreateLocaleObject)(int locale_spec_type, 74 const void *locale_spec, LocaleObject *locale_object_ptr) = NULL; 75 int (* CALLCONV G_UniQueryLocaleItem)(const LocaleObject locale_object, 76 LocaleItem item, UniChar **info_item_addr_ptr) = NULL; 77 size_t (* CALLCONV G_UniStrlen)(const UniChar *ucs1) = NULL; 78 int (* CALLCONV G_UniFreeMem)(void *memory_ptr) = NULL; 79 int (* CALLCONV G_UniFreeLocaleObject)(LocaleObject locale_object) = NULL; 80 81 /* 82 * G_aResolveFromUCONV: 83 * functions resolved from UCONV.DLL. 84 * Used with doshResolveImports. 85 */ 86 87 static const RESOLVEFUNCTION G_aResolveFromUCONV[] = 88 { 89 "UniCreateUconvObject", (PFN*)&G_UniCreateUconvObject, 90 "UniStrFromUcs", (PFN*)&G_UniStrFromUcs, 91 "UniFreeUconvObject", (PFN*)&G_UniFreeUconvObject 92 }; 93 94 /* 95 * G_aResolveFromLIBUNI: 96 * functions resolved from LIBUNI.DLL. 97 * Used with doshResolveImports. 98 */ 99 100 static const RESOLVEFUNCTION G_aResolveFromLIBUNI[] = 101 { 102 "UniCreateLocaleObject", (PFN*)&G_UniCreateLocaleObject, 103 "UniQueryLocaleItem", (PFN*)&G_UniQueryLocaleItem, 104 "UniStrlen", (PFN*)&G_UniStrlen, 105 "UniFreeMem", (PFN*)&G_UniFreeMem, 106 "UniFreeLocaleObject", (PFN*)&G_UniFreeLocaleObject 107 }; 108 109 static BOOL fUniResolved = FALSE, fUniOK = FALSE; 68 110 69 111 /* … … 380 422 *@@changed V1.0.4 (2005-10-15) [pr]: Added support for Locale object settings on MCP systems @@fixes 614 381 423 *@@changed V1.0.5 (2006-05-29) [pr]: Read Country rather than Locale settings on Warp 4 FP13+ @@fixes 614 424 *@@changed WarpIN V1.0.15 (2007-03-26) [pr]: Rewritten to load UCONV/LIBUNI functions dynamically @@fixes 936 382 425 */ 383 426 384 427 VOID nlsGetAMPM(PCOUNTRYAMPM pampm) 385 428 { 386 if (doshIsWarp4()==3) // V1.0.5 (2006-05-29) [pr] 429 if ( (doshIsWarp4()==3) 430 && (!fUniResolved) 431 ) 432 { 433 HMODULE hmodUCONV = NULLHANDLE, 434 hmodLIBUNI = NULLHANDLE; 435 436 fUniResolved = TRUE; 437 if ( (doshResolveImports("UCONV.DLL", 438 &hmodUCONV, 439 G_aResolveFromUCONV, 440 sizeof(G_aResolveFromUCONV) / sizeof(G_aResolveFromUCONV[0])) 441 == NO_ERROR) 442 && (doshResolveImports("LIBUNI.DLL", 443 &hmodLIBUNI, 444 G_aResolveFromLIBUNI, 445 sizeof(G_aResolveFromLIBUNI) / sizeof(G_aResolveFromLIBUNI[0])) 446 == NO_ERROR) 447 ) 448 fUniOK = TRUE; 449 } 450 451 if ( (doshIsWarp4()==3) // V1.0.5 (2006-05-29) [pr] 452 && fUniOK 453 ) 387 454 { 388 455 UconvObject uconv_object; 389 456 390 if ( UniCreateUconvObject((UniChar *)L"",391 &uconv_object) == ULS_SUCCESS)457 if (G_UniCreateUconvObject((UniChar *)L"", 458 &uconv_object) == ULS_SUCCESS) 392 459 { 393 460 LocaleObject locale_object; 394 461 395 if ( UniCreateLocaleObject(UNI_UCS_STRING_POINTER,396 (UniChar *)L"",397 &locale_object) == ULS_SUCCESS)462 if (G_UniCreateLocaleObject(UNI_UCS_STRING_POINTER, 463 (UniChar *)L"", 464 &locale_object) == ULS_SUCCESS) 398 465 { 399 466 int i; … … 414 481 UniChar *pItem; 415 482 416 if ( UniQueryLocaleItem(locale_object,417 itemList[i].lclItem,418 &pItem) == ULS_SUCCESS)483 if (G_UniQueryLocaleItem(locale_object, 484 itemList[i].lclItem, 485 &pItem) == ULS_SUCCESS) 419 486 { 420 int iLen = UniStrlen(pItem) + 1;487 int iLen = G_UniStrlen(pItem) + 1; 421 488 PSZ pszResult = malloc(iLen); 422 489 423 if ( UniStrFromUcs(uconv_object,424 pszResult,425 pItem,426 iLen) == ULS_SUCCESS)490 if (G_UniStrFromUcs(uconv_object, 491 pszResult, 492 pItem, 493 iLen) == ULS_SUCCESS) 427 494 { 428 495 switch(itemList[i].iType) … … 443 510 444 511 free(pszResult); 445 UniFreeMem(pItem);512 G_UniFreeMem(pItem); 446 513 } 447 514 } 448 515 449 UniFreeLocaleObject(locale_object);516 G_UniFreeLocaleObject(locale_object); 450 517 } 451 518 452 UniFreeUconvObject(uconv_object);519 G_UniFreeUconvObject(uconv_object); 453 520 } 454 521 } … … 493 560 *@@changed V1.0.4 (2005-10-29) [pr]: Rewritten to prevent memory leaks and errors 494 561 *@@changed V1.0.5 (2006-05-29) [pr]: Read Country rather than Locale settings on Warp 4 FP13+ @@fixes 614 562 *@@changed WarpIN V1.0.15 (2007-03-26) [pr]: Rewritten to load UCONV/LIBUNI functions dynamically @@fixes 936 495 563 */ 496 564 … … 501 569 PCOUNTRYSETTINGS pcs = &pcs2->cs; 502 570 503 if (doshIsWarp4()==3) // V1.0.5 (2006-05-29) [pr] 571 if ( (doshIsWarp4()==3) 572 && (!fUniResolved) 573 ) 574 { 575 HMODULE hmodUCONV = NULLHANDLE, 576 hmodLIBUNI = NULLHANDLE; 577 578 fUniResolved = TRUE; 579 if ( (doshResolveImports("UCONV.DLL", 580 &hmodUCONV, 581 G_aResolveFromUCONV, 582 sizeof(G_aResolveFromUCONV) / sizeof(G_aResolveFromUCONV[0])) 583 == NO_ERROR) 584 && (doshResolveImports("LIBUNI.DLL", 585 &hmodLIBUNI, 586 G_aResolveFromLIBUNI, 587 sizeof(G_aResolveFromLIBUNI) / sizeof(G_aResolveFromLIBUNI[0])) 588 == NO_ERROR) 589 ) 590 fUniOK = TRUE; 591 } 592 593 if ( (doshIsWarp4()==3) // V1.0.5 (2006-05-29) [pr] 594 && fUniOK 595 ) 504 596 { 505 597 UconvObject uconv_object; 506 598 507 if ( UniCreateUconvObject((UniChar *)L"",508 &uconv_object) == ULS_SUCCESS)599 if (G_UniCreateUconvObject((UniChar *)L"", 600 &uconv_object) == ULS_SUCCESS) 509 601 { 510 602 LocaleObject locale_object; 511 603 512 if ( UniCreateLocaleObject(UNI_UCS_STRING_POINTER,513 (UniChar *)L"",514 &locale_object) == ULS_SUCCESS)604 if (G_UniCreateLocaleObject(UNI_UCS_STRING_POINTER, 605 (UniChar *)L"", 606 &locale_object) == ULS_SUCCESS) 515 607 { 516 608 int i; … … 535 627 UniChar *pItem; 536 628 537 if ( UniQueryLocaleItem(locale_object,538 itemList[i].lclItem,539 &pItem) == ULS_SUCCESS)629 if (G_UniQueryLocaleItem(locale_object, 630 itemList[i].lclItem, 631 &pItem) == ULS_SUCCESS) 540 632 { 541 int iLen = UniStrlen(pItem) + 1;633 int iLen = G_UniStrlen(pItem) + 1; 542 634 PSZ pszResult = malloc(iLen); 543 635 544 if ( UniStrFromUcs(uconv_object,545 pszResult,546 pItem,547 iLen) == ULS_SUCCESS)636 if (G_UniStrFromUcs(uconv_object, 637 pszResult, 638 pItem, 639 iLen) == ULS_SUCCESS) 548 640 { 549 641 switch(itemList[i].iType) … … 564 656 565 657 free(pszResult); 566 UniFreeMem(pItem);658 G_UniFreeMem(pItem); 567 659 } 568 660 } 569 661 570 UniFreeLocaleObject(locale_object);662 G_UniFreeLocaleObject(locale_object); 571 663 } 572 664 573 UniFreeUconvObject(uconv_object);665 G_UniFreeUconvObject(uconv_object); 574 666 } 575 667 }
Note:
See TracChangeset
for help on using the changeset viewer.