Annotation of mstools/mssetup/include/setupapi.inc, revision 1.1.1.1

1.1       root        1: '**************************************************************************
                      2: '*******************************  Windows API's  **************************
                      3: '**************************************************************************
                      4: GLOBAL hSetup AS INTEGER
                      5: GLOBAL fFrameInit AS INTEGER
                      6: GLOBAL fInstallInit AS INTEGER
                      7: 
                      8: CONST SM_CXSCREEN = 0
                      9: CONST SM_CYSCREEN = 1
                     10: 
                     11: CONST WF_80x87    = 1024
                     12: CONST WF_CPU186   =  128
                     13: CONST WF_CPU286   =    2
                     14: CONST WF_CPU386   =    4
                     15: CONST WF_CPU486   =    8
                     16: CONST WF_CPUR4000 =  256
                     17: 
                     18: CONST WF_STANDARD =   16
                     19: CONST WF_ENHANCED =   32
                     20: CONST WF_WINNT    = 16384
                     21: 
                     22: 
                     23: '' DoMsgBox Flags
                     24: 
                     25: CONST MB_OK          = 0
                     26: CONST MB_ICONHAND    = 16
                     27: CONST MB_TASKMODAL   = 8192
                     28: 
                     29: 
                     30: DECLARE FUNCTION DoMsgBox LIB "mscomstf.dll" (lpText$,lpCaption$,wType%) As INTEGER
                     31: DECLARE FUNCTION GetWindowsDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
                     32: DECLARE FUNCTION GetSystemDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
                     33: DECLARE FUNCTION GetProfileString LIB "kernel" (szSect$, szKey$, szDefault$, szBuf$, cbBuf%) AS INTEGER
                     34: DECLARE FUNCTION GetVersion LIB "kernel" AS INTEGER
                     35: DECLARE FUNCTION GetSystemMetrics LIB "user" (nIndex%) AS INTEGER
                     36: DECLARE FUNCTION GetWinFlags LIB "kernel" AS LONG
                     37: 
                     38: 
                     39: 
                     40: 
                     41: '**************************************************************************
                     42: '****************************** Setup Constants ***************************
                     43: '**************************************************************************
                     44: 
                     45: 
                     46: ''Command Option Flags
                     47: 
                     48: CONST cmoVital       = 1
                     49: CONST cmoCopy        = 2
                     50: CONST cmoUndo        = 4
                     51: CONST cmoRoot        = 8
                     52: CONST cmoDecompress  = 16
                     53: CONST cmoTimeStamp   = 32
                     54: CONST cmoReadOnly    = 64
                     55: CONST cmoBackup      = 128
                     56: CONST cmoForce       = 256
                     57: CONST cmoRemove      = 512
                     58: CONST cmoOverwrite   = 1024
                     59: CONST cmoAppend      = 2048
                     60: CONST cmoPrepend     = 4096
                     61: CONST cmoNone        = 0
                     62: CONST cmoAll         = 65535
                     63: 
                     64: 
                     65: ''File Exist Modes
                     66: 
                     67: CONST femExists     = 0
                     68: CONST femRead       = 1
                     69: CONST femWrite      = 2
                     70: CONST femReadWrite  = 3
                     71: 
                     72: 
                     73: ''Read-Only Return Code
                     74: 
                     75: CONST ynrcNo         = 0
                     76: CONST ynrcYes        = 1
                     77: CONST ynrcErr1       = 2
                     78: CONST ynrcErr2       = 3
                     79: CONST ynrcErr3       = 4
                     80: CONST ynrcErr4       = 5
                     81: CONST ynrcErr5       = 6
                     82: CONST ynrcErr6       = 7
                     83: CONST ynrcErr7       = 8
                     84: CONST ynrcErr8       = 9
                     85: CONST ynrcErr9       = 10
                     86: 
                     87: 
                     88: ''General Return Codes
                     89: 
                     90: CONST grcOkay       = 0
                     91: CONST grcNotOkay    = 1
                     92: CONST grcUserQuit   = 48
                     93: 
                     94: 
                     95: ''Ranges
                     96: 
                     97: ''CONST cbSymValMax = 8192
                     98: CONST cbSymValMax = 512
                     99:     ''REVIEW: symbol table will allow strings up to 8192 bytes
                    100:     '' but we get Out of String Space wattdrvr error if we alloc
                    101:     '' STRING$() that big. (See GetSymbolValue and GetListItem)
                    102:     '' We should look into using dynamic far alloc instead of
                    103:     '' STRING$ for large buffers.
                    104:     '' NOTE: 8192 works okay with runtime wattdrvr, however.
                    105: 
                    106: 
                    107: ''ON ERROR Error Codes
                    108: CONST STFERR      = 1024   ''setup system error
                    109: CONST STFQUIT     = 1025   ''user quit
                    110: 
                    111: CONST scmOff      = 0
                    112: CONST scmOnIgnore = 1
                    113: CONST scmOnFatal  = 2
                    114: 
                    115: 
                    116: '**************************************************************************
                    117: '********************************  Setup API's  ***************************
                    118: '**************************************************************************
                    119: 
                    120: '' common
                    121: 
                    122: DECLARE FUNCTION FParseFATPathIntoPieces LIB "mscomstf.dll" (szPath$, szVol$, cbVol%, szDir$, cbDir%, szFile$, cbFile%) AS INTEGER
                    123: DECLARE FUNCTION FOpenInf LIB "mscomstf.dll" (szFile$, fCheck%, fCheckSyms%) AS INTEGER
                    124: DECLARE FUNCTION FSetSilent LIB "mscomstf.dll" (mode%) AS INTEGER
                    125: DECLARE FUNCTION FSetBeepingMode LIB "mscomstf.dll" (mode%) AS INTEGER
                    126: DECLARE FUNCTION HShowWaitCursor LIB "msshlstf.dll" AS INTEGER
                    127: DECLARE FUNCTION FRestoreCursor  LIB "msshlstf.dll" (hPrev%) AS INTEGER
                    128: DECLARE FUNCTION FOpenLogFile    LIB "mscomstf.dll" (szFile$, fAppend%) AS INTEGER
                    129: DECLARE FUNCTION FCloseLogFile   LIB "mscomstf.dll" AS INTEGER
                    130: DECLARE FUNCTION FWriteToLogFile LIB "mscomstf.dll" (sz$, fRequire%) AS INTEGER
                    131: DECLARE FUNCTION CbGetInfSectionKeyField LIB "mscomstf.dll" (szSect$, szKey$, iField%, szBuf$, cbBuf%) AS INTEGER
                    132: DECLARE FUNCTION FMakeListInfSectionField LIB "mscomstf.dll" (szSym$, szSect$, iField%) AS INTEGER
                    133: 
                    134: DECLARE FUNCTION PbSaveMemInf  LIB "mscomstf.dll" AS LONG
                    135: DECLARE SUB      RestoreMemInf LIB "mscomstf.dll" (pb&)
                    136: DECLARE SUB      FreeMemInf    LIB "mscomstf.dll" (pb&)
                    137: 
                    138: 
                    139: ''shell
                    140: 
                    141: DECLARE FUNCTION FSetBitmap LIB "msshlstf.dll" (szDll$, Bitmap%) AS INTEGER
                    142: DECLARE FUNCTION FSetAbout LIB "msshlstf.dll" (szAbout1$, szAbout2$) AS INTEGER
                    143: DECLARE FUNCTION FDoDialogExt LIB "msuilstf.dll" (hwnd%, szDll$, Dlg%, szDlgProc$, szHelpDll$, HelpDlg%, szHelpProc$) AS INTEGER
                    144: DECLARE FUNCTION FKillNDialogs LIB "msuilstf.dll" (n%) AS INTEGER
                    145: DECLARE SUB SetWindowText LIB "User" (hwnd%, lpString$)
                    146: DECLARE FUNCTION FSetSymbolValue LIB "msshlstf.dll" (szSymbol$, szValue$) AS INTEGER
                    147: DECLARE FUNCTION FRemoveSymbol LIB "mscomstf.dll" (szSym$) AS INTEGER
                    148: DECLARE FUNCTION CbGetSymbolValue LIB "mscomstf.dll" (szSymbol$, szValue$, Length%) AS INTEGER
                    149: DECLARE FUNCTION UsGetListLength LIB "mscomstf.dll" (szSymbol$) AS INTEGER
                    150: DECLARE FUNCTION CbGetListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$, cbMax%) AS INTEGER
                    151: DECLARE FUNCTION FAddListItem LIB "mscomstf.dll" (szListSymbol$, szListItem$) AS INTEGER
                    152: DECLARE FUNCTION FReplaceListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$) AS INTEGER
                    153: DECLARE FUNCTION FSetSymbolToListOfInfKeys LIB "mscomstf.dll" (szSym$, szSect$, fNulls%) AS INTEGER
                    154: 
                    155: 
                    156: ''shell
                    157: 
                    158: DECLARE FUNCTION InitializeFrame LIB "msshlstf.dll" (szCmdLine$) AS INTEGER
                    159: DECLARE FUNCTION HwndFrame LIB "msshlstf.dll" AS INTEGER
                    160: DECLARE FUNCTION HinstFrame LIB "msshlstf.dll" AS INTEGER
                    161: 
                    162: 
                    163: 
                    164: ''install
                    165: 
                    166: DECLARE SUB      ProSetPos LIB "msinsstf.dll" (x%, y%)
                    167: DECLARE FUNCTION FCreateDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
                    168: DECLARE FUNCTION FRemoveDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
                    169: DECLARE FUNCTION FAddSectionFilesToCopyList LIB "mscomstf.dll" (szSect$, szSrc$, szDest$) AS INTEGER
                    170: DECLARE FUNCTION FAddSectionKeyFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
                    171: DECLARE FUNCTION FAddSpecialFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
                    172: DECLARE FUNCTION AddSrcFileWithAttribsToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
                    173: DECLARE FUNCTION GrcCopyFilesInCopyList LIB "msinsstf.dll" (hInstance%) AS INTEGER
                    174: DECLARE FUNCTION FRemoveIniSection LIB "msinsstf.dll" (szFile$, szSect$, cmo%) AS INTEGER
                    175: DECLARE FUNCTION FCreateIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
                    176: DECLARE FUNCTION FRemoveIniKey LIB "msinsstf.dll" (szFile$, szSect$, szKey$, cmo%) AS INTEGER
                    177: DECLARE FUNCTION FCreateSysIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
                    178: DECLARE FUNCTION FCreateProgManGroup LIB "msinsstf.dll" (szGroup$, szPath$, cmo%) AS INTEGER
                    179: DECLARE FUNCTION FCreateProgManItem LIB "msinsstf.dll" (szGroup$, szItem$, szCmd$, cmo%) AS INTEGER
                    180: DECLARE FUNCTION FShowProgManGroup LIB "msinsstf.dll" (szGroup$, szCmd$, cmo%) AS INTEGER
                    181: DECLARE FUNCTION FStampResource LIB "msinsstf.dll" (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) AS INTEGER
                    182: DECLARE FUNCTION FDumpCopyListToFile LIB "msinsstf.dll" (szFile$) AS INTEGER
                    183: DECLARE SUB      ResetCopyList LIB "msinsstf.dll"
                    184: DECLARE FUNCTION LcbGetCopyListCost LIB "msinsstf.dll" (szExtraList$, szCostList$, szNeedList$) AS LONG
                    185: DECLARE FUNCTION FAddDos5Help LIB "msinsstf.dll" (szProgName$, szProgHelp$, cmo%) AS INTEGER
                    186: DECLARE FUNCTION FCopyOneFile LIB "msinsstf.dll" (szSrc$, szDest$, cmo%, fAppend%) AS INTEGER
                    187: DECLARE FUNCTION YnrcRemoveFile LIB "msinsstf.dll" (szFullPathSrc$, cmo%) AS INTEGER
                    188: DECLARE FUNCTION YnrcBackupFile LIB "msinsstf.dll" (szFullPath$, szBackup$, cmo%) AS INTEGER
                    189: DECLARE FUNCTION FInitializeInstall LIB "msinsstf.dll" (hinst%, hwndFrame%) AS INTEGER
                    190: DECLARE FUNCTION WFindFileUsingFileOpen LIB "msinsstf.dll" (szFile$, szBuf$, cbBuf%) AS INTEGER
                    191: DECLARE FUNCTION FIsDirWritable LIB "msinsstf.dll" (szDir$) AS INTEGER
                    192: DECLARE FUNCTION FIsFileWritable LIB "msinsstf.dll" (szFile$) AS INTEGER
                    193: DECLARE FUNCTION FAddToBillboardList LIB "msinsstf.dll" (szDll$, idDlg%, szProc$, lTicks&) AS INTEGER
                    194: DECLARE FUNCTION FClearBillboardList LIB "msinsstf.dll" AS INTEGER
                    195: DECLARE FUNCTION FSetRestartDir LIB "msinsstf.dll" (szDir$) AS INTEGER
                    196: DECLARE FUNCTION FRestartListEmpty LIB "msinsstf.dll" AS INTEGER
                    197: DECLARE FUNCTION FExitExecRestart LIB "msinsstf.dll" AS INTEGER
                    198: DECLARE FUNCTION SetCopyMode LIB "msinsstf.dll" (fMode%) AS INTEGER
                    199: DECLARE FUNCTION GetCopyMode LIB "msinsstf.dll" AS INTEGER
                    200: DECLARE FUNCTION SetDecompMode LIB "msinsstf.dll" (fMode%) AS INTEGER
                    201: DECLARE FUNCTION GetDecompMode LIB "msinsstf.dll" AS INTEGER
                    202: DECLARE FUNCTION SetSizeCheckMode LIB "msinsstf.dll" (scmMode%) AS INTEGER
                    203: DECLARE FUNCTION FPrependToPath LIB "msinsstf.dll" (szSrc$, szDst$, szDir$, cmo%) AS INTEGER
                    204: 
                    205: DECLARE FUNCTION SetTimeValue LIB "msinsstf.dll" (usHours%, usMinutes%, usSeconds%) AS INTEGER
                    206: DECLARE SUB ForceRestartOn LIB "msinsstf.dll"
                    207: DECLARE FUNCTION DoesAnyFileNeedCopying LIB "msinsstf.dll" AS INTEGER
                    208: 
                    209: 
                    210: 
                    211: '*************************************************************************
                    212: '****************  Setup Basic Wrapper Declarations  *********************
                    213: '*************************************************************************
                    214: 
                    215: 
                    216: ''shell
                    217: 
                    218: DECLARE SUB SetBitmap(szDll$, Bitmap%)
                    219: DECLARE SUB SetAbout(szAbout1$, szAbout2$)
                    220: DECLARE FUNCTION UIStartDlgExt(szDll$, Dlg%, szDlgProc$, szHelpDll$, HelpDlg%, szHelpProc$) AS STRING
                    221: DECLARE FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS STRING
                    222: DECLARE SUB UIPop (n%)
                    223: DECLARE SUB UIPopAll
                    224: DECLARE SUB SetTitle (sz$)
                    225: DECLARE SUB ReadInfFile (szFile$)
                    226: DECLARE SUB SetSymbolValue (szSymbol$, szValue$)
                    227: DECLARE SUB RemoveSymbol (szSym$)
                    228: DECLARE FUNCTION GetSymbolValue (szSymbol$) AS STRING
                    229: DECLARE FUNCTION GetListLength(szSymbol$) AS INTEGER
                    230: DECLARE SUB MakeListFromSectionKeys (szSymbol$, szSect$)
                    231: DECLARE FUNCTION GetListItem(szSymbol$, n%) AS STRING
                    232: DECLARE SUB AddListItem(szSymbol$, szItem$)
                    233: DECLARE SUB ReplaceListItem(szSymbol$, n%, szItem$)
                    234: 
                    235: DECLARE FUNCTION InitFrame (szCmdLine$) AS INTEGER
                    236: DECLARE FUNCTION InitSetup (szCmdLine$) AS INTEGER
                    237: 
                    238: DECLARE FUNCTION ShowWaitCursor AS INTEGER
                    239: DECLARE SUB RestoreCursor (hPrev%)
                    240: 
                    241: DECLARE FUNCTION SetBeepingMode (mode%) AS INTEGER
                    242: DECLARE FUNCTION SetSilentMode (mode%) AS INTEGER
                    243: 
                    244: DECLARE FUNCTION GetSectionKeyDate (szSect$, szKey$) AS STRING
                    245: DECLARE FUNCTION GetSectionKeyFilename (szSect$, szKey$) AS STRING
                    246: DECLARE FUNCTION GetSectionKeySize (szSect$, szKey$) AS LONG
                    247: DECLARE FUNCTION GetSectionKeyVersion (szSect$, szKey$) AS STRING
                    248: 
                    249: DECLARE SUB MakeListFromSectionDate (szSym$, szSect$)
                    250: DECLARE SUB MakeListFromSectionFilename (szSym$, szSect$)
                    251: DECLARE SUB MakeListFromSectionSize (szSym$, szSect$)
                    252: DECLARE SUB MakeListFromSectionVersion (szSym$, szSect$)
                    253: 
                    254: 
                    255: ''install
                    256: 
                    257: 
                    258: DECLARE SUB CreateDir (szDir$, cmo%)
                    259: DECLARE SUB RemoveDir (szDir$, cmo%)
                    260: DECLARE SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$)
                    261: DECLARE SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
                    262: DECLARE SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
                    263: DECLARE SUB CopyFilesInCopyList
                    264: DECLARE SUB RemoveIniSection (szFile$, szSect$, cmo%)
                    265: DECLARE SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
                    266: DECLARE SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%)
                    267: DECLARE SUB CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
                    268: DECLARE SUB CreateProgmanGroup (szGroup$, szPath$, cmo%)
                    269: DECLARE SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%)
                    270: DECLARE SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%)
                    271: DECLARE SUB StampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%)
                    272: DECLARE SUB DumpCopyList (szFile$)
                    273: DECLARE SUB ClearCopyList
                    274: DECLARE FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) AS LONG
                    275: DECLARE SUB AddDos5Help (szProgName$, szProgHelp$, cmo%)
                    276: DECLARE SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%)
                    277: DECLARE SUB RemoveFile (szFullPathSrc$, cmo%)
                    278: DECLARE SUB BackupFile (szFullPath$, szBackup$)
                    279: DECLARE SUB RenameFile (szFullPath$, szBackup$)
                    280: DECLARE SUB InitInstall
                    281: DECLARE SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&)
                    282: DECLARE SUB AddBlankToBillboardList (lTicks&)
                    283: DECLARE SUB ClearBillboardList
                    284: DECLARE SUB OpenLogFile (szFile$, fAppend%)
                    285: DECLARE SUB CloseLogFile
                    286: DECLARE SUB WriteToLogFile (szStr$)
                    287: DECLARE SUB SetCopyGaugePosition (x%, y%)
                    288: DECLARE SUB SetRestartDir(szDir$)
                    289: DECLARE FUNCTION RestartListEmpty AS INTEGER
                    290: DECLARE FUNCTION ExitExecRestart AS INTEGER
                    291: DECLARE FUNCTION FindFileUsingFileOpen (szFile$) AS STRING
                    292: DECLARE FUNCTION IsDirWritable (szDir$) AS INTEGER
                    293: DECLARE FUNCTION IsFileWritable (szFile$) AS INTEGER
                    294: DECLARE FUNCTION GetNthFieldFromIniString (szLine$, iField%) AS STRING
                    295: DECLARE SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%)
                    296: 
                    297: 
                    298: '' Error Handling
                    299: 
                    300: '$ifdef DEBUG
                    301: 
                    302: '' Setup API Errors
                    303: CONST saeFail   = 0
                    304: CONST saeInit   = 1
                    305: CONST saeNYI    = 3
                    306: CONST saeArg    = 4    ''must be max sae value
                    307: 
                    308: DECLARE SUB StfApiErr (nMsg%, szApi$, szArgs$)
                    309: DECLARE SUB BadArgErr (nArg%, szApi$, szArgs$)
                    310: 
                    311: '' chk arg
                    312: DECLARE FUNCTION FValidFATDir LIB "mscomstf.dll" (szDir$) AS INTEGER
                    313: DECLARE FUNCTION CchlValidFATSubPath LIB "mscomstf.dll" (szPath$) AS INTEGER
                    314: DECLARE FUNCTION FValidFATPath LIB "mscomstf.dll" (szPath$) AS INTEGER
                    315: DECLARE FUNCTION FValidDrive (szDrive$) AS INTEGER
                    316: 
                    317: DECLARE FUNCTION FValidInfSect (szSect$) AS INTEGER
                    318: DECLARE FUNCTION FValidIniFile (szFile$) AS INTEGER
                    319: 
                    320: '$endif ''DEBUG
                    321: 
                    322: 
                    323: 
                    324: '' Windows system detect
                    325: 
                    326: DECLARE FUNCTION GetWindowsMajorVersion AS INTEGER
                    327: DECLARE FUNCTION GetWindowsMinorVersion AS INTEGER
                    328: DECLARE FUNCTION GetWindowsMode AS INTEGER
                    329: DECLARE FUNCTION GetWindowsDir  AS STRING
                    330: DECLARE FUNCTION GetWindowsSysDir AS STRING
                    331: DECLARE FUNCTION IsWindowsShared AS INTEGER
                    332: DECLARE FUNCTION GetScreenWidth AS INTEGER
                    333: DECLARE FUNCTION GetScreenHeight AS INTEGER
                    334: 
                    335: 
                    336: '*************************************************************************
                    337: '*****************  Setup Basic Wrapper Definitions  *********************
                    338: '*************************************************************************
                    339: FUNCTION InitSetup(szCmdLine$) STATIC AS INTEGER
                    340:     fFrameInit = 0
                    341:     fInstallInit = 0
                    342: 
                    343:     IF hSetup > 0 THEN
                    344: '$ifdef DEBUG
                    345:         StfApiErr saeInit, "InitSetup", szCmdLine$
                    346: '$endif ''DEBUG
                    347:     END IF
                    348: 
                    349:     i% = InitFrame(szCmdLine$)
                    350:     fFrameInit = 1
                    351: 
                    352:     InitInstall
                    353:     fInstallInit = 1
                    354: 
                    355:     InitSetup = i%
                    356: END FUNCTION
                    357: 
                    358: 
                    359: 
                    360: '**************************************************************************
                    361: FUNCTION InitFrame(szCmdLine$) STATIC AS INTEGER
                    362:     IF hSetup > 0 THEN
                    363: '$ifdef DEBUG
                    364:         StfApiErr saeInit, "InitFrame", szCmdLine$
                    365: '$endif ''DEBUG
                    366:     ELSE
                    367:         i% = InitializeFrame(szCmdLine$)
                    368:         IF i% = -1 THEN
                    369:             END   '' NOT an error - Usage (/?) or Command line copy operation
                    370:         ELSEIF i% = 0 THEN
                    371: '$ifdef DEBUG
                    372:             StfApiErr saeFail, "InitFrame", szCmdLine$
                    373: '$endif ''DEBUG
                    374:             END
                    375:         ELSE
                    376:             InitFrame = i%
                    377:         END IF
                    378:     END IF
                    379: END FUNCTION
                    380: 
                    381: 
                    382: '**************************************************************************
                    383: SUB SetBitmap(szDll$, Bitmap%) STATIC
                    384:     IF FSetBitmap(szDll$, Bitmap%) = 0 THEN
                    385: '$ifdef DEBUG
                    386:         StfApiErr saeFail, "SetBitmap", szDll$+","+STR$(Bitmap%)
                    387: '$endif ''DEBUG
                    388:         ERROR STFERR
                    389:     END IF
                    390: END SUB
                    391: 
                    392: 
                    393: '**************************************************************************
                    394: SUB SetAbout(szAbout1$, szAbout2$) STATIC
                    395:     IF FSetAbout(szAbout1$, szAbout2$) = 0 THEN
                    396: '$ifdef DEBUG
                    397:         StfApiErr saeFail, "SetAbout", szAbout1$ + "," + szAbout2$
                    398: '$endif ''DEBUG
                    399:         ERROR STFERR
                    400:     END IF
                    401: END SUB
                    402: 
                    403: 
                    404: '*************************************************************************
                    405: SUB SetTitle(sz$) STATIC
                    406:     SetWindowText HwndFrame(), sz$
                    407: END SUB
                    408: 
                    409: 
                    410: '*************************************************************************
                    411: SUB ReadInfFile (szFile$) STATIC
                    412: '$ifdef DEBUG
                    413:     if FValidFATPath(szFile$) = 0 then
                    414:         BadArgErr 1, "ReadInfFile", szFile$
                    415:     end if
                    416:     IF FOpenInf(szFile$, 1, 1) = 0 THEN
                    417:         StfApiErr saeFail, "ReadInfFile", szFile$
                    418: '$else  ''!DEBUG
                    419:     IF FOpenInf(szFile$, 1, 0) = 0 THEN
                    420: '$endif ''!DEBUG
                    421:         ERROR STFERR
                    422:     END IF
                    423: END SUB
                    424: 
                    425: 
                    426: '*************************************************************************
                    427: FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) STATIC AS STRING
                    428: '$ifdef DEBUG
                    429:     if szDll$ = "" then
                    430:         n% = 1
                    431:     elseif szDlgProc$ = "" then
                    432:         n% = 3
                    433:     else
                    434:         n% = 0
                    435:     end if
                    436:     if n% > 0 then
                    437:         BadArgErr n%, "UIStartDlg", szDll$+", "+STR$(Dlg%)+", "+szDlgProc$+", "+STR$(HelpDlg%)+", "+szHelpProc$
                    438:     end if
                    439: '$endif ''DEBUG
                    440: 
                    441:     IF FDoDialogExt(HwndFrame(), szDll$, Dlg%, szDlgProc$, szDll$, HelpDlg%, szHelpProc$) = 0 THEN
                    442: '$ifdef DEBUG
                    443:         StfApiErr saeFail, "UIStartDlg", szDll$+", "+STR$(Dlg%)+", "+szDlgProc$+", "+STR$(HelpDlg%)+", "+szHelpProc$
                    444: '$endif ''DEBUG
                    445:         ERROR STFERR
                    446:     ELSE
                    447:         UIStartDlg = GetSymbolValue("DLGEVENT")
                    448:     END IF
                    449: END FUNCTION
                    450: 
                    451: 
                    452: '*************************************************************************
                    453: FUNCTION UIStartDlgExt(szDll$, Dlg%, szDlgProc$, szHelpDll$, HelpDlg%, szHelpProc$) STATIC AS STRING
                    454: '$ifdef DEBUG
                    455:     if szDll$ = "" then
                    456:         n% = 1
                    457:     elseif szDlgProc$ = "" then
                    458:         n% = 3
                    459:     else
                    460:         n% = 0
                    461:     end if
                    462:     if n% > 0 then
                    463:         BadArgErr n%, "UIStartDlgExt", szDll$+", "+STR$(Dlg%)+", "+szDlgProc$+", "+szHelpDll$+", "+STR$(HelpDlg%)+", "+szHelpProc$
                    464:     end if
                    465: '$endif ''DEBUG
                    466: 
                    467:     IF FDoDialogExt(HwndFrame(), szDll$, Dlg%, szDlgProc$, szHelpDll$, HelpDlg%, szHelpProc$) = 0 THEN
                    468: '$ifdef DEBUG
                    469:         StfApiErr saeFail, "UIStartDlgExt", szDll$+", "+STR$(Dlg%)+", "+szDlgProc$+", "+szHelpDll$+", "+STR$(HelpDlg%)+", "+szHelpProc$
                    470: '$endif ''DEBUG
                    471:         ERROR STFERR
                    472:     ELSE
                    473:         UIStartDlgExt = GetSymbolValue("DLGEVENT")
                    474:     END IF
                    475: END FUNCTION
                    476: 
                    477: 
                    478: '*************************************************************************
                    479: SUB UIPop (n%) STATIC
                    480:     IF FKillNDialogs(n%) = 0 THEN
                    481: '$ifdef DEBUG
                    482:         StfApiErr saeFail, "UIPop", STR$(n%)
                    483: '$endif ''DEBUG
                    484:         ERROR STFERR
                    485:     END IF
                    486: END SUB
                    487: 
                    488: 
                    489: '*************************************************************************
                    490: SUB UIPopAll STATIC
                    491:     IF FKillNDialogs(65535) = 0 THEN
                    492: '$ifdef DEBUG
                    493:         StfApiErr saeFail, "UIPopAll", ""
                    494: '$endif ''DEBUG
                    495:         ERROR STFERR
                    496:     END IF
                    497: END SUB
                    498: 
                    499: 
                    500: '*************************************************************************
                    501: FUNCTION GetSymbolValue(szSymbol$) STATIC AS STRING
                    502: '$ifdef DEBUG
                    503:     if szSymbol$ = "" then
                    504:         BadArgErr 1, "GetSymbolValue", szSymbol$
                    505:     end if
                    506: '$endif ''DEBUG
                    507:     szValue$ = string$(cbSymValMax,32)
                    508:     Length% = CbGetSymbolValue(szSymbol$, szValue$, cbSymValMax)
                    509:     GetSymbolValue = szValue$
                    510:     IF Length% >= cbSymValMax THEN
                    511:         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
                    512:         ERROR STFERR
                    513:     END IF
                    514:     IF szSymbol$ = "" THEN
                    515:         ERROR STFERR
                    516:     END IF
                    517:     szValue$ = ""
                    518: END FUNCTION
                    519: 
                    520: 
                    521: '*************************************************************************
                    522: FUNCTION GetListLength(szSymbol$) STATIC AS INTEGER
                    523: '$ifdef DEBUG
                    524:     if szSymbol$ = "" then
                    525:         BadArgErr 1, "GetListLength", szSymbol$
                    526:     end if
                    527: '$endif ''DEBUG
                    528:     GetListLength = UsGetListLength(szSymbol$)
                    529:     IF szSymbol$ = "" THEN
                    530:         ERROR STFERR
                    531:     END IF
                    532: END FUNCTION
                    533: 
                    534: 
                    535: '*************************************************************************
                    536: FUNCTION GetListItem(szListSymbol$, nItem%) STATIC AS STRING
                    537: '$ifdef DEBUG
                    538:     if szListSymbol$ = "" then
                    539:         BadArgErr 1, "GetListItem", szListSymbol$+", "+STR$(nItem%)
                    540:     end if
                    541: 
                    542:     if nItem% <= 0 or nItem% > GetListLength(szListSymbol$) then
                    543:         BadArgErr 2, "GetListItem", szListSymbol$+", "+STR$(nItem%)
                    544:     end if
                    545: '$endif ''DEBUG
                    546: 
                    547:     szListItem$ = string$(cbSymValMax,32)
                    548:     Length% = CbGetListItem(szListSymbol$, nItem%, szListItem$, cbSymValMax)
                    549:     GetListItem = szListItem$
                    550:     IF Length% >= cbSymValMax THEN
                    551:         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
                    552:         ERROR STFERR
                    553:     END IF
                    554:     IF szListSymbol$ = "" THEN
                    555:         ERROR STFERR
                    556:     END IF
                    557:     if nItem% <= 0 or nItem% > GetListLength(szListSymbol$) then
                    558:         ERROR STFERR
                    559:     end if
                    560:     szListItem$ = ""
                    561: END FUNCTION
                    562: 
                    563: 
                    564: '*************************************************************************
                    565: SUB AddListItem(szSymbol$, szItem$) STATIC
                    566: '$ifdef DEBUG
                    567:     if szSymbol$ = "" then
                    568:         BadArgErr 1, "AddListItem", szSymbol$+", "+szItem$
                    569:     end if
                    570: '$endif ''DEBUG
                    571:     IF FAddListItem(szSymbol$, szItem$) = 0 THEN
                    572: '$ifdef DEBUG
                    573:         StfApiErr saeFail, "AddListItem", szSymbol$+", "+szItem$
                    574: '$endif ''DEBUG
                    575:         ERROR STFERR
                    576:     END IF
                    577: END SUB
                    578: 
                    579: 
                    580: '*************************************************************************
                    581: SUB ReplaceListItem(szSymbol$, n%, szItem$) STATIC
                    582: '$ifdef DEBUG
                    583:     if szSymbol$ = "" then
                    584:         nArg% = 1
                    585:     elseif (n% <= 0) OR (n% > GetListLength(szSymbol$)) then
                    586:         nArg% = 2
                    587:     else
                    588:         nArg% = 0
                    589:     end if
                    590:     if nArg% > 0 then
                    591:         BadArgErr nArg%, "ReplaceListItem", szSymbol$+", "+STR$(n%)+", "+szItem$
                    592:     end if
                    593: '$endif ''DEBUG
                    594: 
                    595:     IF FReplaceListItem(szSymbol$, n%, szItem$) = 0 THEN
                    596: '$ifdef DEBUG
                    597:         StfApiErr saeFail, "ReplaceListItem", szSymbol$+", "+STR$(n%)+", "+szItem$
                    598: '$endif ''DEBUG
                    599:         ERROR STFERR
                    600:     END IF
                    601: END SUB
                    602: 
                    603: 
                    604: '**************************************************************************
                    605: SUB MakeListFromSectionKeys(szSymbol$, szSect$) STATIC
                    606: '$ifdef DEBUG
                    607:     if szSymbol$ = "" then
                    608:         n% = 1
                    609:     elseif FValidInfSect(szSect$) = 0 then
                    610:         n% = 2
                    611:     else
                    612:         n% = 0
                    613:     end if
                    614:     if n% > 0 then
                    615:         BadArgErr n%, "MakeListFromSectionKeys", szSymbol$+", "+szSect$
                    616:     end if
                    617: '$endif ''DEBUG
                    618: 
                    619:     IF FSetSymbolToListOfInfKeys(szSymbol$, szSect$, 1) = 0 THEN
                    620: '$ifdef DEBUG
                    621:         StfApiErr saeFail, "MakeListFromSectionKeys", szSymbol$+", "+szSect$
                    622: '$endif ''DEBUG
                    623:         ERROR STFERR
                    624:     END IF
                    625: END SUB
                    626: 
                    627: 
                    628: '*************************************************************************
                    629: SUB SetSymbolValue(szSymbol$, szValue$) STATIC
                    630: '$ifdef DEBUG
                    631:     if szSymbol$ = "" then
                    632:         BadArgErr 1, "SetSymbolValue", szSymbol$+", "+szValue$
                    633:     end if
                    634: '$endif ''DEBUG
                    635:     IF FSetSymbolValue(szSymbol$, szValue$) = 0 THEN
                    636: '$ifdef DEBUG
                    637:         StfApiErr saeFail, "SetSymbolValue", szSymbol$+", "+szValue$
                    638: '$endif ''DEBUG
                    639:         ERROR STFERR
                    640:     END IF
                    641: END SUB
                    642: 
                    643: 
                    644: '*************************************************************************
                    645: SUB RemoveSymbol(szSym$) STATIC
                    646: '$ifdef DEBUG
                    647:     if szSym$ = "" then
                    648:         BadArgErr 1, "RemoveSymbol", szSym$
                    649:     end if
                    650: '$endif ''DEBUG
                    651:     IF FRemoveSymbol(szSym$) = 0 THEN
                    652: '$ifdef DEBUG
                    653:         StfApiErr saeFail, "RemoveSymbol", szSym$
                    654: '$endif ''DEBUG
                    655:         ERROR STFERR
                    656:     END IF
                    657: END SUB
                    658: 
                    659: 
                    660: '*************************************************************************
                    661: FUNCTION ShowWaitCursor STATIC AS INTEGER
                    662:     ShowWaitCursor = HShowWaitCursor
                    663: END FUNCTION
                    664: 
                    665: 
                    666: '*************************************************************************
                    667: SUB RestoreCursor (hPrev%) STATIC
                    668:     i% = FRestoreCursor(hPrev%)
                    669:     IF i% = 0 THEN
                    670: '$ifdef DEBUG
                    671:         StfApiErr saeFail, "RestoreCursor", ""
                    672: '$endif ''DEBUG
                    673:         ERROR STFERR
                    674:     END IF
                    675: END SUB
                    676: 
                    677: 
                    678: '*************************************************************************
                    679: FUNCTION SetBeepingMode (mode%) STATIC AS INTEGER
                    680:     SetBeepingMode = FSetBeepingMode(mode%)
                    681: END FUNCTION
                    682: 
                    683: 
                    684: '*************************************************************************
                    685: FUNCTION SetSilentMode (mode%) STATIC AS INTEGER
                    686:     SetSilentMode = FSetSilent(mode%)
                    687: END FUNCTION
                    688: 
                    689: 
                    690: '*************************************************************************
                    691: FUNCTION GetSectionKeyDate (szSect$, szKey$) STATIC AS STRING
                    692: '$ifdef DEBUG
                    693:     if FValidInfSect(szSect$) = 0 then
                    694:         n% = 1
                    695:     elseif szKey$ = "" then
                    696:         n% = 2
                    697:     else
                    698:         n% = 0
                    699:     end if
                    700:     if n% > 0 then
                    701:         BadArgErr n%, "GetSectionKeyDate", szSect$+", "+szKey$
                    702:     end if
                    703: '$endif ''DEBUG
                    704: 
                    705:     szBuf$ = string$(128, 32)
                    706:     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 5, szBuf$, 128)
                    707:     IF Length% >= 128 THEN
                    708:         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
                    709:         ERROR STFERR
                    710:     END IF
                    711: 
                    712:     IF Length% = -1 THEN
                    713: '$ifdef DEBUG
                    714:         StfApiErr saeFail, "GetSectionKeyDate", szSect$+", "+szKey$
                    715: '$endif ''DEBUG
                    716:         ERROR STFERR
                    717:     END IF
                    718: 
                    719:     GetSectionKeyDate = szBuf$
                    720:     szBuf$ = ""
                    721: END FUNCTION
                    722: 
                    723: 
                    724: '*************************************************************************
                    725: FUNCTION GetSectionKeyFilename (szSect$, szKey$) STATIC AS STRING
                    726: '$ifdef DEBUG
                    727:     if FValidInfSect(szSect$) = 0 then
                    728:         n% = 1
                    729:     elseif szKey$ = "" then
                    730:         n% = 2
                    731:     else
                    732:         n% = 0
                    733:     end if
                    734:     if n% > 0 then
                    735:         BadArgErr n%, "GetSectionKeyFilename", szSect$+", "+szKey$
                    736:     end if
                    737: '$endif ''DEBUG
                    738: 
                    739:     szBuf$ = string$(128, 32)
                    740:     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 1, szBuf$, 128)
                    741:     IF Length% >= 128 THEN
                    742:         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
                    743:         ERROR STFERR
                    744:     END IF
                    745: 
                    746:     IF Length% = -1 THEN
                    747: '$ifdef DEBUG
                    748:         StfApiErr saeFail, "GetSectionKeyFilename", szSect$+", "+szKey$
                    749: '$endif ''DEBUG
                    750:         ERROR STFERR
                    751:     END IF
                    752: 
                    753:     GetSectionKeyFilename = szBuf$
                    754:     szBuf$ = ""
                    755: END FUNCTION
                    756: 
                    757: 
                    758: '*************************************************************************
                    759: FUNCTION GetSectionKeySize (szSect$, szKey$) STATIC AS LONG
                    760: '$ifdef DEBUG
                    761:     if FValidInfSect(szSect$) = 0 then
                    762:         n% = 1
                    763:     elseif szKey$ = "" then
                    764:         n% = 2
                    765:     else
                    766:         n% = 0
                    767:     end if
                    768:     if n% > 0 then
                    769:         BadArgErr n%, "GetSectionKeySize", szSect$+", "+szKey$
                    770:     end if
                    771: '$endif ''DEBUG
                    772: 
                    773:     szBuf$ = string$(128, 32)
                    774:     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 15, szBuf$, 128)
                    775:     IF Length% >= 128 THEN
                    776:         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
                    777:         ERROR STFERR
                    778:     END IF
                    779: 
                    780:     IF Length% = -1 THEN
                    781: '$ifdef DEBUG
                    782:         StfApiErr saeFail, "GetSectionKeySize", szSect$+", "+szKey$
                    783: '$endif ''DEBUG
                    784:         ERROR STFERR
                    785:     END IF
                    786: 
                    787:     GetSectionKeySize = VAL(szBuf$)
                    788:     szBuf$ = ""
                    789: END FUNCTION
                    790: 
                    791: 
                    792: '*************************************************************************
                    793: FUNCTION GetSectionKeyVersion (szSect$, szKey$) STATIC AS STRING
                    794: '$ifdef DEBUG
                    795:     if FValidInfSect(szSect$) = 0 then
                    796:         n% = 1
                    797:     elseif szKey$ = "" then
                    798:         n% = 2
                    799:     else
                    800:         n% = 0
                    801:     end if
                    802:     if n% > 0 then
                    803:         BadArgErr n%, "GetSectionKeyVersion", szSect$+", "+szKey$
                    804:     end if
                    805: '$endif ''DEBUG
                    806: 
                    807:     szBuf$ = string$(128, 32)
                    808:     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 19, szBuf$, 128)
                    809:     IF Length% >= 128 THEN
                    810:         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
                    811:         ERROR STFERR
                    812:     END IF
                    813: 
                    814:     IF Length% = -1 THEN
                    815: '$ifdef DEBUG
                    816:         StfApiErr saeFail, "GetSectionKeyVersion", szSect$+", "+szKey$
                    817: '$endif ''DEBUG
                    818:         ERROR STFERR
                    819:     END IF
                    820: 
                    821:     GetSectionKeyVersion = szBuf$
                    822:     szBuf$ = ""
                    823: END FUNCTION
                    824: 
                    825: 
                    826: '*************************************************************************
                    827: SUB MakeListFromSectionDate (szSym$, szSect$) STATIC
                    828: '$ifdef DEBUG
                    829:     if szSym$ = "" then
                    830:         n% = 1
                    831:     elseif FValidInfSect(szSect$) = 0 then
                    832:         n% = 2
                    833:     else
                    834:         n% = 0
                    835:     end if
                    836:     if n% > 0 then
                    837:         BadArgErr n%, "MakeListFromSectionDate", szSym$+", "+szSect$
                    838:     end if
                    839: '$endif ''DEBUG
                    840: 
                    841:     IF FMakeListInfSectionField(szSym$, szSect$, 5) = 0 THEN
                    842: '$ifdef DEBUG
                    843:         StfApiErr saeFail, "MakeListFromSectionDate", szSym$+", "+szSect$
                    844: '$endif ''DEBUG
                    845:         ERROR STFERR
                    846:     END IF
                    847: END SUB
                    848: 
                    849: 
                    850: '*************************************************************************
                    851: SUB MakeListFromSectionFilename (szSym$, szSect$) STATIC
                    852: '$ifdef DEBUG
                    853:     if szSym$ = "" then
                    854:         n% = 1
                    855:     elseif FValidInfSect(szSect$) = 0 then
                    856:         n% = 2
                    857:     else
                    858:         n% = 0
                    859:     end if
                    860:     if n% > 0 then
                    861:         BadArgErr n%, "MakeListFromSectionFilename", szSym$+", "+szSect$
                    862:     end if
                    863: '$endif ''DEBUG
                    864: 
                    865:     IF FMakeListInfSectionField(szSym$, szSect$, 1) = 0 THEN
                    866: '$ifdef DEBUG
                    867:         StfApiErr saeFail, "MakeListFromSectionFilename", szSym$+", "+szSect$
                    868: '$endif ''DEBUG
                    869:         ERROR STFERR
                    870:     END IF
                    871: END SUB
                    872: 
                    873: 
                    874: '*************************************************************************
                    875: SUB MakeListFromSectionSize (szSym$, szSect$) STATIC
                    876: '$ifdef DEBUG
                    877:     if szSym$ = "" then
                    878:         n% = 1
                    879:     elseif FValidInfSect(szSect$) = 0 then
                    880:         n% = 2
                    881:     else
                    882:         n% = 0
                    883:     end if
                    884:     if n% > 0 then
                    885:         BadArgErr n%, "MakeListFromSectionSize", szSym$+", "+szSect$
                    886:     end if
                    887: '$endif ''DEBUG
                    888: 
                    889:     IF FMakeListInfSectionField(szSym$, szSect$, 15) = 0 THEN
                    890: '$ifdef DEBUG
                    891:         StfApiErr saeFail, "MakeListFromSectionSize", szSym$+", "+szSect$
                    892: '$endif ''DEBUG
                    893:         ERROR STFERR
                    894:     END IF
                    895: END SUB
                    896: 
                    897: 
                    898: '*************************************************************************
                    899: SUB MakeListFromSectionVersion (szSym$, szSect$) STATIC
                    900: '$ifdef DEBUG
                    901:     if szSym$ = "" then
                    902:         n% = 1
                    903:     elseif FValidInfSect(szSect$) = 0 then
                    904:         n% = 2
                    905:     else
                    906:         n% = 0
                    907:     end if
                    908:     if n% > 0 then
                    909:         BadArgErr n%, "MakeListFromSectionVersion", szSym$+", "+szSect$
                    910:     end if
                    911: '$endif ''DEBUG
                    912: 
                    913:     IF FMakeListInfSectionField(szSym$, szSect$, 19) = 0 THEN
                    914: '$ifdef DEBUG
                    915:         StfApiErr saeFail, "MakeListFromSectionVersion", szSym$+", "+szSect$
                    916: '$endif ''DEBUG
                    917:         ERROR STFERR
                    918:     END IF
                    919: END SUB
                    920: 
                    921: 
                    922: '*************************************************************************
                    923: SUB InitInstall STATIC
                    924:     IF hSetup > 0 THEN
                    925: '$ifdef DEBUG
                    926:         StfApiErr saeInit, "InitInstall", ""
                    927: '$endif ''DEBUG
                    928:     ELSEIF FInitializeInstall(HinstFrame(), HwndFrame()) = 0 THEN
                    929: '$ifdef DEBUG
                    930:         StfApiErr saeFail, "InitInstall", ""
                    931: '$endif ''DEBUG
                    932:         END
                    933:     END IF
                    934: END SUB
                    935: 
                    936: 
                    937: '*************************************************************************
                    938: SUB CreateDir (szDir$, cmo%) STATIC
                    939: '$ifdef DEBUG
                    940:     if FValidFATDir(szDir$) = 0 then
                    941:         BadArgErr 1, "CreateDir", szDir$+", "+STR$(cmo%)
                    942:     end if
                    943: '$endif ''DEBUG
                    944:     IF FCreateDir(szDir$, cmo%) = 0 THEN
                    945: '$ifdef DEBUG
                    946:         StfApiErr saeFail, "CreateDir", szDir$+", "+STR$(cmo%)
                    947: '$endif ''DEBUG
                    948:         ERROR STFERR
                    949:     END IF
                    950: END SUB
                    951: 
                    952: 
                    953: '*************************************************************************
                    954: SUB RemoveDir (szDir$, cmo%) STATIC
                    955: '$ifdef DEBUG
                    956:     if FValidFATDir(szDir$) = 0 then
                    957:         BadArgErr 1, "RemoveDir", szDir$+", "+STR$(cmo%)
                    958:     end if
                    959: '$endif ''DEBUG
                    960:     IF FRemoveDir(szDir$, cmo%) = 0 THEN
                    961: '$ifdef DEBUG
                    962:         StfApiErr saeFail, "RemoveDir", szDir$+", "+STR$(cmo%)
                    963: '$endif ''DEBUG
                    964:         ERROR STFERR
                    965:     END IF
                    966: END SUB
                    967: 
                    968: 
                    969: 
                    970: '*************************************************************************
                    971: SUB RemoveIniSection (szFile$, szSect$, cmo%) STATIC
                    972: '$ifdef DEBUG
                    973:     if FValidIniFile(szFile$) = 0 then
                    974:         n% = 1
                    975:     elseif FValidInfSect(szSect$) = 0 then
                    976:         n% = 2
                    977:     else
                    978:         n% = 0
                    979:     end if
                    980:     if n% > 0 then
                    981:         BadArgErr n%, "RemoveIniSection", szFile$+", "+szSect$+", "+STR$(cmo%)
                    982:     end if
                    983: '$endif ''DEBUG
                    984: 
                    985:     IF FRemoveIniSection(szFile$, szSect$, cmo%) = 0 THEN
                    986: '$ifdef DEBUG
                    987:         StfApiErr saeFail, "RemoveIniSection", szFile$+", "+szSect$+", "+STR$(cmo%)
                    988: '$endif ''DEBUG
                    989:         ERROR STFERR
                    990:     END IF
                    991: END SUB
                    992: 
                    993: 
                    994: '*************************************************************************
                    995: SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
                    996: '$ifdef DEBUG
                    997:     if FValidIniFile(szFile$) = 0 then
                    998:         n% = 1
                    999:     elseif FValidInfSect(szSect$) = 0 then
                   1000:         n% = 2
                   1001:     else
                   1002:         n% = 0
                   1003:     end if
                   1004:     if n% > 0 then
                   1005:         BadArgErr n%, "CreateIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
                   1006:     end if
                   1007: '$endif ''DEBUG
                   1008: 
                   1009:     IF FCreateIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
                   1010: '$ifdef DEBUG
                   1011:         StfApiErr saeFail, "CreateIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
                   1012: '$endif ''DEBUG
                   1013:         ERROR STFERR
                   1014:     END IF
                   1015: END SUB
                   1016: 
                   1017: 
                   1018: '*************************************************************************
                   1019: SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%) STATIC
                   1020: '$ifdef DEBUG
                   1021:     if FValidIniFile(szFile$) = 0 then
                   1022:         n% = 1
                   1023:     elseif FValidInfSect(szSect$) = 0 then
                   1024:         n% = 2
                   1025:     elseif szKey$ = "" then
                   1026:         n% = 3
                   1027:     else
                   1028:         n% = 0
                   1029:     end if
                   1030:     if n% > 0 then
                   1031:         BadArgErr n%, "RemoveIniKey", szFile$+", "+szSect$+", "+szKey$+", "+STR$(cmo%)
                   1032:     end if
                   1033: '$endif ''DEBUG
                   1034: 
                   1035:     IF FRemoveIniKey(szFile$, szSect$, szKey$, cmo%) = 0 THEN
                   1036: '$ifdef DEBUG
                   1037:         StfApiErr saeFail, "RemoveIniKey", szFile$+", "+szSect$+", "+szKey$+", "+STR$(cmo%)
                   1038: '$endif ''DEBUG
                   1039:         ERROR STFERR
                   1040:     END IF
                   1041: END SUB
                   1042: 
                   1043: 
                   1044: '*************************************************************************
                   1045: SUB CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
                   1046: '$ifdef DEBUG
                   1047:     if FValidFATPath(szFile$) = 0 then
                   1048:         n% = 1
                   1049:     elseif FValidInfSect(szSect$) = 0 then
                   1050:         n% = 2
                   1051:     elseif szKey$ = "" then
                   1052:         n% = 3
                   1053:     else
                   1054:         n% = 0
                   1055:     end if
                   1056:     if n% > 0 then
                   1057:         BadArgErr n%, "CreateSysIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
                   1058:     end if
                   1059: '$endif ''DEBUG
                   1060: 
                   1061:     IF FCreateSysIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
                   1062: '$ifdef DEBUG
                   1063:         StfApiErr saeFail, "CreateSysIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
                   1064: '$endif ''DEBUG
                   1065:         ERROR STFERR
                   1066:     END IF
                   1067: END SUB
                   1068: 
                   1069: 
                   1070: '*************************************************************************
                   1071: SUB CreateProgmanGroup (szGroup$, szPath$, cmo%) STATIC
                   1072: '$ifdef DEBUG
                   1073:     if szGroup$ = "" or len(szGroup$) > 24 then
                   1074:         BadArgErr 1, "CreateProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
                   1075:     end if
                   1076: '$endif ''DEBUG
                   1077:     IF FCreateProgManGroup(szGroup$, szPath$, cmo%) = 0 THEN
                   1078: '$ifdef DEBUG
                   1079:         StfApiErr saeFail, "CreateProgmanGroup", szGroup$+", "+szPath$+", "+STR$(cmo%)
                   1080: '$endif ''DEBUG
                   1081:         ERROR STFERR
                   1082:     END IF
                   1083: END SUB
                   1084: 
                   1085: 
                   1086: '*************************************************************************
                   1087: SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%) STATIC
                   1088: '$ifdef DEBUG
                   1089:     if szGroup$ = "" or len(szGroup$) > 24 then
                   1090:         BadArgErr 1, "ShowProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
                   1091:     end if
                   1092: '$endif ''DEBUG
                   1093:     IF FShowProgManGroup(szGroup$, STR$(Cmd%), cmo%) = 0 THEN
                   1094: '$ifdef DEBUG
                   1095:         StfApiErr saeFail, "ShowProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
                   1096: '$endif ''DEBUG
                   1097:         ERROR STFERR
                   1098:     END IF
                   1099: END SUB
                   1100: 
                   1101: 
                   1102: '*************************************************************************
                   1103: SUB StampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) STATIC
                   1104: '$ifdef DEBUG
                   1105:     if FValidInfSect(szSect$) = 0 then
                   1106:         n% = 1
                   1107:     elseif szKey$ = "" then
                   1108:         n% = 2
                   1109:     elseif FValidFATDir(szDst$) = 0 then
                   1110:         n% = 3
                   1111:     else
                   1112:         n% = 0
                   1113:     end if
                   1114:     if n% > 0 then
                   1115:         BadArgErr n%, "StampResource", szSect$+", "+szKey$+", "+szDst$+", "+STR$(wResType%)+", "+STR$(wResId%)+", "+szData$+", "+STR$(cbData%)
                   1116:     end if
                   1117: '$endif ''DEBUG
                   1118: 
                   1119:     IF FStampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) = 0 THEN
                   1120: '$ifdef DEBUG
                   1121:         StfApiErr saeFail, "StampResource", szSect$+", "+szKey$+", "+szDst$+", "+STR$(wResType%)+", "+STR$(wResId%)+", "+szData$+", "+STR$(cbData%)
                   1122: '$endif ''DEBUG
                   1123:         ERROR STFERR
                   1124:     END IF
                   1125: END SUB
                   1126: 
                   1127: 
                   1128: '*************************************************************************
                   1129: SUB DumpCopyList (szFile$) STATIC
                   1130: '$ifdef DEBUG
                   1131:     if szFile$ = "" then
                   1132:         BadArgErr 1, "DumpCopyList", szFile$
                   1133:     end if
                   1134: '$endif ''DEBUG
                   1135:     IF FDumpCopyListToFile (szFile$) = 0 THEN
                   1136: '$ifdef DEBUG
                   1137:         StfApiErr saeFail, "DumpCopyList", szFile$
                   1138: '$endif ''DEBUG
                   1139:         ERROR STFERR
                   1140:     END IF
                   1141: END SUB
                   1142: 
                   1143: 
                   1144: '*************************************************************************
                   1145: SUB ClearCopyList STATIC
                   1146:     ResetCopyList
                   1147: END SUB
                   1148: 
                   1149: 
                   1150: '*************************************************************************
                   1151: FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) STATIC AS LONG
                   1152:     lNeed& = LcbGetCopyListCost (szExtraList$, szCostList$, szNeedList$)
                   1153:     IF lNeed& < 0 THEN
                   1154: '$ifdef DEBUG
                   1155:         StfApiErr saeFail, "GetCopyListCost", szExtraList$+", "+szCostList$+", "+szNeedList$
                   1156: '$endif ''DEBUG
                   1157:         ERROR STFERR
                   1158:     END IF
                   1159:     GetCopyListCost = lNeed&
                   1160: END FUNCTION
                   1161: 
                   1162: 
                   1163: '*************************************************************************
                   1164: SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%) STATIC
                   1165:     szItemNew$ = szItem$
                   1166:     IF szOther$ <> "" THEN
                   1167:         szItemNew$ = szItem$ + "," + szOther$
                   1168:     END IF
                   1169: '$ifdef DEBUG
                   1170:     if szGroup$ = "" or len(szGroup$) > 24 then
                   1171:         BadArgErr 1, "CreateProgmanItem", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
                   1172:     end if
                   1173: '$endif ''DEBUG
                   1174: 
                   1175:     IF FCreateProgManItem(szGroup$, szItemNew$, szCmd$, cmo%) = 0 THEN
                   1176: '$ifdef DEBUG
                   1177:         StfApiErr saeFail, "CreateProgmanItem", szGroup$+", "+szItem$+", "+szCmd$+", "+szOther$+", "+STR$(cmo%)
                   1178: '$endif ''DEBUG
                   1179:         ERROR STFERR
                   1180:     END IF
                   1181:     szItemNew$ = ""
                   1182: END SUB
                   1183: 
                   1184: 
                   1185: '*************************************************************************
                   1186: SUB AddDos5Help (szProgName$, szProgHelp$, cmo%) STATIC
                   1187: '$ifdef DEBUG
                   1188:     if szProgName$ = "" OR MID$(szProgName$, 1, 1) = "@" OR LEN(szProgName$) > 8 then
                   1189:         n% = 1
                   1190:     elseif INSTR(szProgName$, " ") <> 0 OR INSTR(szProgName$, CHR$(9)) <> 0 then
                   1191:         n% = 1
                   1192:     elseif szProgHelp$ = "" then
                   1193:         n% = 2
                   1194:     else
                   1195:         n% = 0
                   1196:     end if
                   1197:     if n% > 0 then
                   1198:         BadArgErr n%, "AddDos5Help", szProgName$+", "+szProgHelp$+", "+STR$(cmo%)
                   1199:     end if
                   1200: '$endif ''DEBUG
                   1201:     IF FAddDos5Help (szProgName$, szProgHelp$, cmo%) = 0 THEN
                   1202: '$ifdef DEBUG
                   1203:         StfApiErr saeFail, "AddDos5Help", szProgName$+", "+szProgHelp$+", "+STR$(cmo%)
                   1204: '$endif ''DEBUG
                   1205:         ERROR STFERR
                   1206:     END IF
                   1207: END SUB
                   1208: 
                   1209: 
                   1210: '*************************************************************************
                   1211: SUB CopyFilesInCopyList STATIC
                   1212:     grc% = GrcCopyFilesInCopyList (HinstFrame())
                   1213: 
                   1214:     IF grc% = grcUserQuit THEN
                   1215:         ERROR STFQUIT
                   1216:     ELSEIF grc% > 0 THEN
                   1217: '$ifdef DEBUG
                   1218:         StfApiErr saeFail, "CopyFilesInCopyList", ""
                   1219: '$endif ''DEBUG
                   1220:         ERROR STFERR
                   1221:     END IF
                   1222: END SUB
                   1223: 
                   1224: 
                   1225: '*************************************************************************
                   1226: SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%) STATIC
                   1227: '$ifdef DEBUG
                   1228:     if FValidFATPath(szFullPathSrc$) = 0 then
                   1229:         n% = 1
                   1230:     elseif FValidFATPath(szFullPathDst$) = 0 then
                   1231:         n% = 2
                   1232:     else
                   1233:         n% = 0
                   1234:     end if
                   1235:     if n% > 0 then
                   1236:         BadArgErr n%, "CopyFile", szFullPathSrc$+", "+szFullPathDst$+", "+STR$(cmo%)+", "+STR$(fAppend%)
                   1237:     end if
                   1238: '$endif ''DEBUG
                   1239: 
                   1240:     IF  FCopyOneFile(szFullPathSrc$, szFullPathDst$, (cmo OR cmoCopy), fAppend%) = 0 THEN
                   1241: '$ifdef DEBUG
                   1242:         StfApiErr saeFail, "CopyFile", szFullPathSrc$+", "+szFullPathDst$+", "+STR$(cmo%)+", "+STR$(fAppend%)
                   1243: '$endif ''DEBUG
                   1244:         ERROR STFERR
                   1245:     END IF
                   1246: END SUB
                   1247: 
                   1248: 
                   1249: 
                   1250: '*************************************************************************
                   1251: SUB RemoveFile (szFullPathSrc$, cmo%) STATIC
                   1252: '$ifdef DEBUG
                   1253:     if FValidFATPath(szFullPathSrc$) = 0 then
                   1254:         BadArgErr 1, "RemoveFile", szFullPathSrc$+", "+STR$(cmo%)
                   1255:     end if
                   1256: '$endif ''DEBUG
                   1257:     IF  YnrcRemoveFile(szFullPathSrc$, cmo%) = ynrcNo THEN
                   1258: '$ifdef DEBUG
                   1259:         StfApiErr saeFail, "RemoveFile", szFullPathSrc$+", "+STR$(cmo%)
                   1260: '$endif ''DEBUG
                   1261:         ERROR STFERR
                   1262:     END IF
                   1263: END SUB
                   1264: 
                   1265: 
                   1266: '*************************************************************************
                   1267: SUB BackupFile (szFullPath$, szBackup$) STATIC
                   1268: '$ifdef DEBUG
                   1269:     if FValidFATPath(szFullPath$) = 0 then
                   1270:         n% = 1
                   1271:     elseif szBackup$ = "" then
                   1272:         n% = 2
                   1273:     else
                   1274:         n% = 0
                   1275:     end if
                   1276:     if n% > 0 then
                   1277:         BadArgErr n%, "BackupFile", szFullPath$+", "+szBackup$
                   1278:     end if
                   1279: '$endif ''DEBUG
                   1280: 
                   1281:     IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
                   1282: '$ifdef DEBUG
                   1283:         StfApiErr saeFail, "BackupFile", szFullPath$+", "+szBackup$
                   1284: '$endif ''DEBUG
                   1285:         ERROR STFERR
                   1286:     END IF
                   1287: END SUB
                   1288: 
                   1289: 
                   1290: '*************************************************************************
                   1291: SUB RenameFile (szFullPath$, szBackup$) STATIC
                   1292: '$ifdef DEBUG
                   1293:     if FValidFATPath(szFullPath$) = 0 then
                   1294:         n% = 1
                   1295:     elseif szBackup$ = "" then
                   1296:         n% = 2
                   1297:     else
                   1298:         n% = 0
                   1299:     end if
                   1300:     if n% > 0 then
                   1301:         BadArgErr n%, "RenameFile", szFullPath$+", "+szBackup$
                   1302:     end if
                   1303: '$endif ''DEBUG
                   1304: 
                   1305:     IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
                   1306: '$ifdef DEBUG
                   1307:         StfApiErr saeFail, "RenameFile", szFullPath$+", "+szBackup$
                   1308: '$endif ''DEBUG
                   1309:         ERROR STFERR
                   1310:     END IF
                   1311: END SUB
                   1312: 
                   1313: 
                   1314: '*************************************************************************
                   1315: SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$) STATIC
                   1316: '$ifdef DEBUG
                   1317:     if FValidInfSect(szSect$) = 0 then
                   1318:         n% = 1
                   1319:     elseif FValidFATDir(szSrc$) = 0 then
                   1320:         n% = 2
                   1321:     elseif FValidFATDir(szDest$) = 0 then
                   1322:         n% = 3
                   1323:     else
                   1324:         n% = 0
                   1325:     end if
                   1326:     if n% > 0 then
                   1327:         BadArgErr n%, "AddSectionFilesToCopyList", szSect$+", "+szSrc$+", "+szDest$
                   1328:     end if
                   1329: '$endif ''DEBUG
                   1330: 
                   1331:     IF FAddSectionFilesToCopyList (szSect$, szSrc$, szDest$) = 0 THEN
                   1332: '$ifdef DEBUG
                   1333:         StfApiErr saeFail, "AddSectionFilesToCopyList", szSect$+", "+szSrc$+", "+szDest$
                   1334: '$endif ''DEBUG
                   1335:         ERROR STFERR
                   1336:     END IF
                   1337: END SUB
                   1338: 
                   1339: 
                   1340: '*************************************************************************
                   1341: SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
                   1342: '$ifdef DEBUG
                   1343:     if FValidInfSect(szSect$) = 0 then
                   1344:         n% = 1
                   1345:     elseif szKey$ = "" then
                   1346:         n% = 2
                   1347:     elseif FValidFATDir(szSrc$) = 0 then
                   1348:         n% = 3
                   1349:     elseif FValidFATDir(szDest$) = 0 then
                   1350:         n% = 4
                   1351:     else
                   1352:         n% = 0
                   1353:     end if
                   1354:     if n% > 0 then
                   1355:         BadArgErr n%, "AddSectionKeyFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
                   1356:     end if
                   1357: '$endif ''DEBUG
                   1358: 
                   1359:     IF FAddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
                   1360: '$ifdef DEBUG
                   1361:         StfApiErr saeFail, "AddSectionKeyFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
                   1362: '$endif ''DEBUG
                   1363:         ERROR STFERR
                   1364:     END IF
                   1365: END SUB
                   1366: 
                   1367: 
                   1368: '*************************************************************************
                   1369: SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
                   1370: '$ifdef DEBUG
                   1371:     if FValidInfSect(szSect$) = 0 then
                   1372:         n% = 1
                   1373:     elseif szKey$ = "" then
                   1374:         n% = 2
                   1375:     elseif FValidFATDir(szSrc$) = 0 then
                   1376:         n% = 3
                   1377:     elseif FValidFATPath(szDest$) = 0 then
                   1378:         n% = 4
                   1379:     else
                   1380:         n% = 0
                   1381:     end if
                   1382:     if n% > 0 then
                   1383:         BadArgErr n%, "AddSpecialFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
                   1384:     end if
                   1385: '$endif ''DEBUG
                   1386: 
                   1387:     IF FAddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
                   1388: '$ifdef DEBUG
                   1389:         StfApiErr saeFail, "AddSpecialFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
                   1390: '$endif ''DEBUG
                   1391:         ERROR STFERR
                   1392:     END IF
                   1393: END SUB
                   1394: 
                   1395: 
                   1396: '*************************************************************************
                   1397: SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&) STATIC
                   1398: '$ifdef DEBUG
                   1399:     if szDll$ = "" then
                   1400:         n% = 1
                   1401:     elseif idDlg% = 0 then
                   1402:         n% = 2
                   1403:     elseif szProc$ = "" then
                   1404:         n% = 3
                   1405:     elseif lTicks& <= 0 then
                   1406:         n% = 4
                   1407:     else
                   1408:         n% = 0
                   1409:     end if
                   1410:     if n% > 0 then
                   1411:         BadArgErr n%, "AddToBillboardList", szDll$+", "+STR$(idDlg%)+", "+szProc$+", "+STR$(lTicks&)
                   1412:     end if
                   1413: '$endif ''DEBUG
                   1414: 
                   1415:     IF FAddToBillboardList(szDll$, idDlg%, szProc$, lTicks&) = 0 THEN
                   1416: '$ifdef DEBUG
                   1417:         StfApiErr saeFail, "AddToBillboardList", szDll$+", "+STR$(idDlg%)+", "+szProc$+", "+STR$(lTicks&)
                   1418: '$endif ''DEBUG
                   1419:         ERROR STFERR
                   1420:     END IF
                   1421: END SUB
                   1422: 
                   1423: 
                   1424: '*************************************************************************
                   1425: SUB AddBlankToBillboardList (lTicks&) STATIC
                   1426: '$ifdef DEBUG
                   1427:     if lTicks& <= 0 then
                   1428:         BadArgErr 1, "AddBlankToBillboardList", STR$(lTicks&)
                   1429:     end if
                   1430: '$endif ''DEBUG
                   1431:     IF FAddToBillboardList(NULL, 0, NULL, lTicks&) = 0 THEN
                   1432: '$ifdef DEBUG
                   1433:         StfApiErr saeFail, "AddBlankToBillboardList", STR$(lTicks&)
                   1434: '$endif ''DEBUG
                   1435:         ERROR STFERR
                   1436:     END IF
                   1437: END SUB
                   1438: 
                   1439: 
                   1440: '*************************************************************************
                   1441: SUB ClearBillboardList STATIC
                   1442:     IF FClearBillboardList = 0 THEN
                   1443: '$ifdef DEBUG
                   1444:         StfApiErr saeFail, "ClearBillboardList", ""
                   1445: '$endif ''DEBUG
                   1446:         ERROR STFERR
                   1447:     END IF
                   1448: END SUB
                   1449: 
                   1450: 
                   1451: '*************************************************************************
                   1452: SUB OpenLogFile (szFile$, fAppend%) STATIC
                   1453: '$ifdef DEBUG
                   1454:     if FValidFATPath(szFile$) = 0 then
                   1455:         BadArgErr 1, "OpenLogFile", szFile$+", "+STR$(fAppend%)
                   1456:     end if
                   1457: '$endif ''DEBUG
                   1458:     IF FOpenLogFile(szFile$, fAppend%) = 0 THEN
                   1459: '$ifdef DEBUG
                   1460:         StfApiErr saeFail, "OpenLogFile", szFile$+", "+STR$(fAppend%)
                   1461: '$endif ''DEBUG
                   1462:         ERROR STFERR
                   1463:     END IF
                   1464: END SUB
                   1465: 
                   1466: 
                   1467: '*************************************************************************
                   1468: SUB CloseLogFile STATIC
                   1469:     IF FCloseLogFile() = 0 THEN
                   1470: '$ifdef DEBUG
                   1471:         StfApiErr saeFail, "CloseLogFile", ""
                   1472: '$endif ''DEBUG
                   1473:         ERROR STFERR
                   1474:     END IF
                   1475: END SUB
                   1476: 
                   1477: 
                   1478: '*************************************************************************
                   1479: SUB WriteToLogFile (szStr$) STATIC
                   1480:     IF FWriteToLogFile(szStr$, 1) = 0 THEN
                   1481: '$ifdef DEBUG
                   1482:         StfApiErr saeFail, "WriteToLogFile", szStr$
                   1483: '$endif ''DEBUG
                   1484:         ERROR STFERR
                   1485:     END IF
                   1486: END SUB
                   1487: 
                   1488: 
                   1489: ''' -1 in either parameter will mean 'center in frame client area'
                   1490: '*************************************************************************
                   1491: SUB SetCopyGaugePosition (x%, y%) STATIC
                   1492:     ProSetPos x%, y%
                   1493: END SUB
                   1494: 
                   1495: 
                   1496: '*************************************************************************
                   1497: FUNCTION FindFileUsingFileOpen (szFile$) STATIC AS STRING
                   1498:     szBuf$ = STRING$(512, 32)
                   1499: 
                   1500:     wRet% = WFindFileUsingFileOpen(szFile$, szBuf$, len(szBuf$))
                   1501:     IF wRet% = 0 THEN
                   1502:         FindFileUsingFileOpen = szBuf$
                   1503:     ELSEIF wRet% = 1 THEN
                   1504:         FindFileUsingFileOpen = ""
                   1505:     ELSE
                   1506: '$ifdef DEBUG
                   1507:         StfApiErr saeFail, "FindFileUsingFileOpen", szFile$
                   1508: '$endif ''DEBUG
                   1509:         ERROR STFERR
                   1510:     END IF
                   1511: 
                   1512:     szBuf$ = ""
                   1513: END FUNCTION
                   1514: 
                   1515: 
                   1516: '*************************************************************************
                   1517: FUNCTION IsDirWritable (szDir$) STATIC AS INTEGER
                   1518:     IsDirWritable = FIsDirWritable(szDir$)
                   1519: END FUNCTION
                   1520: 
                   1521: 
                   1522: '*************************************************************************
                   1523: FUNCTION IsFileWritable (szFile$) STATIC AS INTEGER
                   1524: '$ifdef DEBUG
                   1525:     if FValidFATDir(szFile$) = 0 then
                   1526:         BadArgErr 1, "IsFileWritable", szFile$
                   1527:     end if
                   1528: '$endif ''DEBUG
                   1529:     IsFileWritable = FIsFileWritable(szFile$)
                   1530: END FUNCTION
                   1531: 
                   1532: 
                   1533: '*************************************************************************
                   1534: FUNCTION GetNthFieldFromIniString (szLine$, iField%) STATIC AS STRING
                   1535:     IF iField% < 1 THEN
                   1536: '$ifdef DEBUG
                   1537:         StfApiErr saeFail, "GetNthFieldFromIniString", szLine$+", "+STR$(iField%)
                   1538: '$endif ''DEBUG
                   1539:         ERROR STFERR
                   1540:     END IF
                   1541:     szStart$ = szLine$
                   1542:     IF iField% <> 1 THEN
                   1543:         FOR i% = 2 TO iField% STEP 1
                   1544:             iNew% = INSTR(szStart$, ",")
                   1545:             IF iNew% = 0 THEN
                   1546:                 GetNthFieldFromIniString = ""
                   1547:                 GOTO _GNFFIS_END
                   1548:             END IF
                   1549:             szStart$ = MID$(szStart$, (iNew% + 1))
                   1550:         NEXT
                   1551:     END IF
                   1552: 
                   1553:     iNew% = INSTR(szStart$, ",")
                   1554:     IF iNew% <> 0 THEN
                   1555:         szStart$ = MID$(szStart$, 1, (iNew% - 1))
                   1556:     END IF
                   1557: 
                   1558:     GetNthFieldFromIniString = LTRIM$(RTRIM$(szStart$))
                   1559: 
                   1560: _GNFFIS_END:
                   1561: 
                   1562: END FUNCTION
                   1563: 
                   1564: 
                   1565: '*************************************************************************
                   1566: FUNCTION GetWindowsMajorVersion STATIC AS INTEGER
                   1567:     GetWindowsMajorVersion = GetVersion() MOD 256
                   1568: END FUNCTION
                   1569: 
                   1570: 
                   1571: '*************************************************************************
                   1572: FUNCTION GetWindowsMinorVersion STATIC AS INTEGER
                   1573:     GetWindowsMinorVersion = GetVersion() / 256
                   1574: END FUNCTION
                   1575: 
                   1576: 
                   1577: '*************************************************************************
                   1578: FUNCTION GetWindowsMode STATIC AS INTEGER
                   1579:     GetWindowsMode = 0
                   1580:     longTmp& = GetWinFlags()
                   1581:     IF longTmp& AND WF_WINNT THEN
                   1582:         GetWindowsMode = 3
                   1583:     ELSEIF longTmp& AND WF_STANDARD THEN
                   1584:         GetWindowsMode = 1
                   1585:     ELSEIF longTmp& AND WF_ENHANCED THEN
                   1586:         GetWindowsMode = 2
                   1587:     END IF
                   1588: END FUNCTION
                   1589: 
                   1590: 
                   1591: '*************************************************************************
                   1592: FUNCTION GetWindowsDir STATIC AS STRING
                   1593:     szBuf$ = string$(256, 32)
                   1594:     cbBuf% = GetWindowsDirectory(szBuf$, 256)
                   1595: 
                   1596:     IF cbBuf% = 0 THEN
                   1597:         GetWindowsDir = ""
                   1598: '$ifdef DEBUG
                   1599:         StfApiErr saeFail, "GetWindowsDir", ""
                   1600: '$endif ''DEBUG
                   1601:         ERROR STFERR
                   1602:     ELSE
                   1603:         IF cbBuf% > 255 THEN
                   1604:             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
                   1605:             ERROR STFERR
                   1606:         END IF
                   1607:         szBuf$ = RTRIM$(szBuf$)
                   1608:         IF MID$(szBuf$, 1, 1) = "\" THEN
                   1609:             'szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
                   1610:             szBuf$ = MID$(GetWindowsSysDir, 1, 2) + szBuf$
                   1611:         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
                   1612:             szBuf$ = MID$(GetWindowsSysDir, 1, 3) + szBuf$
                   1613:         END IF
                   1614:         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
                   1615:             szBuf$ = szBuf$ + "\"
                   1616:         END IF
                   1617:         GetWindowsDir = szBuf$
                   1618:     END IF
                   1619: 
                   1620:     szBuf$ = ""
                   1621: END FUNCTION
                   1622: 
                   1623: 
                   1624: '*************************************************************************
                   1625: FUNCTION GetWindowsSysDir STATIC AS STRING
                   1626:     szBuf$ = string$(256, 32)
                   1627:     cbBuf% = GetSystemDirectory(szBuf$, 256)
                   1628: 
                   1629:     IF cbBuf% = 0 THEN
                   1630: '$ifdef DEBUG
                   1631:         StfApiErr saeFail, "GetWindowsSysDir", ""
                   1632: '$endif ''DEBUG
                   1633:         ERROR STFERR
                   1634:     ELSE
                   1635:         IF cbBuf% > 255 THEN
                   1636:             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
                   1637:             ERROR STFERR
                   1638:         END IF
                   1639:         szBuf$ = RTRIM$(szBuf$)
                   1640:         IF MID$(szBuf$, 1, 1) = "\" THEN
                   1641:             szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
                   1642:         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
                   1643:             szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
                   1644:         END IF
                   1645:         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
                   1646:             szBuf$ = szBuf$ + "\"
                   1647:         END IF
                   1648:         GetWindowsSysDir = szBuf$
                   1649:     END IF
                   1650: 
                   1651:     szBuf$ = ""
                   1652: END FUNCTION
                   1653: 
                   1654: 
                   1655: '*************************************************************************
                   1656: FUNCTION IsWindowsShared STATIC AS INTEGER
                   1657:     szWin$ = UCASE$(GetWindowsDir())
                   1658:     szSys$ = UCASE$(GetWindowsSysDir())
                   1659: 
                   1660:     IF len(szWin$) = 0 THEN
                   1661: '$ifdef DEBUG
                   1662:         StfApiErr saeFail, "IsWindowsShared", ""
                   1663: '$endif ''DEBUG
                   1664:         ERROR STFERR
                   1665:     END IF
                   1666: 
                   1667:     IF len(szSys$) <= len(szWin$) THEN
                   1668:         IsWindowsShared = 1
                   1669:     ELSE
                   1670:         szSys$ = MID$(szSys$, 1, len(szWin$))
                   1671:         IF szWin$ = szSys$ THEN
                   1672:             IsWindowsShared = 0
                   1673:         ELSE
                   1674:             IsWindowsShared = 1
                   1675:         END IF
                   1676:     END IF
                   1677: END FUNCTION
                   1678: 
                   1679: 
                   1680: '*************************************************************************
                   1681: FUNCTION GetScreenWidth STATIC AS INTEGER
                   1682:     GetScreenWidth = GetSystemMetrics(SM_CXSCREEN)
                   1683: END FUNCTION
                   1684: 
                   1685: 
                   1686: '*************************************************************************
                   1687: FUNCTION GetScreenHeight STATIC AS INTEGER
                   1688:     GetScreenHeight = GetSystemMetrics(SM_CYSCREEN)
                   1689: END FUNCTION
                   1690: 
                   1691: 
                   1692: '*************************************************************************
                   1693: SUB SetRestartDir (szDir$) STATIC
                   1694: '$ifdef DEBUG
                   1695:     if FValidFATDir(szDir$) = 0 then
                   1696:         BadArgErr 1, "SetRestartDir", szDir$
                   1697:     end if
                   1698: '$endif ''DEBUG
                   1699:     IF FSetRestartDir(szDir$) = 0 THEN
                   1700: '$ifdef DEBUG
                   1701:         StfApiErr saeFail, "SetRestartDir", szDir$
                   1702: '$endif ''DEBUG
                   1703:         ERROR STFERR
                   1704:     END IF
                   1705: END SUB
                   1706: 
                   1707: 
                   1708: '*************************************************************************
                   1709: FUNCTION RestartListEmpty STATIC AS INTEGER
                   1710:     IF FRestartListEmpty() = 0 THEN
                   1711:         RestartListEmpty = 0
                   1712:     ELSE
                   1713:         RestartListEmpty = 1
                   1714:     END IF
                   1715: END FUNCTION
                   1716: 
                   1717: 
                   1718: '*************************************************************************
                   1719: FUNCTION ExitExecRestart STATIC AS INTEGER
                   1720:     ExitExecRestart = FExitExecRestart
                   1721: END FUNCTION
                   1722: 
                   1723: 
                   1724: '*************************************************************************
                   1725: SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%) STATIC
                   1726: 
                   1727: '$ifdef DEBUG
                   1728:     if (FValidFATPath(szSrc$) = 0) AND (szSrc$ <> "") then
                   1729:         n% = 1
                   1730:     elseif FValidFATPath(szDst$) = 0 then
                   1731:         n% = 2
                   1732:     elseif FValidFATDir(szDir$) = 0 then
                   1733:         n% = 3
                   1734:     else
                   1735:         n% = 0
                   1736:     end if
                   1737:     if n% > 0 then
                   1738:         BadArgErr n%, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%)
                   1739:     end if
                   1740: '$endif ''DEBUG
                   1741: 
                   1742:     IF FPrependToPath (szSrc$, szDst$, szDir$, cmo%) = 0 THEN
                   1743: '$ifdef DEBUG
                   1744:         StfApiErr saeFail, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%)
                   1745: '$endif ''DEBUG
                   1746:         ERROR STFERR
                   1747:     END IF
                   1748: END SUB
                   1749: 
                   1750: 
                   1751: 
                   1752: '**************************************************************************
                   1753: '***************************  Error Handlers  *****************************
                   1754: '**************************************************************************
                   1755: 
                   1756: 
                   1757: '$ifdef DEBUG
                   1758: '**************************************************************************
                   1759: SUB StfApiErr (nMsg%, szApi$, szArgs$) STATIC      ''DEBUG only
                   1760:     select case nMsg%
                   1761:         case saeFail
                   1762:             lpText$ = "Failed"
                   1763:         case saeInit
                   1764:             lpText$ = "Already Initialized"
                   1765:         case saeNYI
                   1766:             lpText$ = "NYI"
                   1767:         case else
                   1768:             lpText$ = "Bad Arg "+LTRIM$(STR$(nMsg% - saeArg))
                   1769:     end select
                   1770: 
                   1771:     lpText$ = lpText$ + ": "+ szApi$
                   1772:     if szArgs$ <> "" then
                   1773:         lpText$ = lpText + " (" + szArgs$ + ")"
                   1774:     end if
                   1775:     lpCaption$ = "MS-Setup Toolkit API Error"
                   1776:     res% = DoMsgBox(lpText$, lpCaption$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
                   1777:     print lpText$
                   1778:     lpText$ = ""
                   1779:     lpCaption$ = ""
                   1780: END SUB
                   1781: 
                   1782: '**************************************************************************
                   1783: SUB BadArgErr (nArg%, szApi$, szArgs$) STATIC      ''DEBUG only
                   1784:     StfApiErr nArg%+saeArg, szApi$, szArgs$
                   1785:     ERROR STFERR
                   1786: END SUB
                   1787: 
                   1788: 
                   1789: '** REVIEW: Move this function into common lib (we'll need it there too)
                   1790: '**************************************************************************
                   1791: FUNCTION FValidInfSect (szSect$) STATIC AS INTEGER
                   1792:     if (szSect$ = "") OR (INSTR(1,szSect$,"]") <> 0) then
                   1793:         FValidInfSect = 0
                   1794:     else
                   1795:         FValidInfSect = 1
                   1796:     end if
                   1797: END FUNCTION
                   1798: 
                   1799: 
                   1800: '** REVIEW: Move this function into common lib (we'll need it there too)
                   1801: '**************************************************************************
                   1802: FUNCTION FValidIniFile (szFile$) STATIC AS INTEGER
                   1803:     if (FValidFATPath(szFile$) = 0) AND (UCASE$(szFile$) <> "WIN.INI") then
                   1804:         FValidIniFile = 0
                   1805:     else
                   1806:         FValidIniFile = 1
                   1807:     end if
                   1808: END FUNCTION
                   1809: 
                   1810: '**************************************************************************
                   1811: FUNCTION FValidDrive (szDrive$) STATIC AS INTEGER
                   1812: 
                   1813:     if szDrive$ = "" then
                   1814:         FValidDrive = 0
                   1815:     elseif INSTR(1,szDrive$,"\\") = 1 then   ' UNC path
                   1816:         FValidDrive = 1
                   1817:     elseif ASC(UCASE$(szDrive$)) - ASC("A") < 0 then
                   1818:         FValidDrive = 0
                   1819:     elseif ASC(UCASE$(szDrive$)) - ASC("A") > 25 then
                   1820:         FValidDrive = 0
                   1821:     elseif LEN(szDrive$) = 1 then
                   1822:         FValidDrive = 1
                   1823:     elseif INSTR(2,szDrive$,":\") = 2 then
                   1824:         FValidDrive = 1
                   1825:     elseif INSTR(1,szDrive$,":") = 2 then
                   1826:         FValidDrive = 1
                   1827:     else
                   1828:         FValidDrive = 0
                   1829:     end if
                   1830: END FUNCTION
                   1831: 
                   1832: '$endif ''DEBUG
                   1833: 
                   1834: 
                   1835: TRAP CleanupTrap From "MSSHLSTF.DLL"
                   1836: 
                   1837: End Trap
                   1838: 
                   1839: hSetup = InitSetup(COMMAND$)
                   1840: 
                   1841: ON ERROR GOTO QUIT
                   1842: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.