Changeset 32 for rxuls/trunk/rxuls.c
- Timestamp:
- Jul 11, 2016, 2:43:58 PM (9 years ago)
- File:
-
- 1 edited
-
rxuls/trunk/rxuls.c (modified) (52 diffs)
Legend:
- Unmodified
- Added
- Removed
-
rxuls/trunk/rxuls.c
r28 r32 52 52 #include <rexxsaa.h> 53 53 54 #include "shfuncs.h" 55 54 56 55 57 // MACROS … … 64 66 65 67 #define SZ_LIBRARY_NAME "RXULS" // Name of this library 66 #define SZ_ERROR_NAME "ULSERR" // REXX variable used to store error codes68 //#define SZ_ERROR_NAME "ULSERR" // REXX variable used to store error codes 67 69 68 70 #define US_VERSION_MAJOR 0 // Major version number of this library 69 #define US_VERSION_MINOR 5// Minor version number of this library70 #define US_VERSION_REFRESH 9// Refresh level of this library71 #define US_VERSION_MINOR 6 // Minor version number of this library 72 #define US_VERSION_REFRESH 0 // Refresh level of this library 71 73 72 74 #define US_CPSPEC_MAXZ 72 // Maximum length of a conversion specifier 73 75 #define LOCALE_BUF_MAX 4096 // Maximum length of the locale list 74 76 75 #define US_COMPOUND_MAXZ 250 // Maximum length of a compound variable 77 #ifdef NO_SHARED_SOURCE 78 #define US_COMPOUND_MAXZ 250 // Maximum length of a compound variable 79 #define US_ERRSTR_MAXZ 250 // Maximum length of an error string 80 #endif 76 81 #define US_INTEGER_MAXZ 12 // Maximum length of an integer string 77 82 #define US_STEM_MAXZ ( US_COMPOUND_MAXZ - US_INTEGER_MAXZ ) // Maximum length of a stem 78 #define US_ERRSTR_MAXZ 250 // Maximum length of an error string79 83 #define US_STRFTIME_MAXZ 256 // Maximum length of a formatted time string 80 84 … … 134 138 ULONG CreateUconvObject( UconvObject *uco, ULONG ulCP, USHORT fEndian, USHORT fMap, USHORT fPath, USHORT ucSubChar ); 135 139 BOOL InputStringToUnicode( RXSTRING rxstring, UniChar **psuOutput, UconvObject uconv, ULONG ulSourceCP ); 136 BOOL SaveResultString( PRXSTRING prsResult, PCH pchBytes, ULONG ulBytes ); 137 void WriteStemElement( PSZ pszStem, ULONG ulIndex, PSZ pszValue ); 138 void WriteErrorCode( ULONG ulError, PSZ pszContext ); 140 #ifdef NO_SHARED_SOURCE 141 BOOL SaveResultString( PRXSTRING prsResult, PCSZ pchBytes, ULONG ulBytes ); 142 void WriteStemElement( PCSZ pszStem, ULONG ulIndex, PCSZ pszValue ); 143 void WriteErrorCode( ULONG ulError, PCSZ pszContext ); 144 #endif 139 145 140 146 … … 171 177 RexxRegisterFunctionDll( RxFunctionTbl[i], SZ_LIBRARY_NAME, RxFunctionTbl[i] ); 172 178 173 MAKERXSTRING( *prsResult, "", 0 );179 SaveResultString( prsResult, NULL, 0 ); 174 180 return ( 0 ); 175 181 } … … 193 199 194 200 if ( argc > 0 ) return ( 40 ); 201 RexxDeregisterFunction("ULSLoadFuncs"); 195 202 entries = sizeof(RxFunctionTbl) / sizeof(PSZ); 196 203 for ( i = 0; i < entries; i++ ) 197 204 RexxDeregisterFunction( RxFunctionTbl[i] ); 198 199 MAKERXSTRING( *prsResult, "", 0 ); 205 SaveResultString( prsResult, NULL, 0 ); 200 206 return ( 0 ); 201 207 } … … 218 224 219 225 if ( argc > 0 ) return ( 40 ); 220 sprintf( szVersion, "% d.%d.%d", US_VERSION_MAJOR, US_VERSION_MINOR, US_VERSION_REFRESH );221 222 MAKERXSTRING( *prsResult, szVersion, strlen(szVersion) );226 sprintf( szVersion, "%u.%u.%u", US_VERSION_MAJOR, US_VERSION_MINOR, US_VERSION_REFRESH ); 227 228 SaveResultString( prsResult, szVersion, strlen(szVersion) ); 223 229 return ( 0 ); 224 230 } … … 301 307 // If source and target codepages are the same, just return the input string 302 308 if ( ulSourceCP == ulTargetCP ) { 303 MAKERXSTRING( *prsResult, argv[0].strptr, argv[0].strlength );309 SaveResultString( prsResult, argv[0].strptr, argv[0].strlength ); 304 310 return ( 0 ); 305 311 } … … 347 353 } 348 354 if ( ! SaveResultString( prsResult, pszFinal, ulBytes )) { 349 MAKERXSTRING( *prsResult, "", 0 );355 SaveResultString( prsResult, NULL, 0 ); 350 356 } 351 357 free( pszFinal ); … … 369 375 // Return the final converted string 370 376 if ( ! SaveResultString( prsResult, pszFinal, strlen(pszFinal) )) { 371 MAKERXSTRING( *prsResult, "", 0 );377 SaveResultString( prsResult, NULL, 0 ); 372 378 } 373 379 } else { 374 380 // UniUconvFromUcs failed 375 381 WriteErrorCode( ulRC, "UniUconvFromUcs"); 376 MAKERXSTRING( *prsResult, "", 0 );382 SaveResultString( prsResult, NULL, 0 ); 377 383 } 378 384 free( pszFinal ); … … 382 388 // Failed to create target UconvObject 383 389 WriteErrorCode( ulRC, "UniCreateUconvObject"); 384 MAKERXSTRING( *prsResult, "", 0 );390 SaveResultString( prsResult, NULL, 0 ); 385 391 } 386 392 } … … 389 395 } else { 390 396 // Conversion to UCS failed 391 MAKERXSTRING( *prsResult, "", 0 );397 SaveResultString( prsResult, NULL, 0 ); 392 398 } 393 399 … … 398 404 // Failed to create source UconvObject 399 405 WriteErrorCode( ulRC, "UniCreateUconvObject"); 400 MAKERXSTRING( *prsResult, "", 0 );406 SaveResultString( prsResult, NULL, 0 ); 401 407 } 402 408 … … 446 452 } else 447 453 sprintf( szLocale, "%ls", suLocale ); 448 MAKERXSTRING( *prsResult, szLocale, strlen(szLocale) );454 SaveResultString( prsResult, szLocale, strlen(szLocale) ); 449 455 } else { 450 456 WriteErrorCode( ulRC, "UniMapCtryToLocale"); 451 MAKERXSTRING( *prsResult, "", 0 );457 SaveResultString( prsResult, NULL, 0 ); 452 458 } 453 459 … … 528 534 sprintf( szNumber, "%d", ulCount ); 529 535 WriteStemElement( szStem, 0, szNumber ); 530 MAKERXSTRING( *prsResult, szNumber, strlen(szNumber) );536 SaveResultString( prsResult, szNumber, strlen(szNumber) ); 531 537 532 538 if ( uconv != NULL ) UniFreeUconvObject( uconv ); … … 534 540 } else { 535 541 WriteErrorCode( ulRC, "UniQueryLocaleList"); 536 MAKERXSTRING( *prsResult, "", 0 );542 SaveResultString( prsResult, NULL, 0 ); 537 543 } 538 544 … … 660 666 if ( ulRC != ULS_SUCCESS ) { 661 667 WriteErrorCode( ulRC, "UniUconvToUcs"); 662 MAKERXSTRING( *prsResult, "", 0 );668 SaveResultString( prsResult, NULL, 0 ); 663 669 } 664 670 } … … 689 695 } else { 690 696 WriteErrorCode( ulRC, "UniScanForAttr"); 691 MAKERXSTRING( *prsResult, "", 0 );697 SaveResultString( prsResult, NULL, 0 ); 692 698 } 693 699 … … 695 701 } else { 696 702 WriteErrorCode( ulRC, "UniCreateAttrObject"); 697 MAKERXSTRING( *prsResult, "", 0 );703 SaveResultString( prsResult, NULL, 0 ); 698 704 } 699 705 } else { 700 706 if ( psuAttrib ) WriteErrorCode( 0, "mbstowcs"); 701 707 else WriteErrorCode( 0, "calloc"); 702 MAKERXSTRING( *prsResult, "", 0 );708 SaveResultString( prsResult, NULL, 0 ); 703 709 } 704 710 if ( psuAttrib ) free( psuAttrib ); … … 708 714 } else { 709 715 WriteErrorCode( ulRC, "UniCreateUconvObject"); 710 MAKERXSTRING( *prsResult, "", 0 );716 SaveResultString( prsResult, NULL, 0 ); 711 717 } 712 718 … … 716 722 } else { 717 723 WriteErrorCode( ulRC, "UniCreateLocaleObject"); 718 MAKERXSTRING( *prsResult, "", 0 );724 SaveResultString( prsResult, NULL, 0 ); 719 725 } 720 726 … … 798 804 if ( ulRC != ULS_SUCCESS ) { 799 805 WriteErrorCode( ulRC, "UniUconvToUcs"); 800 MAKERXSTRING( *prsResult, "", 0 );806 SaveResultString( prsResult, NULL, 0 ); 801 807 } 802 808 } … … 813 819 // Now do the query and return the result 814 820 if ( UniQueryCharAttr( attrib, suChar[0] ) == 0 ) { 815 MAKERXSTRING( *prsResult, "0", 1 );821 SaveResultString( prsResult, PSZ_ZERO, 1 ); 816 822 } else { 817 MAKERXSTRING( *prsResult, "1", 1 );823 SaveResultString( prsResult, PSZ_ONE, 1 ); 818 824 } 819 825 UniFreeAttrObject( attrib ); … … 821 827 } else { 822 828 WriteErrorCode( ulRC, "UniCreateAttrObject"); 823 MAKERXSTRING( *prsResult, "", 0 );829 SaveResultString( prsResult, NULL, 0 ); 824 830 } 825 831 } else { 826 832 if ( psuAttrib ) WriteErrorCode( 0, "mbstowcs"); 827 833 else WriteErrorCode( 0, "calloc"); 828 MAKERXSTRING( *prsResult, "", 0 );834 SaveResultString( prsResult, NULL, 0 ); 829 835 } 830 836 if ( psuAttrib ) free( psuAttrib ); … … 834 840 } else { 835 841 WriteErrorCode( ulRC, "UniCreateUconvObject"); 836 MAKERXSTRING( *prsResult, "", 0 );842 SaveResultString( prsResult, NULL, 0 ); 837 843 } 838 844 UniFreeLocaleObject( locale ); … … 840 846 } else { 841 847 WriteErrorCode( ulRC, "UniCreateLocaleObject"); 842 MAKERXSTRING( *prsResult, "", 0 );848 SaveResultString( prsResult, NULL, 0 ); 843 849 } 844 850 … … 1063 1069 } 1064 1070 if ( ! SaveResultString( prsResult, pszFinal, ulBytes )) { 1065 MAKERXSTRING( *prsResult, "", 0 );1071 SaveResultString( prsResult, NULL, 0 ); 1066 1072 } 1067 1073 free( pszFinal ); … … 1086 1092 // Return the final converted string 1087 1093 if ( ! SaveResultString( prsResult, pszFinal, strlen(pszFinal) )) { 1088 MAKERXSTRING( *prsResult, "", 0 );1094 SaveResultString( prsResult, NULL, 0 ); 1089 1095 } 1090 1096 UniFreeUconvObject( uconvCP ); … … 1092 1098 // UniUconvFromUcs failed 1093 1099 WriteErrorCode( ulRC, "UniUconvFromUcs"); 1094 MAKERXSTRING( *prsResult, "", 0 );1100 SaveResultString( prsResult, NULL, 0 ); 1095 1101 } 1096 1102 free( pszFinal ); … … 1099 1105 // Failed to create UconvObject 1100 1106 WriteErrorCode( ulRC, "UniCreateUconvObject"); 1101 MAKERXSTRING( *prsResult, "", 0 );1107 SaveResultString( prsResult, NULL, 0 ); 1102 1108 } 1103 1109 } … … 1110 1116 } else { 1111 1117 WriteErrorCode( ulRC, "UniCreateLocaleObject"); 1112 MAKERXSTRING( *prsResult, "", 0 );1118 SaveResultString( prsResult, NULL, 0 ); 1113 1119 } 1114 1120 … … 1211 1217 if ( ulRC != ULS_SUCCESS ) { 1212 1218 WriteErrorCode( ulRC, "UniUconvToUcs"); 1213 MAKERXSTRING( *prsResult, "", 0 );1219 SaveResultString( prsResult, NULL, 0 ); 1214 1220 } 1215 1221 } … … 1244 1250 } 1245 1251 if ( ! SaveResultString( prsResult, pszFinal, ulBytes )) { 1246 MAKERXSTRING( *prsResult, "", 0 );1252 SaveResultString( prsResult, NULL, 0 ); 1247 1253 } 1248 1254 } else { … … 1260 1266 if ( ulRC == ULS_SUCCESS ) { 1261 1267 if ( ! SaveResultString( prsResult, pszFinal, strlen(pszFinal) )) { 1262 MAKERXSTRING( *prsResult, "", 0 );1268 SaveResultString( prsResult, NULL, 0 ); 1263 1269 } 1264 1270 } else { 1265 1271 WriteErrorCode( ulRC, "UniUconvFromUcs"); 1266 MAKERXSTRING( *prsResult, "", 0 );1272 SaveResultString( prsResult, NULL, 0 ); 1267 1273 } 1268 1274 } … … 1270 1276 } else { 1271 1277 WriteErrorCode( ulRC, "UniTransformStr"); 1272 MAKERXSTRING( *prsResult, "", 0 );1278 SaveResultString( prsResult, NULL, 0 ); 1273 1279 } 1274 1280 free( psuFinal ); … … 1277 1283 } else { 1278 1284 WriteErrorCode( ulRC, "UniCreateTransformObject"); 1279 MAKERXSTRING( *prsResult, "", 0 );1285 SaveResultString( prsResult, NULL, 0 ); 1280 1286 } 1281 1287 } else { 1282 1288 if ( psuXform ) WriteErrorCode( 0, "mbstowcs"); 1283 1289 else WriteErrorCode( 0, "calloc"); 1284 MAKERXSTRING( *prsResult, "", 0 );1290 SaveResultString( prsResult, NULL, 0 ); 1285 1291 } 1286 1292 if ( psuXform ) free( psuXform ); … … 1292 1298 } else { 1293 1299 WriteErrorCode( ulRC, "UniCreateUconvObject"); 1294 MAKERXSTRING( *prsResult, "", 0 );1300 SaveResultString( prsResult, NULL, 0 ); 1295 1301 } 1296 1302 UniFreeLocaleObject( locale ); … … 1298 1304 } else { 1299 1305 WriteErrorCode( ulRC, "UniCreateLocaleObject"); 1300 MAKERXSTRING( *prsResult, "", 0 );1306 SaveResultString( prsResult, NULL, 0 ); 1301 1307 } 1302 1308 … … 1456 1462 WriteErrorCode( ERRORIDERROR(WinGetLastError(hab)), "WinSetClipbrdData"); 1457 1463 else 1458 MAKERXSTRING( *prsResult, "", 0 );1464 SaveResultString( prsResult, NULL, 0 ); 1459 1465 } else { 1460 1466 WriteErrorCode( ulRC, "DosAllocSharedMem"); 1461 MAKERXSTRING( *prsResult, "", 0 );1467 SaveResultString( prsResult, NULL, 0 ); 1462 1468 } 1463 1469 WinCloseClipbrd( hab ); 1464 1470 } else { 1465 1471 WriteErrorCode( ulRC, "WinOpenClipbrd"); 1466 MAKERXSTRING( *prsResult, "", 0 );1472 SaveResultString( prsResult, NULL, 0 ); 1467 1473 } 1468 1474 … … 1476 1482 // UniUconvToUcs failed 1477 1483 WriteErrorCode( ulRC, "UniUconvFromUcs"); 1478 MAKERXSTRING( *prsResult, "", 0 );1484 SaveResultString( prsResult, NULL, 0 ); 1479 1485 } 1480 1486 … … 1485 1491 // Failed to create source UconvObject 1486 1492 WriteErrorCode( ulRC, "UniCreateUconvObject"); 1487 MAKERXSTRING( *prsResult, "", 0 );1493 SaveResultString( prsResult, NULL, 0 ); 1488 1494 } 1489 1495 … … 1619 1625 } 1620 1626 if ( ! SaveResultString( prsResult, pszFinal, ulBytes )) { 1621 MAKERXSTRING( *prsResult, "", 0 );1627 SaveResultString( prsResult, NULL, 0 ); 1622 1628 } 1623 1629 free( pszFinal ); … … 1641 1647 // Return the final converted string 1642 1648 if ( ! SaveResultString( prsResult, pszFinal, strlen(pszFinal) )) { 1643 MAKERXSTRING( *prsResult, "", 0 );1649 SaveResultString( prsResult, NULL, 0 ); 1644 1650 } 1645 1651 } else { 1646 1652 // UniUconvFromUcs failed 1647 1653 WriteErrorCode( ulRC, "UniUconvFromUcs"); 1648 MAKERXSTRING( *prsResult, "", 0 );1654 SaveResultString( prsResult, NULL, 0 ); 1649 1655 } 1650 1656 free( pszFinal ); … … 1654 1660 // Failed to create target UconvObject 1655 1661 WriteErrorCode( ulRC, "UniCreateUconvObject"); 1656 MAKERXSTRING( *prsResult, "", 0 );1662 SaveResultString( prsResult, NULL, 0 ); 1657 1663 } 1658 1664 } 1659 1665 } else { 1660 1666 // Either no text exists, or clipboard is not readable 1661 MAKERXSTRING( *prsResult, "", 0 );1667 SaveResultString( prsResult, NULL, 0 ); 1662 1668 } 1663 1669 … … 1665 1671 } else { 1666 1672 WriteErrorCode( ulRC, "WinOpenClipbrd"); 1667 MAKERXSTRING( *prsResult, "", 0 );1673 SaveResultString( prsResult, NULL, 0 ); 1668 1674 } 1669 1675 … … 1741 1747 if ( ulRC != ULS_SUCCESS ) { 1742 1748 WriteErrorCode( ulRC, "UniStrToUcs"); 1743 MAKERXSTRING( *prsResult, "", 0 );1749 SaveResultString( prsResult, NULL, 0 ); 1744 1750 return 0; 1745 1751 } 1746 1752 } else { 1747 1753 WriteErrorCode( ulRC, "UniCreateUconvObject"); 1748 MAKERXSTRING( *prsResult, "", 0 );1754 SaveResultString( prsResult, NULL, 0 ); 1749 1755 return 0; 1750 1756 } … … 1778 1784 free( psuFormat ); 1779 1785 WriteErrorCode( ulRC, "UniCreateLocaleObject"); 1780 MAKERXSTRING( *prsResult, "", 0 );1786 SaveResultString( prsResult, NULL, 0 ); 1781 1787 return 0; 1782 1788 } … … 1815 1821 UniFreeLocaleObject( locale ); 1816 1822 WriteErrorCode( 0, "gmtime"); 1817 MAKERXSTRING( *prsResult, "", 0 );1823 SaveResultString( prsResult, NULL, 0 ); 1818 1824 return ( 0 ); 1819 1825 } … … 1823 1829 UniFreeLocaleObject( locale ); 1824 1830 WriteErrorCode( 0, "localtime"); 1825 MAKERXSTRING( *prsResult, "", 0 );1831 SaveResultString( prsResult, NULL, 0 ); 1826 1832 return ( 0 ); 1827 1833 } … … 1842 1848 { 1843 1849 if ( ! SaveResultString( prsResult, pszTime, strlen(pszTime) )) 1844 MAKERXSTRING( *prsResult, "", 0 );1850 SaveResultString( prsResult, NULL, 0 ); 1845 1851 } else { 1846 1852 WriteErrorCode( ulRC, "UniUconvFromUcs"); 1847 MAKERXSTRING( *prsResult, "", 0 );1853 SaveResultString( prsResult, NULL, 0 ); 1848 1854 } 1849 1855 free( pszTime ); … … 1852 1858 } else { 1853 1859 WriteErrorCode( ulRC, "UniCreateUconvObject"); 1854 MAKERXSTRING( *prsResult, "", 0 );1860 SaveResultString( prsResult, NULL, 0 ); 1855 1861 } 1856 1862 1857 1863 } else { 1858 1864 WriteErrorCode( ulRC, "UniStrftime"); 1859 MAKERXSTRING( *prsResult, "", 0 );1865 SaveResultString( prsResult, NULL, 0 ); 1860 1866 } 1861 1867 … … 2072 2078 2073 2079 2080 #ifdef NO_SHARED_SOURCE 2081 2074 2082 /* ------------------------------------------------------------------------- * 2075 2083 * SaveResultString * … … 2177 2185 } 2178 2186 2179 2187 #endif
Note:
See TracChangeset
for help on using the changeset viewer.
