Changeset 184 for trunk/src/helpers/nls.c
- Timestamp:
- Jul 5, 2002, 9:13:36 AM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/helpers/nls.c
r174 r184 85 85 86 86 BOOL G_afLeadByte[MAX_LEADBYTE] = {0}; 87 ULONG G_fDBCS = -1; // not queried yet87 ULONG G_fDBCS = 2; // not queried yet 88 88 COUNTRYCODE G_cc = { 0, 0 }; 89 89 DBCSVECTOR G_aDBCSVector[8]; … … 94 94 * 95 95 *@@added V0.9.19 (2002-06-13) [umoeller] 96 *@@changed V0.9.20 (2002-07-03) [umoeller]: fixed, this never worked 96 97 */ 97 98 98 99 BOOL nlsDBCS(VOID) 99 100 { 100 int i;101 102 if (G_fDBCS != -1)101 APIRET arc; 102 103 if (G_fDBCS != 2) 103 104 // already queried: 104 105 return G_fDBCS; 105 106 106 if (DosQueryDBCSEnv(8 * sizeof(DBCSVECTOR), 107 &G_cc, 108 (PCHAR)G_aDBCSVector)) 107 // V0.9.20 (2002-07-03) [umoeller] 108 // assume a non-DBCS system UNLESS the below 109 // loop gives us something meaningful; even 110 // on non-DBCS systems like mine, DosQueryDBCSEnv 111 // does not return an error 112 G_fDBCS = FALSE; 113 114 if (arc = DosQueryDBCSEnv(8 * sizeof(DBCSVECTOR), 115 &G_cc, 116 (PCHAR)G_aDBCSVector)) 117 { 109 118 // not DBCS: 110 return (G_fDBCS = FALSE); 111 112 for (i = 0; 113 i < 8; 114 ++i) 115 { 116 if ( (G_aDBCSVector[i].bLow) 117 && (G_aDBCSVector[i].bHigh) 118 ) 119 _PmpfF(("DosQueryDBCSEnv returned arc %d", arc)); 120 } 121 else 122 { 123 int i; 124 for (i = 0; 125 i < 8; 126 ++i) 119 127 { 120 int n; 121 for (n = G_aDBCSVector[i].bLow; 122 n <= G_aDBCSVector[i].bHigh; 123 ++n) 124 G_afLeadByte[n] = TRUE; 125 G_fDBCS = TRUE; 128 if ( (G_aDBCSVector[i].bLow) 129 && (G_aDBCSVector[i].bHigh) 130 ) 131 { 132 int n; 133 for (n = G_aDBCSVector[i].bLow; 134 n <= G_aDBCSVector[i].bHigh; 135 ++n) 136 G_afLeadByte[n] = TRUE; 137 G_fDBCS = TRUE; 138 } 139 else 140 break; 126 141 } 127 else128 break;129 142 } 130 143 … … 342 355 * 343 356 * Use nlsThousandsDouble for "double" values. 357 * 358 *@@changed V0.9.20 (2002-07-03) [umoeller]: optimized 344 359 */ 345 360 … … 350 365 USHORT ust, uss, usc; 351 366 CHAR szTemp[40]; 352 sprintf(szTemp, "%lu", ul);367 usc = sprintf(szTemp, "%lu", ul); // V0.9.20 (2002-07-03) [umoeller] 353 368 354 369 ust = 0; 355 usc = strlen(szTemp);370 // usc = strlen(szTemp); 356 371 for (uss = 0; uss < usc; uss++) 357 372 { … … 367 382 pszTarget[ust] = '\0'; 368 383 369 return (pszTarget);384 return pszTarget; 370 385 } 371 386 … … 382 397 CHAR cThousands) // in: separator char (e.g. '.') 383 398 { 384 return (nlsThousandsULong(pszTarget, ul, cThousands));399 return nlsThousandsULong(pszTarget, ul, cThousands); 385 400 } 386 401 … … 389 404 * like nlsThousandsULong, but for a "double" 390 405 * value. Note that after-comma values are truncated. 406 * 407 *@@changed V0.9.20 (2002-07-03) [umoeller]: optimized 391 408 */ 392 409 … … 397 414 USHORT ust, uss, usc; 398 415 CHAR szTemp[40]; 399 sprintf(szTemp, "%.0f", floor(dbl));416 usc = sprintf(szTemp, "%.0f", floor(dbl)); // V0.9.20 (2002-07-03) [umoeller] 400 417 401 418 ust = 0; 402 usc = strlen(szTemp);419 // usc = strlen(szTemp); 403 420 for (uss = 0; uss < usc; uss++) 404 421 { … … 414 431 pszTarget[ust] = '\0'; 415 432 416 return (pszTarget);433 return pszTarget; 417 434 } 418 435 … … 424 441 * 425 442 *@@added V0.9.6 (2000-11-12) [pr] 443 *@@changed V0.9.20 (2002-07-03) [umoeller]: now using PCSZ pcszUnits 426 444 */ 427 445 428 446 PSZ nlsVariableDouble(PSZ pszTarget, 429 447 double dbl, 430 P SZ pszUnits,448 PCSZ pcszUnits, 431 449 CHAR cThousands) 432 450 { 433 451 if (dbl < 100.0) 434 sprintf(pszTarget, "%.2f%s", dbl, p szUnits);452 sprintf(pszTarget, "%.2f%s", dbl, pcszUnits); 435 453 else 436 454 if (dbl < 1000.0) 437 sprintf(pszTarget, "%.1f%s", dbl, p szUnits);455 sprintf(pszTarget, "%.1f%s", dbl, pcszUnits); 438 456 else 439 457 strcat(nlsThousandsDouble(pszTarget, dbl, cThousands), 440 p szUnits);441 442 return (pszTarget);458 pcszUnits); 459 460 return pszTarget; 443 461 } 444 462 … … 700 718 cc.country = 0; // use system country code 701 719 cc.codepage = 0; // use process default codepage 702 return (DosMapCase(ulLength,703 704 psz));720 return DosMapCase(ulLength, 721 &cc, 722 psz); 705 723 } 706 724 } 707 725 708 return (ERROR_INVALID_PARAMETER);709 } 710 711 726 return ERROR_INVALID_PARAMETER; 727 } 728 729
Note:
See TracChangeset
for help on using the changeset viewer.