- Timestamp:
- Jul 11, 2016, 2:43:58 PM (9 years ago)
- Location:
- rxprtutl/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
rxprtutl/trunk/Makefile
r7 r32 1 1 # Makefile for IBM C Compiler 3.x and NMAKE32. 2 3 SHARED = ..\..\shared 4 2 5 CC = icc 3 6 LINK = ilink 4 CFLAGS = /Ss /Q /Wuse /Gm /Gd 7 CFLAGS = /Ss /Q /Wuse /Gm /Gd /I$(SHARED) /DSZ_ERROR_NAME="\"RPUERROR\"" 5 8 LFLAGS = /NOLOGO /MAP 6 9 NAME = rxprtutl … … 9 12 # Set environment variable DEBUG (=anything) to build with debugging symbols 10 13 !ifdef DEBUG 11 12 14 CFLAGS = $(CFLAGS) /Ti /Tm 15 LFLAGS = $(LFLAGS) /DEBUG 13 16 !endif 14 17 15 $(NAME).dll : $(NAME).obj 18 $(NAME).dll : $(NAME).obj shfuncs.obj Makefile 16 19 @makedesc -N"Alex Taylor" -D"REXX Printer Management Utilities" -V"^#define=SZ_VERSION,$(NAME).c" $(NAME).def 17 $(LINK) $(LFLAGS) $(NAME).obj $(NAME).def $(LIBS) /O:$@20 $(LINK) $(LFLAGS) $(NAME).obj shfuncs.obj $(NAME).def $(LIBS) /O:$@ 18 21 @dllrname.exe $@ CPPOM30=OS2OM30 /Q /R 19 22 20 $(NAME).obj : $(NAME).c $(NAME).def23 $(NAME).obj : $(NAME).c {$(SHARED)}shfuncs.h $(NAME).def Makefile 21 24 $(CC) $(CFLAGS) /C /Ge- $(NAME).c 25 26 shfuncs.obj : $(SHARED)\shfuncs.c {$(SHARED)}shfuncs.h Makefile 27 $(CC) $(CFLAGS) /C /Ge- $(SHARED)\shfuncs.c 22 28 23 29 clean : 24 30 if exist $(NAME).dll del $(NAME).dll 25 31 if exist $(NAME).obj del $(NAME).obj 32 if exist shfuncs.obj del shfuncs.obj 26 33 27 -
rxprtutl/trunk/rxprtutl.c
r27 r32 55 55 #include <rexxsaa.h> 56 56 57 #include "shfuncs.h" 58 57 59 58 60 // CONSTANTS 59 61 60 62 #define SZ_LIBRARY_NAME "RXPRTUTL" // Name of this library 61 #define SZ_ERROR_NAME "RPUERROR" // REXX variable used to store error codes63 //#define SZ_ERROR_NAME "RPUERROR" // REXX variable used to store error codes 62 64 #define SZ_VERSION "0.2.4" // Current version of this library 63 65 … … 87 89 88 90 // Maximum string lengths... 89 #define US_COMPOUND_MAXZ 250 // ...of a compound variable 91 #ifdef NO_SHARED_SOURCE 92 #define US_COMPOUND_MAXZ 250 // ...of a compound variable 93 #define US_ERRSTR_MAXZ 250 // ...of an error string 94 #endif 95 90 96 #define US_INTEGER_MAXZ 12 // ...of an integer string 91 97 #define US_STEM_MAXZ ( US_COMPOUND_MAXZ - US_INTEGER_MAXZ ) // ...of a stem 92 #define US_ERRSTR_MAXZ 250 // ...of an error string93 98 #define US_DRVINFO_MAXZ ( CCHMAXPATH + 8 + 32 ) // ...of an driver/port info string 94 99 #define US_PRTINFO_MAXZ 180 // ...of a printer info string … … 122 127 // List of functions to be registered by RPULoadFuncs 123 128 static PSZ RxFunctionTbl[] = { 129 "RPULoadFuncs", // drop only 124 130 "RPUDropFuncs", 125 131 "RPUDeviceDelete", … … 173 179 PSZ GetObjectID( PSZ pszHandle ); 174 180 HOBJECT PrinterObjectHandle( PSZ pszQueueName ); 175 BOOL SaveResultString( PRXSTRING prsResult, PCH pchBytes, ULONG ulBytes );176 181 ULONG UniqueDeviceName( PSZ pszName ); 177 BOOL WriteCompoundVariable( PSZ pszStem, PSZ pszTail, PSZ pszValue ); 178 BOOL WriteSimpleVariable( PSZ pszName, PSZ pszValue ); 179 BOOL WriteStemElement( PSZ pszStem, ULONG ulIndex, PSZ pszValue ); 180 void WriteErrorCode( ULONG ulError, PSZ pszContext ); 181 182 #ifdef NO_SHARED_SOURCE 183 BOOL SaveResultString( PRXSTRING prsResult, PCH pchBytes, ULONG ulBytes ); 184 BOOL WriteCompoundVariable( PSZ pszStem, PSZ pszTail, PSZ pszValue ); 185 // BOOL WriteSimpleVariable( PSZ pszName, PSZ pszValue ); 186 BOOL WriteStemElement( PSZ pszStem, ULONG ulIndex, PSZ pszValue ); 187 void WriteErrorCode( ULONG ulError, PSZ pszContext ); 188 #endif 182 189 183 190 … … 204 211 if ( argc > 0 ) return ( 40 ); 205 212 entries = sizeof(RxFunctionTbl) / sizeof(PSZ); 206 for ( i = 0; i < entries; i++ ) 213 214 // Start from 1 to skip RPULoadFuncs (we don't want to re-register ourselves) 215 for ( i = 1; i < entries; i++ ) 207 216 RexxRegisterFunctionDll( RxFunctionTbl[i], SZ_LIBRARY_NAME, RxFunctionTbl[i] ); 208 217 209 MAKERXSTRING( *prsResult, "", 0 );218 SaveResultString( prsResult, NULL, 0 ); 210 219 return ( 0 ); 211 220 } … … 233 242 RexxDeregisterFunction( RxFunctionTbl[i] ); 234 243 235 MAKERXSTRING( *prsResult, "", 0 );244 SaveResultString( prsResult, NULL, 0 ); 236 245 return ( 0 ); 237 246 } … … 256 265 sprintf( szVersion, "%s", SZ_VERSION ); 257 266 258 MAKERXSTRING( *prsResult, szVersion, strlen(szVersion) );267 SaveResultString( prsResult, szVersion, strlen(szVersion) ); 259 268 return ( 0 ); 260 269 } … … 291 300 if ( rc != NO_ERROR ) { 292 301 WriteErrorCode( rc, "SplDeleteDevice"); 293 MAKERXSTRING( *prsResult, "0", 1 );302 SaveResultString( prsResult, PSZ_ZERO, 1 ); 294 303 return 0; 295 304 } 296 305 297 MAKERXSTRING( *prsResult, "1", 1 );306 SaveResultString( prsResult, PSZ_ONE, 1 ); 298 307 return ( 0 ); 299 308 } … … 346 355 if ( !hab ) { 347 356 WriteErrorCode( 0, "WinInitialize"); 348 MAKERXSTRING( *prsResult, "0", 1 );357 SaveResultString( prsResult, PSZ_ZERO, 1 ); 349 358 return ( 0 ); 350 359 } … … 354 363 if ( !fSuccess ) { 355 364 WriteErrorCode( ERRORIDERROR( WinGetLastError( hab )), "DevQueryDeviceNames"); 356 MAKERXSTRING( *prsResult, "0", 1 );365 SaveResultString( prsResult, PSZ_ZERO, 1 ); 357 366 goto cleanup; 358 367 } 359 368 360 369 // Now get the actual data 370 /* (This originally used malloc() - switched to DosAllocMem() while in the 371 * process of trying to hunt down an intermittent trap. In fact, the trap 372 * was probably caused by a flaw in WriteStemElement() which has since been 373 * fixed.) 374 */ 361 375 #if 1 362 376 rc = DosAllocMem( (PVOID) &aDeviceName, (ULONG) pldn * sizeof( STR32 ), PAG_WRITE | PAG_COMMIT ); 363 377 if ( rc != NO_ERROR ) { 364 378 WriteErrorCode( rc, "DosAllocMem"); 365 MAKERXSTRING( *prsResult, "0", 1 );379 SaveResultString( prsResult, PSZ_ZERO, 1 ); 366 380 goto cleanup; 367 381 } … … 369 383 if ( rc != NO_ERROR ) { 370 384 WriteErrorCode( rc, "DosAllocMem"); 371 MAKERXSTRING( *prsResult, "0", 1 );385 SaveResultString( prsResult, PSZ_ZERO, 1 ); 372 386 DosFreeMem( aDeviceName ); 373 387 goto cleanup; … … 376 390 if ( rc != NO_ERROR ) { 377 391 WriteErrorCode( rc, "DosAllocMem"); 378 MAKERXSTRING( *prsResult, "0", 1 );392 SaveResultString( prsResult, PSZ_ZERO, 1 ); 379 393 DosFreeMem( aDeviceName ); 380 394 DosFreeMem( aDeviceDesc ); … … 385 399 if ( !aDeviceName ) { 386 400 WriteErrorCode( ERROR_NOT_ENOUGH_MEMORY, "malloc"); 387 MAKERXSTRING( *prsResult, "0", 1 );401 SaveResultString( prsResult, PSZ_ZERO, 1 ); 388 402 goto cleanup; 389 403 } … … 391 405 if ( !aDeviceDesc ) { 392 406 WriteErrorCode( ERROR_NOT_ENOUGH_MEMORY, "malloc"); 393 MAKERXSTRING( *prsResult, "0", 1 );407 SaveResultString( prsResult, PSZ_ZERO, 1 ); 394 408 free( aDeviceName ); 395 409 goto cleanup; … … 398 412 if ( !aDataType ) { 399 413 WriteErrorCode( ERROR_NOT_ENOUGH_MEMORY, "malloc"); 400 MAKERXSTRING( *prsResult, "0", 1 );414 SaveResultString( prsResult, PSZ_ZERO, 1 ); 401 415 free( aDeviceName ); 402 416 free( aDeviceDesc ); … … 413 427 414 428 // Return 1 on success 415 MAKERXSTRING( *prsResult, "1", 1 );429 SaveResultString( prsResult, PSZ_ONE, 1 ); 416 430 417 431 #if 1 … … 472 486 if (( rc != ERROR_MORE_DATA ) && ( rc != NERR_BufTooSmall )) { 473 487 WriteErrorCode( rc, "SplEnumPort"); 474 MAKERXSTRING( *prsResult, "0", 1 );488 SaveResultString( prsResult, PSZ_ZERO, 1 ); 475 489 return ( 0 ); 476 490 } … … 480 494 if ( !pbuf ) { 481 495 WriteErrorCode( ERROR_NOT_ENOUGH_MEMORY, "malloc"); 482 MAKERXSTRING( *prsResult, "0", 1 );496 SaveResultString( prsResult, PSZ_ZERO, 1 ); 483 497 return ( 0 ); 484 498 } … … 498 512 sprintf( szNumber, "%u", cReturned ); 499 513 WriteStemElement( szStem, 0, szNumber ); 500 MAKERXSTRING( *prsResult, "1", 1 );514 SaveResultString( prsResult, PSZ_ONE, 1 ); 501 515 } 502 516 else { 503 517 WriteErrorCode( rc, "SplEnumPort"); 504 MAKERXSTRING( *prsResult, "0", 1 );518 SaveResultString( prsResult, PSZ_ZERO, 1 ); 505 519 } 506 520 free( pbuf ); … … 550 564 if (( rc != ERROR_MORE_DATA ) && ( rc != NERR_BufTooSmall )) { 551 565 WriteErrorCode( rc, "SplEnumDriver"); 552 MAKERXSTRING( *prsResult, "0", 1 );566 SaveResultString( prsResult, PSZ_ZERO, 1 ); 553 567 return ( 0 ); 554 568 } … … 558 572 if ( !pbuf ) { 559 573 WriteErrorCode( ERROR_NOT_ENOUGH_MEMORY, "malloc"); 560 MAKERXSTRING( *prsResult, "0", 1 );574 SaveResultString( prsResult, PSZ_ZERO, 1 ); 561 575 return ( 0 ); 562 576 } … … 571 585 sprintf( szNumber, "%u", cReturned ); 572 586 WriteStemElement( szStem, 0, szNumber ); 573 MAKERXSTRING( *prsResult, "1", 1 );587 SaveResultString( prsResult, PSZ_ONE, 1 ); 574 588 } 575 589 else { 576 590 WriteErrorCode( rc, "SplEnumDriver"); 577 MAKERXSTRING( *prsResult, "0", 1 );591 SaveResultString( prsResult, PSZ_ZERO, 1 ); 578 592 } 579 593 free( pbuf ); … … 670 684 { 671 685 WriteErrorCode( rc, "SplEnumPrinter"); 672 MAKERXSTRING( *prsResult, "0", 1 );686 SaveResultString( prsResult, PSZ_ZERO, 1 ); 673 687 return ( 0 ); 674 688 } … … 678 692 if ( !pbEnum ) { 679 693 WriteErrorCode( ERROR_NOT_ENOUGH_MEMORY, "malloc"); 680 MAKERXSTRING( *prsResult, "0", 1 );694 SaveResultString( prsResult, PSZ_ZERO, 1 ); 681 695 return ( 0 ); 682 696 } … … 686 700 if ( rc != NO_ERROR ) { 687 701 WriteErrorCode( rc, "SplEnumPrinter"); 688 MAKERXSTRING( *prsResult, "0", 1 );702 SaveResultString( prsResult, PSZ_ZERO, 1 ); 689 703 goto cleanup; 690 704 } … … 723 737 if (( rc != NO_ERROR ) && ( rc != NERR_BufTooSmall )) { 724 738 WriteErrorCode( rc, "SplQueryQueue"); 725 MAKERXSTRING( *prsResult, "0", 1 );739 SaveResultString( prsResult, PSZ_ZERO, 1 ); 726 740 //goto cleanup; 727 741 continue; … … 730 744 if ( !pbQueue ) { 731 745 WriteErrorCode( ERROR_NOT_ENOUGH_MEMORY, "malloc"); 732 MAKERXSTRING( *prsResult, "0", 1 );746 SaveResultString( prsResult, PSZ_ZERO, 1 ); 733 747 //goto cleanup; 734 748 continue; … … 739 753 if ( rc != NO_ERROR ) { 740 754 WriteErrorCode( rc, "SplQueryQueue"); 741 MAKERXSTRING( *prsResult, "0", 1 );755 SaveResultString( prsResult, PSZ_ZERO, 1 ); 742 756 free( pbQueue ); 743 757 //goto cleanup; … … 782 796 sprintf( szNumber, "%u", ulCount ); 783 797 WriteStemElement( szStem, 0, szNumber ); 784 MAKERXSTRING( *prsResult, "1", 1 );798 SaveResultString( prsResult, PSZ_ONE, 1 ); 785 799 786 800 cleanup: … … 844 858 hObj = PrinterObjectHandle( pszName ); 845 859 if ( !hObj ) { 846 MAKERXSTRING( *prsResult, "0", 1 );860 SaveResultString( prsResult, PSZ_ZERO, 1 ); 847 861 return ( 0 ); 848 862 } … … 850 864 fRC = WinOpenObject( hObj, ulView, TRUE ); 851 865 852 MAKERXSTRING( *prsResult, fRC? "1": "0", 1 );866 SaveResultString( prsResult, fRC? PSZ_ONE: PSZ_ZERO, 1 ); 853 867 return ( 0 ); 854 868 } … … 909 923 { 910 924 WriteErrorCode( rc, "SplQueryPort"); 911 MAKERXSTRING( *prsResult, "0", 1 );925 SaveResultString( prsResult, PSZ_ZERO, 1 ); 912 926 return ( 0 ); 913 927 } … … 917 931 if ( !pbuf ) { 918 932 WriteErrorCode( ERROR_NOT_ENOUGH_MEMORY, "malloc"); 919 MAKERXSTRING( *prsResult, "0", 1 );933 SaveResultString( prsResult, PSZ_ZERO, 1 ); 920 934 return ( 0 ); 921 935 } … … 927 941 WriteCompoundVariable( szStem, "!driver", pInfo->pszPortDriver ); 928 942 WriteCompoundVariable( szStem, "!converter", pInfo->pszProtocolConverter ); 929 MAKERXSTRING( *prsResult, "1", 1 );943 SaveResultString( prsResult, PSZ_ONE, 1 ); 930 944 } 931 945 else { 932 946 WriteErrorCode( rc, "SplQueryPort"); 933 MAKERXSTRING( *prsResult, "0", 1 );947 SaveResultString( prsResult, PSZ_ZERO, 1 ); 934 948 } 935 949 … … 985 999 if ( !hab ) { 986 1000 WriteErrorCode( 0, "WinInitialize"); 987 MAKERXSTRING( *prsResult, "0", 1 );1001 SaveResultString( prsResult, PSZ_ZERO, 1 ); 988 1002 return ( 0 ); 989 1003 } … … 993 1007 if ( !ulCB ) { 994 1008 WriteErrorCode( ERRORIDERROR( WinGetLastError( hab )), "PrfQueryProfileString"); 995 MAKERXSTRING( *prsResult, "0", 1 );1009 SaveResultString( prsResult, PSZ_ZERO, 1 ); 996 1010 goto cleanup; 997 1011 } … … 1001 1015 if ( rc != NO_ERROR || !hPdr ) { 1002 1016 WriteErrorCode( rc, "DosLoadModule"); 1003 MAKERXSTRING( *prsResult, "0", 1 );1017 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1004 1018 goto cleanup; 1005 1019 } … … 1007 1021 if ( rc != NO_ERROR ) { 1008 1022 WriteErrorCode( rc, "DosQueryProcAddr"); 1009 MAKERXSTRING( *prsResult, "0", 1 );1023 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1010 1024 goto finish; 1011 1025 } … … 1015 1029 if ( rc == NO_ERROR ) { 1016 1030 // Return 1 on success 1017 MAKERXSTRING( *prsResult, "1", 1 );1031 SaveResultString( prsResult, PSZ_ONE, 1 ); 1018 1032 } 1019 1033 else { 1020 1034 WriteErrorCode( rc, "SplPdInstallPort"); 1021 MAKERXSTRING( *prsResult, "0", 1 );1035 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1022 1036 } 1023 1037 … … 1080 1094 if ( !hab ) { 1081 1095 WriteErrorCode( 0, "WinInitialize"); 1082 MAKERXSTRING( *prsResult, "", 0 );1096 SaveResultString( prsResult, NULL, 0 ); 1083 1097 return ( 0 ); 1084 1098 } … … 1088 1102 if ( !ulCB ) { 1089 1103 WriteErrorCode( ERRORIDERROR( WinGetLastError( hab )), "PrfQueryProfileString"); 1090 MAKERXSTRING( *prsResult, "", 0 );1104 SaveResultString( prsResult, NULL, 0 ); 1091 1105 goto cleanup; 1092 1106 } … … 1096 1110 if ( rc != NO_ERROR || !hPdr ) { 1097 1111 WriteErrorCode( rc, "DosLoadModule"); 1098 MAKERXSTRING( *prsResult, "", 0 );1112 SaveResultString( prsResult, NULL, 0 ); 1099 1113 goto cleanup; 1100 1114 } … … 1102 1116 if ( rc != NO_ERROR ) { 1103 1117 WriteErrorCode( rc, "DosQueryProcAddr"); 1104 MAKERXSTRING( *prsResult, "", 0 );1118 SaveResultString( prsResult, NULL, 0 ); 1105 1119 goto finish; 1106 1120 } … … 1117 1131 // Write the data contents to our return RXSTRING 1118 1132 if ( !SaveResultString( prsResult, pBuf, cBuf )) 1119 MAKERXSTRING( *prsResult, "", 0 );1133 SaveResultString( prsResult, NULL, 0 ); 1120 1134 } 1121 1135 else { 1122 1136 WriteErrorCode( rc, "SplPdQuery 2"); 1123 MAKERXSTRING( *prsResult, "", 0 );1137 SaveResultString( prsResult, NULL, 0 ); 1124 1138 } 1125 1139 free( pBuf ); … … 1127 1141 else { 1128 1142 WriteErrorCode( ERROR_NOT_ENOUGH_MEMORY, "malloc"); 1129 MAKERXSTRING( *prsResult, "", 0 );1143 SaveResultString( prsResult, NULL, 0 ); 1130 1144 } 1131 1145 } 1132 1146 else { 1133 1147 WriteErrorCode( rc, "SplPdQuery 1"); 1134 MAKERXSTRING( *prsResult, "", 0 );1148 SaveResultString( prsResult, NULL, 0 ); 1135 1149 } 1136 1150 … … 1209 1223 if ( !hab ) { 1210 1224 WriteErrorCode( 0, "WinInitialize"); 1211 MAKERXSTRING( *prsResult, "0", 1 );1225 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1212 1226 return ( 0 ); 1213 1227 } … … 1217 1231 if ( !ulCB ) { 1218 1232 WriteErrorCode( ERRORIDERROR( WinGetLastError( hab )), "PrfQueryProfileString"); 1219 MAKERXSTRING( *prsResult, "0", 1 );1233 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1220 1234 goto cleanup; 1221 1235 } … … 1225 1239 if ( rc != NO_ERROR || !hPdr ) { 1226 1240 WriteErrorCode( rc, "DosLoadModule"); 1227 MAKERXSTRING( *prsResult, "0", 1 );1241 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1228 1242 goto cleanup; 1229 1243 } … … 1231 1245 if ( rc != NO_ERROR ) { 1232 1246 WriteErrorCode( rc, "DosQueryProcAddr"); 1233 MAKERXSTRING( *prsResult, "0", 1 );1247 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1234 1248 goto finish; 1235 1249 } … … 1239 1253 if ( rc == NO_ERROR ) { 1240 1254 // Return 1 on success 1241 MAKERXSTRING( *prsResult, "1", 1 );1255 SaveResultString( prsResult, PSZ_ONE, 1 ); 1242 1256 } 1243 1257 else { 1244 1258 WriteErrorCode( rc, "SplPdSet"); 1245 MAKERXSTRING( *prsResult, "0", 1 );1259 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1246 1260 } 1247 1261 … … 1297 1311 if ( !hab ) { 1298 1312 WriteErrorCode( 0, "WinInitialize"); 1299 MAKERXSTRING( *prsResult, "0", 1 );1313 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1300 1314 return ( 0 ); 1301 1315 } … … 1305 1319 if ( !ulCB ) { 1306 1320 WriteErrorCode( ERRORIDERROR( WinGetLastError( hab )), "PrfQueryProfileString"); 1307 MAKERXSTRING( *prsResult, "0", 1 );1321 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1308 1322 goto cleanup; 1309 1323 } … … 1313 1327 if ( rc != NO_ERROR || !hPdr ) { 1314 1328 WriteErrorCode( rc, "DosLoadModule"); 1315 MAKERXSTRING( *prsResult, "0", 1 );1329 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1316 1330 goto cleanup; 1317 1331 } … … 1319 1333 if ( rc != NO_ERROR ) { 1320 1334 WriteErrorCode( rc, "DosQueryProcAddr"); 1321 MAKERXSTRING( *prsResult, "0", 1 );1335 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1322 1336 goto finish; 1323 1337 } … … 1327 1341 if ( rc == NO_ERROR ) { 1328 1342 // Return 1 if settings were modified 1329 MAKERXSTRING( *prsResult, flModified? "1": "0", 1 );1343 SaveResultString( prsResult, flModified? PSZ_ONE: PSZ_ZERO, 1 ); 1330 1344 } 1331 1345 else { 1332 1346 WriteErrorCode( rc, "SplPdSetPort"); 1333 MAKERXSTRING( *prsResult, "0", 1 );1347 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1334 1348 } 1335 1349 … … 1369 1383 if ( rc == NO_ERROR ) { 1370 1384 // Return 1 on success 1371 MAKERXSTRING( *prsResult, "1", 1 );1385 SaveResultString( prsResult, PSZ_ONE, 1 ); 1372 1386 } 1373 1387 else { 1374 1388 WriteErrorCode( rc, "SplDeletePort"); 1375 MAKERXSTRING( *prsResult, "0", 1 );1389 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1376 1390 } 1377 1391 … … 1439 1453 else 1440 1454 WriteErrorCode( rc, "SplEnumDevice"); 1441 MAKERXSTRING( *prsResult, "0", 1 );1455 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1442 1456 return ( 0 ); 1443 1457 } … … 1453 1467 if ( rc != NO_ERROR ) { 1454 1468 WriteErrorCode( rc, "SplCreateDevice"); 1455 MAKERXSTRING( *prsResult, "0", 1 );1469 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1456 1470 return ( 0 ); 1457 1471 } … … 1468 1482 if ( rc != NO_ERROR ) { 1469 1483 WriteErrorCode( rc, "SplCreateQueue"); 1470 MAKERXSTRING( *prsResult, "0", 1 );1484 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1471 1485 SplDeleteDevice( NULL, szDevice ); 1472 1486 return ( 0 ); 1473 1487 } 1474 1488 1475 MAKERXSTRING( *prsResult, "1", 1 );1489 SaveResultString( prsResult, PSZ_ONE, 1 ); 1476 1490 return ( 0 ); 1477 1491 } … … 1514 1528 if (( rc != NO_ERROR ) && ( rc != NERR_BufTooSmall )) { 1515 1529 WriteErrorCode( rc, "SplQueryQueue"); 1516 MAKERXSTRING( *prsResult, "0", 1 );1530 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1517 1531 return ( 0 ); 1518 1532 } … … 1520 1534 if ( !pInfo ) { 1521 1535 WriteErrorCode( ERROR_NOT_ENOUGH_MEMORY, "malloc"); 1522 MAKERXSTRING( *prsResult, "0", 1 );1536 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1523 1537 return ( 0 ); 1524 1538 } … … 1526 1540 if ( rc != NO_ERROR ) { 1527 1541 WriteErrorCode( rc, "SplQueryQueue"); 1528 MAKERXSTRING( *prsResult, "0", 1 );1542 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1529 1543 goto cleanup; 1530 1544 } … … 1533 1547 if ( rc != NO_ERROR ) { 1534 1548 WriteErrorCode( rc, "SplDeleteDevice"); 1535 MAKERXSTRING( *prsResult, "0", 1 );1549 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1536 1550 goto cleanup; 1537 1551 } … … 1541 1555 if ( hObj != NULLHANDLE ) WinDestroyObject( hObj ); 1542 1556 1543 MAKERXSTRING( *prsResult, "1", 1 );1557 SaveResultString( prsResult, PSZ_ONE, 1 ); 1544 1558 cleanup: 1545 1559 free( pInfo ); … … 1605 1619 { 1606 1620 WriteErrorCode( rc, "SplQueryDevice"); 1607 MAKERXSTRING( *prsResult, "0", 1 );1621 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1608 1622 return ( 0 ); 1609 1623 } … … 1613 1627 if ( !pbuf ) { 1614 1628 WriteErrorCode( ERROR_NOT_ENOUGH_MEMORY, "malloc"); 1615 MAKERXSTRING( *prsResult, "0", 1 );1629 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1616 1630 return ( 0 ); 1617 1631 } … … 1631 1645 if ( pInfo->fsStatus & PRJ_DESTNOPAPER ) strcat( szFlags, "P"); 1632 1646 WriteCompoundVariable( szStem, "!jobflags", szFlags ); 1633 MAKERXSTRING( *prsResult, "1", 1 );1647 SaveResultString( prsResult, PSZ_ONE, 1 ); 1634 1648 } 1635 1649 else { 1636 1650 WriteErrorCode( rc, "SplQueryDevice"); 1637 MAKERXSTRING( *prsResult, "0", 1 );1651 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1638 1652 } 1639 1653 … … 1671 1685 fRC = WinSetObjectData( hObj, "APPDEFAULT=YES;"); 1672 1686 1673 MAKERXSTRING( *prsResult, fRC? "1": "0", 1 );1687 SaveResultString( prsResult, fRC? PSZ_ONE: PSZ_ZERO, 1 ); 1674 1688 return ( 0 ); 1675 1689 } … … 1722 1736 if ( rc != NO_ERROR ) { 1723 1737 WriteErrorCode( rc, fHold ? "SplHoldQueue" : "SplReleaseQueue"); 1724 MAKERXSTRING( *prsResult, "0", 1 ); 1725 } 1726 else MAKERXSTRING( *prsResult, "1", 1 ); 1738 SaveResultString( prsResult, PSZ_ZERO, 1 ); 1739 } 1740 else 1741 SaveResultString( prsResult, PSZ_ONE, 1 ); 1727 1742 1728 1743 return ( 0 ); … … 2007 2022 * ************************************************************************* */ 2008 2023 2024 #ifdef NO_SHARED_SOURCE 2009 2025 2010 2026 /* ------------------------------------------------------------------------- * … … 2015 2031 * zero length, nothing is done. * 2016 2032 * * 2017 * This function should be used in place of MAKERXSTRING if there is a*2018 * possibility that the string contents could be longer than 256 characters.*2033 * This function should be used in place of MAKERXSTRING to generate all * 2034 * REXX return values. * 2019 2035 * * 2020 2036 * ARGUMENTS: * … … 2206 2222 } 2207 2223 2208 2224 #endif -
rxprtutl/trunk/rxprtutl.def
r15 r32 1 1 LIBRARY RXPRTUTL INITINSTANCE TERMINSTANCE 2 2 DATA MULTIPLE NONSHARED 3 DESCRIPTION '@#Alex Taylor:0.2.4#@##1## 8 Sep 2013 20:30:22REINFORCE::::::@@REXX Printer Management Utilities'3 DESCRIPTION '@#Alex Taylor:0.2.4#@##1## 11 May 2016 18:58:22 REINFORCE::::::@@REXX Printer Management Utilities' 4 4 5 5 EXPORTS RPULoadFuncs
Note:
See TracChangeset
for help on using the changeset viewer.