home *** CD-ROM | disk | FTP | other *** search
/ Chip 1996 December / CHIP_CD_1996_12_PL.iso / software / trial / netviz / setupapi.in_ / setupapi.in
Encoding:
Text File  |  1995-05-02  |  34.6 KB  |  1,087 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.  
  287. '' Error Handling
  288.  
  289.  
  290.  
  291.  
  292. '' Windows system detect
  293.  
  294. DECLARE FUNCTION GetWindowsMajorVersion AS INTEGER
  295. DECLARE FUNCTION GetWindowsMinorVersion AS INTEGER
  296. DECLARE FUNCTION GetWindowsMode AS INTEGER
  297. DECLARE FUNCTION GetWindowsDir  AS STRING
  298. DECLARE FUNCTION GetWindowsSysDir AS STRING
  299. DECLARE FUNCTION IsWindowsShared AS INTEGER
  300. DECLARE FUNCTION GetScreenWidth AS INTEGER
  301. DECLARE FUNCTION GetScreenHeight AS INTEGER
  302.  
  303.  
  304. '*************************************************************************
  305. '*****************  Setup Basic Wrapper Definitions  *********************
  306. '*************************************************************************
  307. FUNCTION InitSetup(szCmdLine$) STATIC AS INTEGER
  308.     fFrameInit = 0
  309.     fInstallInit = 0
  310.  
  311.     IF hSetup > 0 THEN
  312.     END IF
  313.  
  314.     i% = InitFrame(szCmdLine$)
  315.     fFrameInit = 1
  316.  
  317.     InitInstall
  318.     fInstallInit = 1
  319.  
  320.     InitSetup = i%
  321. END FUNCTION
  322.  
  323.  
  324.  
  325. '**************************************************************************
  326. FUNCTION InitFrame(szCmdLine$) STATIC AS INTEGER
  327.     IF hSetup > 0 THEN
  328.     ELSE
  329.         i% = InitializeFrame(szCmdLine$)
  330.         IF i% = -1 THEN
  331.             END   '' NOT an error - Usage (/?) or Command line copy operation
  332.         ELSEIF i% = 0 THEN
  333.             END
  334.         ELSE
  335.             InitFrame = i%
  336.         END IF
  337.     END IF
  338. END FUNCTION
  339.  
  340.  
  341. '**************************************************************************
  342. SUB SetBitmap(szDll$, Bitmap%) STATIC
  343.     IF FSetBitmap(szDll$, Bitmap%) = 0 THEN
  344.         ERROR STFERR
  345.     END IF
  346. END SUB
  347.  
  348.  
  349. '**************************************************************************
  350. SUB SetAbout(szAbout1$, szAbout2$) STATIC
  351.     IF FSetAbout(szAbout1$, szAbout2$) = 0 THEN
  352.         ERROR STFERR
  353.     END IF
  354. END SUB
  355.  
  356.  
  357. '*************************************************************************
  358. SUB SetTitle(sz$) STATIC
  359.     SetWindowText HwndFrame(), sz$
  360. END SUB
  361.  
  362.  
  363. '*************************************************************************
  364. SUB ReadInfFile (szFile$) STATIC
  365.     IF FOpenInf(szFile$, 1, 0) = 0 THEN
  366.         ERROR STFERR
  367.     END IF
  368. END SUB
  369.  
  370.  
  371. '*************************************************************************
  372. FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) STATIC AS STRING
  373.     IF FDoDialog(HwndFrame(), szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) = 0 THEN
  374.         ERROR STFERR
  375.     ELSE
  376.         UIStartDlg = GetSymbolValue("DLGEVENT")
  377.     END IF
  378. END FUNCTION
  379.  
  380.  
  381. '*************************************************************************
  382. SUB UIPop (n%) STATIC
  383.     IF FKillNDialogs(n%) = 0 THEN
  384.         ERROR STFERR
  385.     END IF
  386. END SUB
  387.  
  388.  
  389. '*************************************************************************
  390. SUB UIPopAll STATIC
  391.     IF FKillNDialogs(65535) = 0 THEN
  392.         ERROR STFERR
  393.     END IF
  394. END SUB
  395.  
  396.  
  397. '*************************************************************************
  398. FUNCTION GetSymbolValue(szSymbol$) STATIC AS STRING
  399.     szValue$ = string$(cbSymValMax,32)
  400.     Length% = CbGetSymbolValue(szSymbol$, szValue$, cbSymValMax)
  401.     GetSymbolValue = szValue$
  402.     IF Length% >= cbSymValMax THEN
  403.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  404.         ERROR STFERR
  405.     END IF
  406.     IF szSymbol$ = "" THEN
  407.         ERROR STFERR
  408.     END IF
  409.     szValue$ = ""
  410. END FUNCTION
  411.  
  412.  
  413. '*************************************************************************
  414. FUNCTION GetListLength(szSymbol$) STATIC AS INTEGER
  415.     GetListLength = UsGetListLength(szSymbol$)
  416.     IF szSymbol$ = "" THEN
  417.         ERROR STFERR
  418.     END IF
  419. END FUNCTION
  420.  
  421.  
  422. '*************************************************************************
  423. FUNCTION GetListItem(szListSymbol$, nItem%) STATIC AS STRING
  424.     szListItem$ = string$(cbSymValMax,32)
  425.     Length% = CbGetListItem(szListSymbol$, nItem%, szListItem$, cbSymValMax)
  426.     GetListItem = szListItem$
  427.     IF Length% >= cbSymValMax THEN
  428.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  429.         ERROR STFERR
  430.     END IF
  431.     IF szListSymbol$ = "" THEN
  432.         ERROR STFERR
  433.     END IF
  434.     if nItem% <= 0 or nItem% > GetListLength(szListSymbol$) then
  435.         ERROR STFERR
  436.     end if
  437.     szListItem$ = ""
  438. END FUNCTION
  439.  
  440.  
  441. '*************************************************************************
  442. SUB AddListItem(szSymbol$, szItem$) STATIC
  443.     IF FAddListItem(szSymbol$, szItem$) = 0 THEN
  444.         ERROR STFERR
  445.     END IF
  446. END SUB
  447.  
  448.  
  449. '*************************************************************************
  450. SUB ReplaceListItem(szSymbol$, n%, szItem$) STATIC
  451.     IF FReplaceListItem(szSymbol$, n%, szItem$) = 0 THEN
  452.         ERROR STFERR
  453.     END IF
  454. END SUB
  455.  
  456.  
  457. '**************************************************************************
  458. SUB MakeListFromSectionKeys(szSymbol$, szSect$) STATIC
  459.     IF FSetSymbolToListOfInfKeys(szSymbol$, szSect$, 1) = 0 THEN
  460.         ERROR STFERR
  461.     END IF
  462. END SUB
  463.  
  464.  
  465. '*************************************************************************
  466. SUB SetSymbolValue(szSymbol$, szValue$) STATIC
  467.     IF FSetSymbolValue(szSymbol$, szValue$) = 0 THEN
  468.         ERROR STFERR
  469.     END IF
  470. END SUB
  471.  
  472.  
  473. '*************************************************************************
  474. SUB RemoveSymbol(szSym$) STATIC
  475.     IF FRemoveSymbol(szSym$) = 0 THEN
  476.         ERROR STFERR
  477.     END IF
  478. END SUB
  479.  
  480.  
  481. '*************************************************************************
  482. FUNCTION ShowWaitCursor STATIC AS INTEGER
  483.     ShowWaitCursor = HShowWaitCursor
  484. END FUNCTION
  485.  
  486.  
  487. '*************************************************************************
  488. SUB RestoreCursor (hPrev%) STATIC
  489.     i% = FRestoreCursor(hPrev%)
  490.     IF i% = 0 THEN
  491.         ERROR STFERR
  492.     END IF
  493. END SUB
  494.  
  495.  
  496. '*************************************************************************
  497. FUNCTION SetBeepingMode (mode%) STATIC AS INTEGER
  498.     SetBeepingMode = FSetBeepingMode(mode%)
  499. END FUNCTION
  500.  
  501.  
  502. '*************************************************************************
  503. FUNCTION SetSilentMode (mode%) STATIC AS INTEGER
  504.     SetSilentMode = FSetSilent(mode%)
  505. END FUNCTION
  506.  
  507.  
  508. '*************************************************************************
  509. FUNCTION GetSectionKeyDate (szSect$, szKey$) STATIC AS STRING
  510.     szBuf$ = string$(128, 32)
  511.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 5, szBuf$, 128)
  512.     IF Length% >= 128 THEN
  513.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  514.         ERROR STFERR
  515.     END IF
  516.  
  517.     IF Length% = -1 THEN
  518.         ERROR STFERR
  519.     END IF
  520.  
  521.     GetSectionKeyDate = szBuf$
  522.     szBuf$ = ""
  523. END FUNCTION
  524.  
  525.  
  526. '*************************************************************************
  527. FUNCTION GetSectionKeyFilename (szSect$, szKey$) STATIC AS STRING
  528.     szBuf$ = string$(128, 32)
  529.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 1, szBuf$, 128)
  530.     IF Length% >= 128 THEN
  531.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  532.         ERROR STFERR
  533.     END IF
  534.  
  535.     IF Length% = -1 THEN
  536.         ERROR STFERR
  537.     END IF
  538.  
  539.     GetSectionKeyFilename = szBuf$
  540.     szBuf$ = ""
  541. END FUNCTION
  542.  
  543.  
  544. '*************************************************************************
  545. FUNCTION GetSectionKeySize (szSect$, szKey$) STATIC AS LONG
  546.     szBuf$ = string$(128, 32)
  547.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 15, szBuf$, 128)
  548.     IF Length% >= 128 THEN
  549.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  550.         ERROR STFERR
  551.     END IF
  552.  
  553.     IF Length% = -1 THEN
  554.         ERROR STFERR
  555.     END IF
  556.  
  557.     GetSectionKeySize = VAL(szBuf$)
  558.     szBuf$ = ""
  559. END FUNCTION
  560.  
  561.  
  562. '*************************************************************************
  563. FUNCTION GetSectionKeyVersion (szSect$, szKey$) STATIC AS STRING
  564.     szBuf$ = string$(128, 32)
  565.     Length% = CbGetInfSectionKeyField(szSect$, szKey$, 19, szBuf$, 128)
  566.     IF Length% >= 128 THEN
  567.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  568.         ERROR STFERR
  569.     END IF
  570.  
  571.     IF Length% = -1 THEN
  572.         ERROR STFERR
  573.     END IF
  574.  
  575.     GetSectionKeyVersion = szBuf$
  576.     szBuf$ = ""
  577. END FUNCTION
  578.  
  579.  
  580. '*************************************************************************
  581. SUB MakeListFromSectionDate (szSym$, szSect$) STATIC
  582.     IF FMakeListInfSectionField(szSym$, szSect$, 5) = 0 THEN
  583.         ERROR STFERR
  584.     END IF
  585. END SUB
  586.  
  587.  
  588. '*************************************************************************
  589. SUB MakeListFromSectionFilename (szSym$, szSect$) STATIC
  590.     IF FMakeListInfSectionField(szSym$, szSect$, 1) = 0 THEN
  591.         ERROR STFERR
  592.     END IF
  593. END SUB
  594.  
  595.  
  596. '*************************************************************************
  597. SUB MakeListFromSectionSize (szSym$, szSect$) STATIC
  598.     IF FMakeListInfSectionField(szSym$, szSect$, 15) = 0 THEN
  599.         ERROR STFERR
  600.     END IF
  601. END SUB
  602.  
  603.  
  604. '*************************************************************************
  605. SUB MakeListFromSectionVersion (szSym$, szSect$) STATIC
  606.     IF FMakeListInfSectionField(szSym$, szSect$, 19) = 0 THEN
  607.         ERROR STFERR
  608.     END IF
  609. END SUB
  610.  
  611.  
  612. '*************************************************************************
  613. SUB InitInstall STATIC
  614.     IF hSetup > 0 THEN
  615.     ELSEIF FInitializeInstall(HinstFrame(), HwndFrame()) = 0 THEN
  616.         END
  617.     END IF
  618. END SUB
  619.  
  620.  
  621. '*************************************************************************
  622. SUB CreateDir (szDir$, cmo%) STATIC
  623.     IF FCreateDir(szDir$, cmo%) = 0 THEN
  624.         ERROR STFERR
  625.     END IF
  626. END SUB
  627.  
  628.  
  629. '*************************************************************************
  630. SUB RemoveDir (szDir$, cmo%) STATIC
  631.     IF FRemoveDir(szDir$, cmo%) = 0 THEN
  632.         ERROR STFERR
  633.     END IF
  634. END SUB
  635.  
  636.  
  637.  
  638. '*************************************************************************
  639. SUB RemoveIniSection (szFile$, szSect$, cmo%) STATIC
  640.  
  641.     IF FRemoveIniSection(szFile$, szSect$, cmo%) = 0 THEN
  642.         ERROR STFERR
  643.     END IF
  644. END SUB
  645.  
  646.  
  647. '*************************************************************************
  648. SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
  649.     IF FCreateIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
  650.         ERROR STFERR
  651.     END IF
  652. END SUB
  653.  
  654.  
  655. '*************************************************************************
  656. SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%) STATIC
  657.  
  658.     IF FRemoveIniKey(szFile$, szSect$, szKey$, cmo%) = 0 THEN
  659.         ERROR STFERR
  660.     END IF
  661. END SUB
  662.  
  663.  
  664. '*************************************************************************
  665. SUB CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
  666.     IF FCreateSysIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
  667.         ERROR STFERR
  668.     END IF
  669. END SUB
  670.  
  671.  
  672. '*************************************************************************
  673. SUB CreateProgmanGroup (szGroup$, szPath$, cmo%) STATIC
  674.     IF FCreateProgManGroup(szGroup$, szPath$, cmo%) = 0 THEN
  675.         ERROR STFERR
  676.     END IF
  677. END SUB
  678.  
  679.  
  680. '*************************************************************************
  681. SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%) STATIC
  682.     IF FShowProgManGroup(szGroup$, STR$(Cmd%), cmo%) = 0 THEN
  683.         ERROR STFERR
  684.     END IF
  685. END SUB
  686.  
  687.  
  688. '*************************************************************************
  689. SUB StampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) STATIC
  690.     IF FStampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) = 0 THEN
  691.         ERROR STFERR
  692.     END IF
  693. END SUB
  694.  
  695.  
  696. '*************************************************************************
  697. SUB DumpCopyList (szFile$) STATIC
  698.     IF FDumpCopyListToFile (szFile$) = 0 THEN
  699.         ERROR STFERR
  700.     END IF
  701. END SUB
  702.  
  703.  
  704. '*************************************************************************
  705. SUB ClearCopyList STATIC
  706.     ResetCopyList
  707. END SUB
  708.  
  709.  
  710. '*************************************************************************
  711. FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) STATIC AS LONG
  712.     lNeed& = LcbGetCopyListCost (szExtraList$, szCostList$, szNeedList$)
  713.     IF lNeed& < 0 THEN
  714.         ERROR STFERR
  715.     END IF
  716.     GetCopyListCost = lNeed&
  717. END FUNCTION
  718.  
  719.  
  720. '*************************************************************************
  721. SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%) STATIC
  722.     szItemNew$ = szItem$
  723.     IF szOther$ <> "" THEN
  724.         szItemNew$ = szItem$ + "," + szOther$
  725.     END IF
  726.  
  727.     IF FCreateProgManItem(szGroup$, szItemNew$, szCmd$, cmo%) = 0 THEN
  728.         ERROR STFERR
  729.     END IF
  730.     szItemNew$ = ""
  731. END SUB
  732.  
  733.  
  734. '*************************************************************************
  735. SUB AddDos5Help (szProgName$, szProgHelp$, cmo%) STATIC
  736.     IF FAddDos5Help (szProgName$, szProgHelp$, cmo%) = 0 THEN
  737.         ERROR STFERR
  738.     END IF
  739. END SUB
  740.  
  741.  
  742. '*************************************************************************
  743. SUB CopyFilesInCopyList STATIC
  744.     grc% = GrcCopyFilesInCopyList (HinstFrame())
  745.  
  746.     IF grc% = grcUserQuit THEN
  747.         ERROR STFQUIT
  748.     ELSEIF grc% > 0 THEN
  749.         ERROR STFERR
  750.     END IF
  751. END SUB
  752.  
  753.  
  754. '*************************************************************************
  755. SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%) STATIC
  756.     IF  FCopyOneFile(szFullPathSrc$, szFullPathDst$, (cmo OR cmoCopy), fAppend%) = 0 THEN
  757.         ERROR STFERR
  758.     END IF
  759. END SUB
  760.  
  761.  
  762.  
  763. '*************************************************************************
  764. SUB RemoveFile (szFullPathSrc$, cmo%) STATIC
  765.     IF  YnrcRemoveFile(szFullPathSrc$, cmo%) = ynrcNo THEN
  766.         ERROR STFERR
  767.     END IF
  768. END SUB
  769.  
  770.  
  771. '*************************************************************************
  772. SUB BackupFile (szFullPath$, szBackup$) STATIC
  773.     IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
  774.         ERROR STFERR
  775.     END IF
  776. END SUB
  777.  
  778.  
  779. '*************************************************************************
  780. SUB RenameFile (szFullPath$, szBackup$) STATIC
  781.     IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
  782.         ERROR STFERR
  783.     END IF
  784. END SUB
  785.  
  786.  
  787. '*************************************************************************
  788. SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$) STATIC
  789.     IF FAddSectionFilesToCopyList (szSect$, szSrc$, szDest$) = 0 THEN
  790.         ERROR STFERR
  791.     END IF
  792. END SUB
  793.  
  794.  
  795. '*************************************************************************
  796. SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
  797.     IF FAddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
  798.         ERROR STFERR
  799.     END IF
  800. END SUB
  801.  
  802.  
  803. '*************************************************************************
  804. SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
  805.     IF FAddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
  806.         ERROR STFERR
  807.     END IF
  808. END SUB
  809.  
  810.  
  811. '*************************************************************************
  812. SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&) STATIC
  813.     IF FAddToBillboardList(szDll$, idDlg%, szProc$, lTicks&) = 0 THEN
  814.         ERROR STFERR
  815.     END IF
  816. END SUB
  817.  
  818.  
  819. '*************************************************************************
  820. SUB AddBlankToBillboardList (lTicks&) STATIC
  821.     IF FAddToBillboardList(NULL, 0, NULL, lTicks&) = 0 THEN
  822.         ERROR STFERR
  823.     END IF
  824. END SUB
  825.  
  826.  
  827. '*************************************************************************
  828. SUB ClearBillboardList STATIC
  829.     IF FClearBillboardList = 0 THEN
  830.         ERROR STFERR
  831.     END IF
  832. END SUB
  833.  
  834.  
  835. '*************************************************************************
  836. SUB OpenLogFile (szFile$, fAppend%) STATIC
  837.     IF FOpenLogFile(szFile$, fAppend%) = 0 THEN
  838.         ERROR STFERR
  839.     END IF
  840. END SUB
  841.  
  842.  
  843. '*************************************************************************
  844. SUB CloseLogFile STATIC
  845.     IF FCloseLogFile() = 0 THEN
  846.         ERROR STFERR
  847.     END IF
  848. END SUB
  849.  
  850.  
  851. '*************************************************************************
  852. SUB WriteToLogFile (szStr$) STATIC
  853.     IF FWriteToLogFile(szStr$, 1) = 0 THEN
  854.         ERROR STFERR
  855.     END IF
  856. END SUB
  857.  
  858.  
  859. ''' -1 in either parameter will mean 'center in frame client area'
  860. '*************************************************************************
  861. SUB SetCopyGaugePosition (x%, y%) STATIC
  862.     ProSetPos x%, y%
  863. END SUB
  864.  
  865.  
  866. '*************************************************************************
  867. FUNCTION FindFileUsingFileOpen (szFile$) STATIC AS STRING
  868.     szBuf$ = STRING$(512, 32)
  869.  
  870.     wRet% = WFindFileUsingFileOpen(szFile$, szBuf$, len(szBuf$))
  871.     IF wRet% = 0 THEN
  872.         FindFileUsingFileOpen = szBuf$
  873.     ELSEIF wRet% = 1 THEN
  874.         FindFileUsingFileOpen = ""
  875.     ELSE
  876.         ERROR STFERR
  877.     END IF
  878.  
  879.     szBuf$ = ""
  880. END FUNCTION
  881.  
  882.  
  883. '*************************************************************************
  884. FUNCTION IsDirWritable (szDir$) STATIC AS INTEGER
  885.     IsDirWritable = FIsDirWritable(szDir$)
  886. END FUNCTION
  887.  
  888.  
  889. '*************************************************************************
  890. FUNCTION IsFileWritable (szFile$) STATIC AS INTEGER
  891.     IsFileWritable = FIsFileWritable(szFile$)
  892. END FUNCTION
  893.  
  894.  
  895. '*************************************************************************
  896. FUNCTION GetNthFieldFromIniString (szLine$, iField%) STATIC AS STRING
  897.     IF iField% < 1 THEN
  898.         ERROR STFERR
  899.     END IF
  900.     szStart$ = szLine$
  901.     IF iField% <> 1 THEN
  902.         FOR i% = 2 TO iField% STEP 1
  903.             iNew% = INSTR(szStart$, ",")
  904.             IF iNew% = 0 THEN
  905.                 GetNthFieldFromIniString = ""
  906.                 GOTO _GNFFIS_END
  907.             END IF
  908.             szStart$ = MID$(szStart$, (iNew% + 1))
  909.         NEXT
  910.     END IF
  911.  
  912.     iNew% = INSTR(szStart$, ",")
  913.     IF iNew% <> 0 THEN
  914.         szStart$ = MID$(szStart$, 1, (iNew% - 1))
  915.     END IF
  916.  
  917.     GetNthFieldFromIniString = LTRIM$(RTRIM$(szStart$))
  918.  
  919. _GNFFIS_END:
  920.  
  921. END FUNCTION
  922.  
  923.  
  924. '*************************************************************************
  925. FUNCTION GetWindowsMajorVersion STATIC AS INTEGER
  926.     GetWindowsMajorVersion = GetVersion() MOD 256
  927. END FUNCTION
  928.  
  929.  
  930. '*************************************************************************
  931. FUNCTION GetWindowsMinorVersion STATIC AS INTEGER
  932.     GetWindowsMinorVersion = GetVersion() / 256
  933. END FUNCTION
  934.  
  935.  
  936. '*************************************************************************
  937. FUNCTION GetWindowsMode STATIC AS INTEGER
  938.     GetWindowsMode = 0
  939.     longTmp& = GetWinFlags()
  940.     IF longTmp& AND WF_STANDARD THEN
  941.         GetWindowsMode = 1
  942.     ELSEIF longTmp& AND WF_ENHANCED THEN
  943.         GetWindowsMode = 2
  944.     END IF
  945. END FUNCTION
  946.  
  947.  
  948. '*************************************************************************
  949. FUNCTION GetWindowsDir STATIC AS STRING
  950.     szBuf$ = string$(256, 32)
  951.     cbBuf% = GetWindowsDirectory(szBuf$, 256)
  952.  
  953.     IF cbBuf% = 0 THEN
  954.         GetWindowsDir = ""
  955.         ERROR STFERR
  956.     ELSE
  957.         IF cbBuf% > 255 THEN
  958.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  959.             ERROR STFERR
  960.         END IF
  961.         szBuf$ = RTRIM$(szBuf$)
  962.         IF MID$(szBuf$, 1, 1) = "\" THEN
  963.             'szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  964.             szBuf$ = MID$(GetWindowsSysDir, 1, 2) + szBuf$
  965.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  966.             szBuf$ = MID$(GetWindowsSysDir, 1, 3) + szBuf$
  967.         END IF
  968.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  969.             szBuf$ = szBuf$ + "\"
  970.         END IF
  971.         GetWindowsDir = szBuf$
  972.     END IF
  973.  
  974.     szBuf$ = ""
  975. END FUNCTION
  976.  
  977.  
  978. '*************************************************************************
  979. FUNCTION GetWindowsSysDir STATIC AS STRING
  980.     szBuf$ = string$(256, 32)
  981.     cbBuf% = GetSystemDirectory(szBuf$, 256)
  982.  
  983.     IF cbBuf% = 0 THEN
  984.         ERROR STFERR
  985.     ELSE
  986.         IF cbBuf% > 255 THEN
  987.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  988.             ERROR STFERR
  989.         END IF
  990.         szBuf$ = RTRIM$(szBuf$)
  991.         IF MID$(szBuf$, 1, 1) = "\" THEN
  992.             szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  993.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  994.             szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  995.         END IF
  996.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  997.             szBuf$ = szBuf$ + "\"
  998.         END IF
  999.         GetWindowsSysDir = szBuf$
  1000.     END IF
  1001.  
  1002.     szBuf$ = ""
  1003. END FUNCTION
  1004.  
  1005.  
  1006. '*************************************************************************
  1007. FUNCTION IsWindowsShared STATIC AS INTEGER
  1008.     szWin$ = UCASE$(GetWindowsDir())
  1009.     szSys$ = UCASE$(GetWindowsSysDir())
  1010.  
  1011.     IF len(szWin$) = 0 THEN
  1012.         ERROR STFERR
  1013.     END IF
  1014.  
  1015.     IF len(szSys$) <= len(szWin$) THEN
  1016.         IsWindowsShared = 1
  1017.     ELSE
  1018.         szSys$ = MID$(szSys$, 1, len(szWin$))
  1019.         IF szWin$ = szSys$ THEN
  1020.             IsWindowsShared = 0
  1021.         ELSE
  1022.             IsWindowsShared = 1
  1023.         END IF
  1024.     END IF
  1025. END FUNCTION
  1026.  
  1027.  
  1028. '*************************************************************************
  1029. FUNCTION GetScreenWidth STATIC AS INTEGER
  1030.     GetScreenWidth = GetSystemMetrics(SM_CXSCREEN)
  1031. END FUNCTION
  1032.  
  1033.  
  1034. '*************************************************************************
  1035. FUNCTION GetScreenHeight STATIC AS INTEGER
  1036.     GetScreenHeight = GetSystemMetrics(SM_CYSCREEN)
  1037. END FUNCTION
  1038.  
  1039.  
  1040. '*************************************************************************
  1041. SUB SetRestartDir (szDir$) STATIC
  1042.     IF FSetRestartDir(szDir$) = 0 THEN
  1043.         ERROR STFERR
  1044.     END IF
  1045. END SUB
  1046.  
  1047.  
  1048. '*************************************************************************
  1049. FUNCTION RestartListEmpty STATIC AS INTEGER
  1050.     IF FRestartListEmpty() = 0 THEN
  1051.         RestartListEmpty = 0
  1052.     ELSE
  1053.         RestartListEmpty = 1
  1054.     END IF
  1055. END FUNCTION
  1056.  
  1057.  
  1058. '*************************************************************************
  1059. FUNCTION ExitExecRestart STATIC AS INTEGER
  1060.     ExitExecRestart = FExitExecRestart
  1061. END FUNCTION
  1062.  
  1063.  
  1064. '*************************************************************************
  1065. SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%) STATIC
  1066.     IF FPrependToPath (szSrc$, szDst$, szDir$, cmo%) = 0 THEN
  1067.         ERROR STFERR
  1068.     END IF
  1069. END SUB
  1070.  
  1071.  
  1072.  
  1073. '**************************************************************************
  1074. '***************************  Error Handlers  *****************************
  1075. '**************************************************************************
  1076.  
  1077.  
  1078.  
  1079.  
  1080. TRAP CleanupTrap From "MSSHLSTF.DLL"
  1081.  
  1082. End Trap
  1083.  
  1084. hSetup = InitSetup(COMMAND$)
  1085.  
  1086. ON ERROR GOTO QUIT
  1087.