Changeset 349 for branches/branch-1-0/src/helpers/nls.c
- Timestamp:
- Mar 27, 2007, 9:32:24 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/branch-1-0/src/helpers/nls.c
r317 r349 22 22 23 23 /* 24 * Copyright (C) 1997-200 2Ulrich 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 /* … … 376 418 *@@changed V1.0.4 (2005-10-29) [pr]: Rewritten to prevent memory leaks and errors 377 419 *@@changed V1.0.5 (2006-05-29) [pr]: Read Country rather than Locale settings on Warp 4 FP13+ @@fixes 614 420 *@@changed WarpIN V1.0.15 (2007-03-26) [pr]: Rewritten to load UCONV/LIBUNI functions dynamically @@fixes 936 378 421 */ 379 422 … … 382 425 if (pcs) 383 426 { 384 if (doshIsWarp4()==3) // V1.0.5 (2006-05-29) [pr] 427 if ( (doshIsWarp4()==3) 428 && (!fUniResolved) 429 ) 430 { 431 HMODULE hmodUCONV = NULLHANDLE, 432 hmodLIBUNI = NULLHANDLE; 433 434 fUniResolved = TRUE; 435 if ( (doshResolveImports("UCONV.DLL", 436 &hmodUCONV, 437 G_aResolveFromUCONV, 438 sizeof(G_aResolveFromUCONV) / sizeof(G_aResolveFromUCONV[0])) 439 == NO_ERROR) 440 && (doshResolveImports("LIBUNI.DLL", 441 &hmodLIBUNI, 442 G_aResolveFromLIBUNI, 443 sizeof(G_aResolveFromLIBUNI) / sizeof(G_aResolveFromLIBUNI[0])) 444 == NO_ERROR) 445 ) 446 fUniOK = TRUE; 447 } 448 449 if ( (doshIsWarp4()==3) // V1.0.5 (2006-05-29) [pr] 450 && fUniOK 451 ) 385 452 { 386 453 UconvObject uconv_object; 387 454 388 if ( UniCreateUconvObject((UniChar *)L"",389 &uconv_object) == ULS_SUCCESS)455 if (G_UniCreateUconvObject((UniChar *)L"", 456 &uconv_object) == ULS_SUCCESS) 390 457 { 391 458 LocaleObject locale_object; 392 459 393 if ( UniCreateLocaleObject(UNI_UCS_STRING_POINTER,394 (UniChar *)L"",395 &locale_object) == ULS_SUCCESS)460 if (G_UniCreateLocaleObject(UNI_UCS_STRING_POINTER, 461 (UniChar *)L"", 462 &locale_object) == ULS_SUCCESS) 396 463 { 397 464 int i; … … 416 483 UniChar *pItem; 417 484 418 if ( UniQueryLocaleItem(locale_object,419 itemList[i].lclItem,420 &pItem) == ULS_SUCCESS)485 if (G_UniQueryLocaleItem(locale_object, 486 itemList[i].lclItem, 487 &pItem) == ULS_SUCCESS) 421 488 { 422 int iLen = UniStrlen(pItem) + 1;489 int iLen = G_UniStrlen(pItem) + 1; 423 490 PSZ pszResult = malloc(iLen); 424 491 425 if ( UniStrFromUcs(uconv_object,426 pszResult,427 pItem,428 iLen) == ULS_SUCCESS)492 if (G_UniStrFromUcs(uconv_object, 493 pszResult, 494 pItem, 495 iLen) == ULS_SUCCESS) 429 496 { 430 497 switch(itemList[i].iType) … … 441 508 442 509 free(pszResult); 443 UniFreeMem(pItem);510 G_UniFreeMem(pItem); 444 511 } 445 512 } 446 513 447 UniFreeLocaleObject(locale_object);514 G_UniFreeLocaleObject(locale_object); 448 515 } 449 516 450 UniFreeUconvObject(uconv_object);517 G_UniFreeUconvObject(uconv_object); 451 518 } 452 519 }
Note:
See TracChangeset
for help on using the changeset viewer.