home *** CD-ROM | disk | FTP | other *** search
/ TestDrive Super Store 4.0 / TESTDRIVE_4.ISO / efs_lite / disk1 / setupapi.in_ / setupapi.bin
Encoding:
Text File  |  1994-03-20  |  34.5 KB  |  1,074 lines

  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_STANDARD =   16
  17. CONST WF_ENHANCED =   32
  18.  
  19.  
  20. '' DoMsgBox Flags
  21.  
  22. CONST MB_OK          = 0
  23. CONST MB_ICONHAND    = 16
  24. CONST MB_TASKMODAL   = 8192
  25.  
  26.  
  27. DECLARE FUNCTION DoMsgBox LIB "mscomstf.dll" (lpText$,lpCaption$,wType%) As INTEGER
  28. DECLARE FUNCTION GetWindowsDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
  29. DECLARE FUNCTION GetSystemDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
  30. DECLARE FUNCTION GetProfileString LIB "kernel" (szSect$, szKey$, szDefault$, szBuf$, cbBuf%) AS INTEGER
  31. DECLARE FUNCTION GetVersion LIB "kernel" AS INTEGER
  32. DECLARE FUNCTION GetSystemMetrics LIB "user" (nIndex%) AS INTEGER
  33. DECLARE FUNCTION GetWinFlags LIB "kernel" AS LONG
  34.  
  35.  
  36.  
  37.  
  38. '**************************************************************************
  39. '****************************** Setup Constants ***************************
  40. '**************************************************************************
  41.  
  42.  
  43. ''Command Option Flags
  44.  
  45. CONST cmoVital       = 1
  46. CONST cmoCopy        = 2
  47. CONST cmoUndo        = 4
  48. CONST cmoRoot        = 8
  49. CONST cmoDecompress  = 16
  50. CONST cmoTimeStamp   = 32
  51. CONST cmoReadOnly    = 64
  52. CONST cmoBackup      = 128
  53. CONST cmoForce       = 256
  54. CONST cmoRemove      = 512
  55. CONST cmoOverwrite   = 1024
  56. CONST cmoAppend      = 2048
  57. CONST cmoPrepend     = 4096
  58. CONST cmoNone        = 0
  59. CONST cmoAll         = 65535
  60.  
  61.  
  62. ''File Exist Modes
  63.  
  64. CONST femExists     = 0
  65. CONST femRead       = 1
  66. CONST femWrite      = 2
  67. CONST femReadWrite  = 3
  68.  
  69.  
  70. ''Read-Only Return Code
  71.  
  72. CONST ynrcNo         = 0
  73. CONST ynrcYes        = 1
  74. CONST ynrcErr1       = 2
  75. CONST ynrcErr2       = 3
  76. CONST ynrcErr3       = 4
  77. CONST ynrcErr4       = 5
  78. CONST ynrcErr5       = 6
  79. CONST ynrcErr6       = 7
  80. CONST ynrcErr7       = 8
  81. CONST ynrcErr8       = 9
  82. CONST ynrcErr9       = 10
  83.  
  84.  
  85. ''General Return Codes
  86.  
  87. CONST grcOkay       = 0
  88. CONST grcNotOkay    = 1
  89. CONST grcUserQuit   = 48
  90.  
  91.  
  92. ''Ranges
  93.  
  94. ''CONST cbSymValMax = 8192
  95. CONST cbSymValMax = 512
  96.     ''REVIEW: symbol table will allow strings up to 8192 bytes
  97.     '' but we get Out of String Space wattdrvr error if we alloc
  98.     '' STRING$() that big. (See GetSymbolValue and GetListItem)
  99.     '' We should look into using dynamic far alloc instead of
  100.     '' STRING$ for large buffers.
  101.     '' NOTE: 8192 works okay with runtime wattdrvr, however.
  102.  
  103.  
  104. ''ON ERROR Error Codes
  105. CONST STFERR      = 1024   ''setup system error
  106. CONST STFQUIT     = 1025   ''user quit
  107.  
  108. CONST scmOff      = 0
  109. CONST scmOnIgnore = 1
  110. CONST scmOnFatal  = 2
  111.  
  112.  
  113. '**************************************************************************
  114. '********************************  Setup API's  ***************************
  115. '**************************************************************************
  116.  
  117. '' common
  118.  
  119. DECLARE FUNCTION FParseFATPathIntoPieces LIB "mscomstf.dll" (szPath$, szVol$, cbVol%, szDir$, cbDir%, szFile$, cbFile%) AS INTEGER
  120. DECLARE FUNCTION FOpenInf LIB "mscomstf.dll" (szFile$, fCheck%, fCheckSyms%) AS INTEGER
  121. DECLARE FUNCTION FSetSilent LIB "mscomstf.dll" (mode%) AS INTEGER
  122. DECLARE FUNCTION FSetBeepingMode LIB "mscomstf.dll" (mode%) AS INTEGER
  123. DECLARE FUNCTION HShowWaitCursor LIB "msshlstf.dll" AS INTEGER
  124. DECLARE FUNCTION FRestoreCursor  LIB "msshlstf.dll" (hPrev%) AS INTEGER
  125. DECLARE FUNCTION FOpenLogFile    LIB "mscomstf.dll" (szFile$, fAppend%) AS INTEGER
  126. DECLARE FUNCTION FCloseLogFile   LIB "mscomstf.dll" AS INTEGER
  127. DECLARE FUNCTION FWriteToLogFile LIB "mscomstf.dll" (sz$, fRequire%) AS INTEGER
  128. DECLARE FUNCTION CbGetInfSectionKeyField LIB "mscomstf.dll" (szSect$, szKey$, iField%, szBuf$, cbBuf%) AS INTEGER
  129. DECLARE FUNCTION FMakeListInfSectionField LIB "mscomstf.dll" (szSym$, szSect$, iField%) AS INTEGER
  130.  
  131.  
  132. ''shell
  133.  
  134. DECLARE FUNCTION FSetBitmap LIB "msshlstf.dll" (szDll$, Bitmap%) AS INTEGER
  135. DECLARE FUNCTION FSetAbout LIB "msshlstf.dll" (szAbout1$, szAbout2$) AS INTEGER
  136. DECLARE FUNCTION FDoDialog LIB "msuilstf.dll" (hwnd%, szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS INTEGER
  137. DECLARE FUNCTION FKillNDialogs LIB "msuilstf.dll" (n%) AS INTEGER
  138. DECLARE SUB SetWindowText LIB "User" (hwnd%, lpString$)
  139. DECLARE FUNCTION FSetSymbolValue LIB "msshlstf.dll" (szSymbol$, szValue$) AS INTEGER
  140. DECLARE FUNCTION FRemoveSymbol LIB "mscomstf.dll" (szSym$) AS INTEGER
  141. DECLARE FUNCTION CbGetSymbolValue LIB "mscomstf.dll" (szSymbol$, szValue$, Length%) AS INTEGER
  142. DECLARE FUNCTION UsGetListLength LIB "mscomstf.dll" (szSymbol$) AS INTEGER
  143. DECLARE FUNCTION CbGetListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$, cbMax%) AS INTEGER
  144. DECLARE FUNCTION FAddListItem LIB "mscomstf.dll" (szListSymbol$, szListItem$) AS INTEGER
  145. DECLARE FUNCTION FReplaceListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$) AS INTEGER
  146. DECLARE FUNCTION FSetSymbolToListOfInfKeys LIB "mscomstf.dll" (szSym$, szSect$, fNulls%) AS INTEGER
  147.  
  148.  
  149. ''shell
  150.  
  151. DECLARE FUNCTION InitializeFrame LIB "msshlstf.dll" (szCmdLine$) AS INTEGER
  152. DECLARE FUNCTION HwndFrame LIB "msshlstf.dll" AS INTEGER
  153. DECLARE FUNCTION HinstFrame LIB "msshlstf.dll" AS INTEGER
  154.  
  155.  
  156.  
  157. ''install
  158.  
  159. DECLARE SUB      ProSetPos LIB "msinsstf.dll" (x%, y%)
  160. DECLARE FUNCTION FCreateDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
  161. DECLARE FUNCTION FRemoveDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
  162. DECLARE FUNCTION FAddSectionFilesToCopyList LIB "mscomstf.dll" (szSect$, szSrc$, szDest$) AS INTEGER
  163. DECLARE FUNCTION FAddSectionKeyFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
  164. DECLARE FUNCTION FAddSpecialFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
  165. DECLARE FUNCTION GrcCopyFilesInCopyList LIB "msinsstf.dll" (hInstance%) AS INTEGER
  166. DECLARE FUNCTION FRemoveIniSection LIB "msinsstf.dll" (szFile$, szSect$, cmo%) AS INTEGER
  167. DECLARE FUNCTION FCreateIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
  168. DECLARE FUNCTION FRemoveIniKey LIB "msinsstf.dll" (szFile$, szSect$, szKey$, cmo%) AS INTEGER
  169. DECLARE FUNCTION FCreateSysIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
  170. DECLARE FUNCTION FCreateProgManGroup LIB "msinsstf.dll" (szGroup$, szPath$, cmo%) AS INTEGER
  171. DECLARE FUNCTION FCreateProgManItem LIB "msinsstf.dll" (szGroup$, szItem$, szCmd$, cmo%) AS INTEGER
  172. DECLARE FUNCTION FShowProgManGroup LIB "msinsstf.dll" (szGroup$, szCmd$, cmo%) AS INTEGER
  173. DECLARE FUNCTION FStampResource LIB "msinsstf.dll" (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) AS INTEGER
  174. DECLARE FUNCTION FDumpCopyListToFile LIB "msinsstf.dll" (szFile$) AS INTEGER
  175. DECLARE SUB      ResetCopyList LIB "msinsstf.dll"
  176. DECLARE FUNCTION LcbGetCopyListCost LIB "msinsstf.dll" (szExtraList$, szCostList$, szNeedList$) AS LONG
  177. DECLARE FUNCTION FAddDos5Help LIB "msinsstf.dll" (szProgName$, szProgHelp$, cmo%) AS INTEGER
  178. DECLARE FUNCTION FCopyOneFile LIB "msinsstf.dll" (szSrc$, szDest$, cmo%, fAppend%) AS INTEGER
  179. DECLARE FUNCTION YnrcRemoveFile LIB "msinsstf.dll" (szFullPathSrc$, cmo%) AS INTEGER
  180. DECLARE FUNCTION YnrcBackupFile LIB "msinsstf.dll" (szFullPath$, szBackup$, cmo%) AS INTEGER
  181. DECLARE FUNCTION FInitializeInstall LIB "msinsstf.dll" (hinst%, hwndFrame%) AS INTEGER
  182. DECLARE FUNCTION WFindFileUsingFileOpen LIB "msinsstf.dll" (szFile$, szBuf$, cbBuf%) AS INTEGER
  183. DECLARE FUNCTION FIsDirWritable LIB "msinsstf.dll" (szDir$) AS INTEGER
  184. DECLARE FUNCTION FIsFileWritable LIB "msinsstf.dll" (szFile$) AS INTEGER
  185. DECLARE FUNCTION FAddToBillboardList LIB "msinsstf.dll" (szDll$, idDlg%, szProc$, lTicks&) AS INTEGER
  186. DECLARE FUNCTION FClearBillboardList LIB "msinsstf.dll" AS INTEGER
  187. DECLARE FUNCTION FSetRestartDir LIB "msinsstf.dll" (szDir$) AS INTEGER
  188. DECLARE FUNCTION FRestartListEmpty LIB "msinsstf.dll" AS INTEGER
  189. DECLARE FUNCTION FExitExecRestart LIB "msinsstf.dll" AS INTEGER
  190. DECLARE FUNCTION SetCopyMode LIB "msinsstf.dll" (fMode%) AS INTEGER
  191. DECLARE FUNCTION GetCopyMode LIB "msinsstf.dll" AS INTEGER
  192. DECLARE FUNCTION SetDecompMode LIB "msinsstf.dll" (fMode%) AS INTEGER
  193. DECLARE FUNCTION GetDecompMode LIB "msinsstf.dll" AS INTEGER
  194. DECLARE FUNCTION SetSizeCheckMode LIB "msinsstf.dll" (scmMode%) AS INTEGER
  195. DECLARE FUNCTION FPrependToPath LIB "msinsstf.dll" (szSrc$, szDst$, szDir$, cmo%) AS INTEGER
  196.  
  197. DECLARE FUNCTION SetTimeValue LIB "msinsstf.dll" (usHours%, usMinutes%, usSeconds%) AS INTEGER
  198.  
  199.  
  200.  
  201. '*************************************************************************
  202. '****************  Setup Basic Wrapper Declarations  *********************
  203. '*************************************************************************
  204.  
  205.  
  206. ''shell
  207.  
  208. DECLARE SUB SetBitmap(szDll$, Bitmap%)
  209. DECLARE SUB SetAbout(szAbout1$, szAbout2$)
  210. DECLARE FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS STRING
  211. DECLARE SUB UIPop (n%)
  212. DECLARE SUB UIPopAll
  213. DECLARE SUB SetTitle (sz$)
  214. DECLARE SUB ReadInfFile (szFile$)
  215. DECLARE SUB SetSymbolValue (szSymbol$, szValue$)
  216. DECLARE SUB RemoveSymbol (szSym$)
  217. DECLARE FUNCTION GetSymbolValue (szSymbol$) AS STRING
  218. DECLARE FUNCTION GetListLength(szSymbol$) AS INTEGER
  219. DECLARE SUB MakeListFromSectionKeys (szSymbol$, szSect$)
  220. DECLARE FUNCTION GetListItem(szSymbol$, n%) AS STRING
  221. DECLARE SUB AddListItem(szSymbol$, szItem$)
  222. DECLARE SUB ReplaceListItem(szSymbol$, n%, szItem$)
  223.  
  224. DECLARE FUNCTION InitFrame (szCmdLine$) AS INTEGER
  225. DECLARE FUNCTION InitSetup (szCmdLine$) AS INTEGER
  226.  
  227. DECLARE FUNCTION ShowWaitCursor AS INTEGER
  228. DECLARE SUB RestoreCursor (hPrev%)
  229.  
  230. DECLARE FUNCTION SetBeepingMode (mode%) AS INTEGER
  231. DECLARE FUNCTION SetSilentMode (mode%) AS INTEGER
  232.  
  233. DECLARE FUNCTION GetSectionKeyDate (szSect$, szKey$) AS STRING
  234. DECLARE FUNCTION GetSectionKeyFilename (szSect$, szKey$) AS STRING
  235. DECLARE FUNCTION GetSectionKeySize (szSect$, szKey$) AS LONG
  236. DECLARE FUNCTION GetSectionKeyVersion (szSect$, szKey$) AS STRING
  237.  
  238. DECLARE SUB MakeListFromSectionDate (szSym$, szSect$)
  239. DECLARE SUB MakeListFromSectionFilename (szSym$, szSect$)
  240. DECLARE SUB MakeListFromSectionSize (szSym$, szSect$)
  241. DECLARE SUB MakeListFromSectionVersion (szSym$, szSect$)
  242.  
  243.  
  244. ''install
  245.  
  246.  
  247. DECLARE SUB CreateDir (szDir$, cmo%)
  248. DECLARE SUB RemoveDir (szDir$, cmo%)
  249. DECLARE SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$)
  250. DECLARE SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
  251. DECLARE SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
  252. DECLARE SUB CopyFilesInCopyList
  253. DECLARE SUB RemoveIniSection (szFile$, szSect$, cmo%)
  254. DECLARE SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
  255. DECLARE SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%)
  256. DECLARE SUB CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
  257. DECLARE SUB CreateProgmanGroup (szGroup$, szPath$, cmo%)
  258. DECLARE SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%)
  259. DECLARE SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%)
  260. DECLARE SUB StampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%)
  261. DECLARE SUB DumpCopyList (szFile$)
  262. DECLARE SUB ClearCopyList
  263. DECLARE FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) AS LONG
  264. DECLARE SUB AddDos5Help (szProgName$, szProgHelp$, cmo%)
  265. DECLARE SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%)
  266. DECLARE SUB RemoveFile (szFullPathSrc$, cmo%)
  267. DECLARE SUB BackupFile (szFullPath$, szBackup$)
  268. DECLARE SUB RenameFile (szFullPath$, szBackup$)
  269. DECLARE SUB InitInstall
  270. DECLARE SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&)
  271. DECLARE SUB AddBlankToBillboardList (lTicks&)
  272. DECLARE SUB ClearBillboardList
  273. DECLARE SUB OpenLogFile (szFile$, fAppend%)
  274. DECLARE SUB CloseLogFile
  275. DECLARE SUB WriteToLogFile (szStr$)
  276. DECLARE SUB SetCopyGaugePosition (x%, y%)
  277. DECLARE SUB SetRestartDir(szDir$)
  278. DECLARE FUNCTION RestartListEmpty AS INTEGER
  279. DECLARE FUNCTION ExitExecRestart AS INTEGER
  280. DECLARE FUNCTION FindFileUsingFileOpen (szFile$) AS STRING
  281. DECLARE FUNCTION IsDirWritable (szDir$) AS INTEGER
  282. DECLARE FUNCTION IsFileWritable (szFile$) AS INTEGER
  283. DECLARE FUNCTION GetNthFieldFromIniString (szLine$, iField%) AS STRING
  284. DECLARE SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%)
  285.  
  286. '' Windows system detect
  287.  
  288. DECLARE FUNCTION GetWindowsMajorVersion AS INTEGER
  289. DECLARE FUNCTION GetWindowsMinorVersion AS INTEGER
  290. DECLARE FUNCTION GetWindowsMode AS INTEGER
  291. DECLARE FUNCTION GetWindowsDir  AS STRING
  292. DECLARE FUNCTION GetWindowsSysDir AS STRING
  293. DECLARE FUNCTION IsWindowsShared AS INTEGER
  294. DECLARE FUNCTION GetScreenWidth AS INTEGER
  295. DECLARE FUNCTION GetScreenHeight AS INTEGER
  296.  
  297.  
  298. '*************************************************************************
  299. '*****************  Setup Basic Wrapper Definitions  *********************
  300. '*************************************************************************
  301. FUNCTION InitSetup(szCmdLine$) STATIC AS INTEGER
  302.     fFrameInit = 0
  303.     fInstallInit = 0
  304.  
  305.     i% = InitFrame(szCmdLine$)
  306.     fFrameInit = 1
  307.  
  308.     InitInstall
  309.     fInstallInit = 1
  310.  
  311.     InitSetup = i%
  312. END FUNCTION
  313.  
  314.  
  315.  
  316. '**************************************************************************
  317. FUNCTION InitFrame(szCmdLine$) STATIC AS INTEGER
  318.     IF hSetup > 0 THEN
  319.     ELSE
  320.         i% = InitializeFrame(szCmdLine$)
  321.         IF i% = -1 THEN
  322.             END   '' NOT an error - Usage (/?) or Command line copy operation
  323.         ELSEIF i% = 0 THEN
  324.             END
  325.         ELSE
  326.             InitFrame = i%
  327.         END IF
  328.     END IF
  329. END FUNCTION
  330.  
  331.  
  332. '**************************************************************************
  333. SUB SetBitmap(szDll$, Bitmap%) STATIC
  334.     IF FSetBitmap(szDll$, Bitmap%) = 0 THEN
  335.         ERROR STFERR
  336.     END IF
  337. END SUB
  338.  
  339.  
  340. '**************************************************************************
  341. SUB SetAbout(szAbout1$, szAbout2$) STATIC
  342.     IF FSetAbout(szAbout1$, szAbout2$) = 0 THEN
  343.         ERROR STFERR
  344.     END IF
  345. END SUB
  346.  
  347.  
  348. '*************************************************************************
  349. SUB SetTitle(sz$) STATIC
  350.     SetWindowText HwndFrame(), sz$
  351. END SUB
  352.  
  353.  
  354. '*************************************************************************
  355. SUB ReadInfFile (szFile$) STATIC
  356.     IF FOpenInf(szFile$, 1, 0) = 0 THEN
  357.         ERROR STFERR
  358.     END IF
  359. END SUB
  360.  
  361.  
  362. '*************************************************************************
  363. FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) STATIC AS STRING
  364.     IF FDoDialog(HwndFrame(), szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) = 0 THEN
  365.         ERROR STFERR
  366.     ELSE
  367.         UIStartDlg = GetSymbolValue("DLGEVENT")
  368.     END IF
  369. END FUNCTION
  370.  
  371.  
  372. '*************************************************************************
  373. SUB UIPop (n%) STATIC
  374.     IF FKillNDialogs(n%) = 0 THEN
  375.         ERROR STFERR
  376.     END IF
  377. END SUB
  378.  
  379.  
  380. '*************************************************************************
  381. SUB UIPopAll STATIC
  382.     IF FKillNDialogs(65535) = 0 THEN
  383.         ERROR STFERR
  384.     END IF
  385. END SUB
  386.  
  387.  
  388. '*************************************************************************
  389. FUNCTION GetSymbolValue(szSymbol$) STATIC AS STRING
  390.     szValue$ = string$(cbSymValMax,32)
  391.     Length% = CbGetSymbolValue(szSymbol$, szValue$, cbSymValMax)
  392.     GetSymbolValue = szValue$
  393.     IF Length% >= cbSymValMax THEN
  394.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  395.         ERROR STFERR
  396.     END IF
  397.     IF szSymbol$ = "" THEN
  398.         ERROR STFERR
  399.     END IF
  400.     szValue$ = ""
  401. END FUNCTION
  402.  
  403.  
  404. '*************************************************************************
  405. FUNCTION GetListLength(szSymbol$) STATIC AS INTEGER
  406.     GetListLength = UsGetListLength(szSymbol$)
  407.     IF szSymbol$ = "" THEN
  408.         ERROR STFERR
  409.     END IF
  410. END FUNCTION
  411.  
  412.  
  413. '*************************************************************************
  414. FUNCTION GetListItem(szListSymbol$, nItem%) STATIC AS STRING
  415.     szListItem$ = string$(cbSymValMax,32)
  416.     Length% = CbGetListItem(szListSymbol$, nItem%, szListItem$, cbSymValMax)
  417.     GetListItem = szListItem$
  418.     IF Length% >= cbSymValMax THEN
  419.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  420.         ERROR STFERR
  421.     END IF
  422.     IF szListSymbol$ = "" THEN
  423.         ERROR STFERR
  424.     END IF
  425.     if nItem% <= 0 or nItem% > GetListLength(szListSymbol$) then
  426.         ERROR STFERR
  427.     end if
  428.     szListItem$ = ""
  429. END FUNCTION
  430.  
  431.  
  432. '*************************************************************************
  433. SUB AddListItem(szSymbol$, szItem$) STATIC
  434.     IF FAddListItem(szSymbol$, szItem$) = 0 THEN
  435.         ERROR STFERR
  436.     END IF
  437. END SUB
  438.  
  439.  
  440. '*************************************************************************
  441. SUB ReplaceListItem(szSymbol$, n%, szItem$) STATIC
  442.     IF FReplaceListItem(szSymbol$, n%, szItem$) = 0 THEN
  443.         ERROR STFERR
  444.     END IF
  445. END SUB
  446.  
  447.  
  448. '**************************************************************************
  449. SUB MakeListFromSectionKeys(szSymbol$, szSect$) STATIC
  450.     IF FSetSymbolToListOfInfKeys(szSymbol$, szSect$, 1) = 0 THEN
  451.         ERROR STFERR
  452.     END IF
  453. END SUB
  454.  
  455.  
  456. '*************************************************************************
  457. SUB SetSymbolValue(szSymbol$, szValue$) STATIC
  458.     IF FSetSymbolValue(szSymbol$, szValue$) = 0 THEN
  459.         ERROR STFERR
  460.     END IF
  461. END SUB
  462.  
  463.  
  464. '*************************************************************************
  465. SUB RemoveSymbol(szSym$) STATIC
  466.     IF FRemoveSymbol(szSym$) = 0 THEN
  467.         ERROR STFERR
  468.     END IF
  469. END SUB
  470.  
  471.  
  472. '*************************************************************************
  473. FUNCTION ShowWaitCursor STATIC AS INTEGER
  474.     ShowWaitCursor = HShowWaitCursor
  475. END FUNCTION
  476.  
  477.  
  478. '*************************************************************************
  479. SUB RestoreCursor (hPrev%) STATIC
  480.     i% = FRestoreCursor(hPrev%)
  481.     IF i% = 0 THEN
  482.         ERROR STFERR
  483.     END IF
  484. END SUB
  485.  
  486.  
  487. '*************************************************************************
  488. FUNCTION SetBeepingMode (mode%) STATIC AS INTEGER
  489.     SetBeepingMode = FSetBeepingMode(mode%)
  490. END FUNCTION
  491.  
  492.  
  493. '*************************************************************************
  494. FUNCTION SetSilentMode (mode%) STATIC AS INTEGER
  495.     SetSilentMode = FSetSilent(mode%)
  496. END FUNCTION
  497.  
  498.  
  499. '*************************************************************************
  500. FUNCTION GetSectionKeyDate (szSect$, szKey$) STATIC AS STRING
  501.     szBuf$ = string$(128, 32)
  502.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 5, szBuf$, 128)
  503.     IF Length% >= 128 THEN
  504.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  505.         ERROR STFERR
  506.     END IF
  507.  
  508.     IF Length% = -1 THEN
  509.         ERROR STFERR
  510.     END IF
  511.  
  512.     GetSectionKeyDate = szBuf$
  513.     szBuf$ = ""
  514. END FUNCTION
  515.  
  516.  
  517. '*************************************************************************
  518. FUNCTION GetSectionKeyFilename (szSect$, szKey$) STATIC AS STRING
  519.     szBuf$ = string$(128, 32)
  520.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 1, szBuf$, 128)
  521.     IF Length% >= 128 THEN
  522.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  523.         ERROR STFERR
  524.     END IF
  525.  
  526.     IF Length% = -1 THEN
  527.         ERROR STFERR
  528.     END IF
  529.  
  530.     GetSectionKeyFilename = szBuf$
  531.     szBuf$ = ""
  532. END FUNCTION
  533.  
  534.  
  535. '*************************************************************************
  536. FUNCTION GetSectionKeySize (szSect$, szKey$) STATIC AS LONG
  537.     szBuf$ = string$(128, 32)
  538.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 15, szBuf$, 128)
  539.     IF Length% >= 128 THEN
  540.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  541.         ERROR STFERR
  542.     END IF
  543.  
  544.     IF Length% = -1 THEN
  545.         ERROR STFERR
  546.     END IF
  547.  
  548.     GetSectionKeySize = VAL(szBuf$)
  549.     szBuf$ = ""
  550. END FUNCTION
  551.  
  552.  
  553. '*************************************************************************
  554. FUNCTION GetSectionKeyVersion (szSect$, szKey$) STATIC AS STRING
  555.     szBuf$ = string$(128, 32)
  556.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 19, szBuf$, 128)
  557.     IF Length% >= 128 THEN
  558.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  559.         ERROR STFERR
  560.     END IF
  561.  
  562.     IF Length% = -1 THEN
  563.         ERROR STFERR
  564.     END IF
  565.  
  566.     GetSectionKeyVersion = szBuf$
  567.     szBuf$ = ""
  568. END FUNCTION
  569.  
  570.  
  571. '*************************************************************************
  572. SUB MakeListFromSectionDate (szSym$, szSect$) STATIC
  573.     IF FMakeListInfSectionField(szSym$, szSect$, 5) = 0 THEN
  574.         ERROR STFERR
  575.     END IF
  576. END SUB
  577.  
  578.  
  579. '*************************************************************************
  580. SUB MakeListFromSectionFilename (szSym$, szSect$) STATIC
  581.     IF FMakeListInfSectionField(szSym$, szSect$, 1) = 0 THEN
  582.         ERROR STFERR
  583.     END IF
  584. END SUB
  585.  
  586.  
  587. '*************************************************************************
  588. SUB MakeListFromSectionSize (szSym$, szSect$) STATIC
  589.     IF FMakeListInfSectionField(szSym$, szSect$, 15) = 0 THEN
  590.         ERROR STFERR
  591.     END IF
  592. END SUB
  593.  
  594.  
  595. '*************************************************************************
  596. SUB MakeListFromSectionVersion (szSym$, szSect$) STATIC
  597.     IF FMakeListInfSectionField(szSym$, szSect$, 19) = 0 THEN
  598.         ERROR STFERR
  599.     END IF
  600. END SUB
  601.  
  602.  
  603. '*************************************************************************
  604. SUB InitInstall STATIC
  605.     IF hSetup > 0 THEN
  606.     ELSEIF FInitializeInstall(HinstFrame(), HwndFrame()) = 0 THEN
  607.         END
  608.     END IF
  609. END SUB
  610.  
  611.  
  612. '*************************************************************************
  613. SUB CreateDir (szDir$, cmo%) STATIC
  614.     IF FCreateDir(szDir$, cmo%) = 0 THEN
  615.         ERROR STFERR
  616.     END IF
  617. END SUB
  618.  
  619.  
  620. '*************************************************************************
  621. SUB RemoveDir (szDir$, cmo%) STATIC
  622.     IF FRemoveDir(szDir$, cmo%) = 0 THEN
  623.         ERROR STFERR
  624.     END IF
  625. END SUB
  626.  
  627.  
  628.  
  629. '*************************************************************************
  630. SUB RemoveIniSection (szFile$, szSect$, cmo%) STATIC
  631.     IF FRemoveIniSection(szFile$, szSect$, cmo%) = 0 THEN
  632.         ERROR STFERR
  633.     END IF
  634. END SUB
  635.  
  636.  
  637. '*************************************************************************
  638. SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
  639.     IF FCreateIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
  640.         ERROR STFERR
  641.     END IF
  642. END SUB
  643.  
  644.  
  645. '*************************************************************************
  646. SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%) STATIC
  647.     IF FRemoveIniKey(szFile$, szSect$, szKey$, cmo%) = 0 THEN
  648.         ERROR STFERR
  649.     END IF
  650. END SUB
  651.  
  652.  
  653. '*************************************************************************
  654. SUB CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
  655.     IF FCreateSysIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
  656.         ERROR STFERR
  657.     END IF
  658. END SUB
  659.  
  660.  
  661. '*************************************************************************
  662. SUB CreateProgmanGroup (szGroup$, szPath$, cmo%) STATIC
  663.     IF FCreateProgManGroup(szGroup$, szPath$, cmo%) = 0 THEN
  664.         ERROR STFERR
  665.     END IF
  666. END SUB
  667.  
  668.  
  669. '*************************************************************************
  670. SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%) STATIC
  671.     IF FShowProgManGroup(szGroup$, STR$(Cmd%), cmo%) = 0 THEN
  672.         ERROR STFERR
  673.     END IF
  674. END SUB
  675.  
  676.  
  677. '*************************************************************************
  678. SUB StampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) STATIC
  679.     IF FStampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) = 0 THEN
  680.         ERROR STFERR
  681.     END IF
  682. END SUB
  683.  
  684.  
  685. '*************************************************************************
  686. SUB DumpCopyList (szFile$) STATIC
  687.     IF FDumpCopyListToFile (szFile$) = 0 THEN
  688.         ERROR STFERR
  689.     END IF
  690. END SUB
  691.  
  692.  
  693. '*************************************************************************
  694. SUB ClearCopyList STATIC
  695.     ResetCopyList
  696. END SUB
  697.  
  698.  
  699. '*************************************************************************
  700. FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) STATIC AS LONG
  701.     lNeed& = LcbGetCopyListCost (szExtraList$, szCostList$, szNeedList$)
  702.     IF lNeed& < 0 THEN
  703.         ERROR STFERR
  704.     END IF
  705.     GetCopyListCost = lNeed&
  706. END FUNCTION
  707.  
  708.  
  709. '*************************************************************************
  710. SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%) STATIC
  711.     szItemNew$ = szItem$
  712.     IF szOther$ <> "" THEN
  713.         szItemNew$ = szItem$ + "," + szOther$
  714.     END IF
  715.  
  716.     IF FCreateProgManItem(szGroup$, szItemNew$, szCmd$, cmo%) = 0 THEN
  717.         ERROR STFERR
  718.     END IF
  719.     szItemNew$ = ""
  720. END SUB
  721.  
  722.  
  723. '*************************************************************************
  724. SUB AddDos5Help (szProgName$, szProgHelp$, cmo%) STATIC
  725.     IF FAddDos5Help (szProgName$, szProgHelp$, cmo%) = 0 THEN
  726.         ERROR STFERR
  727.     END IF
  728. END SUB
  729.  
  730.  
  731. '*************************************************************************
  732. SUB CopyFilesInCopyList STATIC
  733.     grc% = GrcCopyFilesInCopyList (HinstFrame())
  734.  
  735.     IF grc% = grcUserQuit THEN
  736.         ERROR STFQUIT
  737.     ELSEIF grc% > 0 THEN
  738.         ERROR STFERR
  739.     END IF
  740. END SUB
  741.  
  742.  
  743. '*************************************************************************
  744. SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%) STATIC
  745.     IF  FCopyOneFile(szFullPathSrc$, szFullPathDst$, (cmo OR cmoCopy), fAppend%) = 0 THEN
  746.         ERROR STFERR
  747.     END IF
  748. END SUB
  749.  
  750.  
  751.  
  752. '*************************************************************************
  753. SUB RemoveFile (szFullPathSrc$, cmo%) STATIC
  754.     IF  YnrcRemoveFile(szFullPathSrc$, cmo%) = ynrcNo THEN
  755.         ERROR STFERR
  756.     END IF
  757. END SUB
  758.  
  759.  
  760. '*************************************************************************
  761. SUB BackupFile (szFullPath$, szBackup$) STATIC
  762.     IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
  763.         ERROR STFERR
  764.     END IF
  765. END SUB
  766.  
  767.  
  768. '*************************************************************************
  769. SUB RenameFile (szFullPath$, szBackup$) STATIC
  770.     IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
  771.         ERROR STFERR
  772.     END IF
  773. END SUB
  774.  
  775.  
  776. '*************************************************************************
  777. SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$) STATIC
  778.     IF FAddSectionFilesToCopyList (szSect$, szSrc$, szDest$) = 0 THEN
  779.         ERROR STFERR
  780.     END IF
  781. END SUB
  782.  
  783.  
  784. '*************************************************************************
  785. SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
  786.     IF FAddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
  787.         ERROR STFERR
  788.     END IF
  789. END SUB
  790.  
  791.  
  792. '*************************************************************************
  793. SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
  794.     IF FAddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
  795.         ERROR STFERR
  796.     END IF
  797. END SUB
  798.  
  799.  
  800. '*************************************************************************
  801. SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&) STATIC
  802.     IF FAddToBillboardList(szDll$, idDlg%, szProc$, lTicks&) = 0 THEN
  803.         ERROR STFERR
  804.     END IF
  805. END SUB
  806.  
  807.  
  808. '*************************************************************************
  809. SUB AddBlankToBillboardList (lTicks&) STATIC
  810.     IF FAddToBillboardList(NULL, 0, NULL, lTicks&) = 0 THEN
  811.         ERROR STFERR
  812.     END IF
  813. END SUB
  814.  
  815.  
  816. '*************************************************************************
  817. SUB ClearBillboardList STATIC
  818.     IF FClearBillboardList = 0 THEN
  819.         ERROR STFERR
  820.     END IF
  821. END SUB
  822.  
  823.  
  824. '*************************************************************************
  825. SUB OpenLogFile (szFile$, fAppend%) STATIC
  826.     IF FOpenLogFile(szFile$, fAppend%) = 0 THEN
  827.         ERROR STFERR
  828.     END IF
  829. END SUB
  830.  
  831.  
  832. '*************************************************************************
  833. SUB CloseLogFile STATIC
  834.     IF FCloseLogFile() = 0 THEN
  835.         ERROR STFERR
  836.     END IF
  837. END SUB
  838.  
  839.  
  840. '*************************************************************************
  841. SUB WriteToLogFile (szStr$) STATIC
  842.     IF FWriteToLogFile(szStr$, 1) = 0 THEN
  843.         ERROR STFERR
  844.     END IF
  845. END SUB
  846.  
  847.  
  848. ''' -1 in either parameter will mean 'center in frame client area'
  849. '*************************************************************************
  850. SUB SetCopyGaugePosition (x%, y%) STATIC
  851.     ProSetPos x%, y%
  852. END SUB
  853.  
  854.  
  855. '*************************************************************************
  856. FUNCTION FindFileUsingFileOpen (szFile$) STATIC AS STRING
  857.     szBuf$ = STRING$(512, 32)
  858.  
  859.     wRet% = WFindFileUsingFileOpen(szFile$, szBuf$, len(szBuf$))
  860.     IF wRet% = 0 THEN
  861.         FindFileUsingFileOpen = szBuf$
  862.     ELSEIF wRet% = 1 THEN
  863.         FindFileUsingFileOpen = ""
  864.     ELSE
  865.         ERROR STFERR
  866.     END IF
  867.  
  868.     szBuf$ = ""
  869. END FUNCTION
  870.  
  871.  
  872. '*************************************************************************
  873. FUNCTION IsDirWritable (szDir$) STATIC AS INTEGER
  874.     IsDirWritable = FIsDirWritable(szDir$)
  875. END FUNCTION
  876.  
  877.  
  878. '*************************************************************************
  879. FUNCTION IsFileWritable (szFile$) STATIC AS INTEGER
  880.     IsFileWritable = FIsFileWritable(szFile$)
  881. END FUNCTION
  882.  
  883.  
  884. '*************************************************************************
  885. FUNCTION GetNthFieldFromIniString (szLine$, iField%) STATIC AS STRING
  886.     IF iField% < 1 THEN
  887.         ERROR STFERR
  888.     END IF
  889.     szStart$ = szLine$
  890.     IF iField% <> 1 THEN
  891.         FOR i% = 2 TO iField% STEP 1
  892.             iNew% = INSTR(szStart$, ",")
  893.             IF iNew% = 0 THEN
  894.                 GetNthFieldFromIniString = ""
  895.                 GOTO _GNFFIS_END
  896.             END IF
  897.             szStart$ = MID$(szStart$, (iNew% + 1))
  898.         NEXT
  899.     END IF
  900.  
  901.     iNew% = INSTR(szStart$, ",")
  902.     IF iNew% <> 0 THEN
  903.         szStart$ = MID$(szStart$, 1, (iNew% - 1))
  904.     END IF
  905.  
  906.     GetNthFieldFromIniString = LTRIM$(RTRIM$(szStart$))
  907.  
  908. _GNFFIS_END:
  909.  
  910. END FUNCTION
  911.  
  912.  
  913. '*************************************************************************
  914. FUNCTION GetWindowsMajorVersion STATIC AS INTEGER
  915.     GetWindowsMajorVersion = GetVersion() MOD 256
  916. END FUNCTION
  917.  
  918.  
  919. '*************************************************************************
  920. FUNCTION GetWindowsMinorVersion STATIC AS INTEGER
  921.     GetWindowsMinorVersion = GetVersion() / 256
  922. END FUNCTION
  923.  
  924.  
  925. '*************************************************************************
  926. FUNCTION GetWindowsMode STATIC AS INTEGER
  927.     GetWindowsMode = 0
  928.     longTmp& = GetWinFlags()
  929.     IF longTmp& AND WF_STANDARD THEN
  930.         GetWindowsMode = 1
  931.     ELSEIF longTmp& AND WF_ENHANCED THEN
  932.         GetWindowsMode = 2
  933.     END IF
  934. END FUNCTION
  935.  
  936.  
  937. '*************************************************************************
  938. FUNCTION GetWindowsDir STATIC AS STRING
  939.     szBuf$ = string$(256, 32)
  940.     cbBuf% = GetWindowsDirectory(szBuf$, 256)
  941.  
  942.     IF cbBuf% = 0 THEN
  943.         GetWindowsDir = ""
  944.         ERROR STFERR
  945.     ELSE
  946.         IF cbBuf% > 255 THEN
  947.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  948.             ERROR STFERR
  949.         END IF
  950.         szBuf$ = RTRIM$(szBuf$)
  951.         IF MID$(szBuf$, 1, 1) = "\" THEN
  952.             'szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  953.             szBuf$ = MID$(GetWindowsSysDir, 1, 2) + szBuf$
  954.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  955.             szBuf$ = MID$(GetWindowsSysDir, 1, 3) + szBuf$
  956.         END IF
  957.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  958.             szBuf$ = szBuf$ + "\"
  959.         END IF
  960.         GetWindowsDir = szBuf$
  961.     END IF
  962.  
  963.     szBuf$ = ""
  964. END FUNCTION
  965.  
  966.  
  967. '*************************************************************************
  968. FUNCTION GetWindowsSysDir STATIC AS STRING
  969.     szBuf$ = string$(256, 32)
  970.     cbBuf% = GetSystemDirectory(szBuf$, 256)
  971.  
  972.     IF cbBuf% = 0 THEN
  973.         ERROR STFERR
  974.     ELSE
  975.         IF cbBuf% > 255 THEN
  976.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  977.             ERROR STFERR
  978.         END IF
  979.         szBuf$ = RTRIM$(szBuf$)
  980.         IF MID$(szBuf$, 1, 1) = "\" THEN
  981.             szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  982.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  983.             szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  984.         END IF
  985.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  986.             szBuf$ = szBuf$ + "\"
  987.         END IF
  988.         GetWindowsSysDir = szBuf$
  989.     END IF
  990.  
  991.     szBuf$ = ""
  992. END FUNCTION
  993.  
  994.  
  995. '*************************************************************************
  996. FUNCTION IsWindowsShared STATIC AS INTEGER
  997.     szWin$ = UCASE$(GetWindowsDir())
  998.     szSys$ = UCASE$(GetWindowsSysDir())
  999.  
  1000.     IF len(szWin$) = 0 THEN
  1001.         ERROR STFERR
  1002.     END IF
  1003.  
  1004.     IF len(szSys$) <= len(szWin$) THEN
  1005.         IsWindowsShared = 1
  1006.     ELSE
  1007.         szSys$ = MID$(szSys$, 1, len(szWin$))
  1008.         IF szWin$ = szSys$ THEN
  1009.             IsWindowsShared = 0
  1010.         ELSE
  1011.             IsWindowsShared = 1
  1012.         END IF
  1013.     END IF
  1014. END FUNCTION
  1015.  
  1016.  
  1017. '*************************************************************************
  1018. FUNCTION GetScreenWidth STATIC AS INTEGER
  1019.     GetScreenWidth = GetSystemMetrics(SM_CXSCREEN)
  1020. END FUNCTION
  1021.  
  1022.  
  1023. '*************************************************************************
  1024. FUNCTION GetScreenHeight STATIC AS INTEGER
  1025.     GetScreenHeight = GetSystemMetrics(SM_CYSCREEN)
  1026. END FUNCTION
  1027.  
  1028.  
  1029. '*************************************************************************
  1030. SUB SetRestartDir (szDir$) STATIC
  1031.     IF FSetRestartDir(szDir$) = 0 THEN
  1032.         ERROR STFERR
  1033.     END IF
  1034. END SUB
  1035.  
  1036.  
  1037. '*************************************************************************
  1038. FUNCTION RestartListEmpty STATIC AS INTEGER
  1039.     IF FRestartListEmpty() = 0 THEN
  1040.         RestartListEmpty = 0
  1041.     ELSE
  1042.         RestartListEmpty = 1
  1043.     END IF
  1044. END FUNCTION
  1045.  
  1046.  
  1047. '*************************************************************************
  1048. FUNCTION ExitExecRestart STATIC AS INTEGER
  1049.     ExitExecRestart = FExitExecRestart
  1050. END FUNCTION
  1051.  
  1052.  
  1053. '*************************************************************************
  1054. SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%) STATIC
  1055.     IF FPrependToPath (szSrc$, szDst$, szDir$, cmo%) = 0 THEN
  1056.         ERROR STFERR
  1057.     END IF
  1058. END SUB
  1059.  
  1060.  
  1061.  
  1062. '**************************************************************************
  1063. '***************************  Error Handlers  *****************************
  1064. '**************************************************************************
  1065.  
  1066. TRAP CleanupTrap From "MSSHLSTF.DLL"
  1067.  
  1068. End Trap
  1069.  
  1070. hSetup = InitSetup(COMMAND$)
  1071.  
  1072. ON ERROR GOTO QUIT
  1073.  
  1074.