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