home *** CD-ROM | disk | FTP | other *** search
/ Instant Calendar / SOFTKEY.iso / disk1 / setupapi.inc < prev    next >
Text File  |  1994-01-27  |  15KB  |  451 lines

  1. GLOBAL hSetup AS INTEGER
  2. GLOBAL fFrameInit AS INTEGER
  3. GLOBAL fInstallInit AS INTEGER
  4. CONST MB_OK=0
  5. CONST MB_ICONHAND=16
  6. CONST MB_TASKMODAL=8192
  7. DECLARE FUNCTION DoMsgBox LIB "mscomstf.dll" (lpText$,lpCaption$,wType%) As INTEGER
  8. DECLARE FUNCTION GetWindowsDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
  9. DECLARE FUNCTION GetSystemDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
  10. DECLARE FUNCTION GetVersion LIB "kernel" AS INTEGER
  11. DECLARE FUNCTION YnrcRemoveFile LIB "msinsstf.dll" (szFullPathSrc$, cmo%) AS INTEGER
  12. DECLARE SUB RemoveFile (szFullPathSrc$, cmo%)
  13. CONST cmoVital=1
  14. CONST cmoCopy=2
  15. CONST cmoUndo=4
  16. CONST cmoRoot=8
  17. CONST cmoDecompress=16
  18. CONST cmoTimeStamp=32
  19. CONST cmoReadOnly=64
  20. CONST cmoBackup=128
  21. CONST cmoForce=256
  22. CONST cmoRemove=512
  23. CONST cmoOverwrite=1024
  24. CONST cmoAppend=2048
  25. CONST cmoPrepend=4096
  26. CONST cmoNone=0
  27. CONST cmoAll=65535
  28. CONST femExists=0
  29. CONST femRead=1
  30. CONST femWrite=2
  31. CONST femReadWrite=3
  32. CONST ynrcNo=0
  33. CONST ynrcYes=1
  34. CONST ynrcErr1=2
  35. CONST ynrcErr2=3
  36. CONST ynrcErr3=4
  37. CONST ynrcErr4=5
  38. CONST ynrcErr5=6
  39. CONST ynrcErr6=7
  40. CONST ynrcErr7=8
  41. CONST ynrcErr8=9
  42. CONST ynrcErr9=10
  43. CONST grcOkay=0
  44. CONST grcNotOkay=1
  45. CONST grcUserQuit=48
  46. CONST cbSymValMax=512
  47. CONST STFERR=1024 ''setup system error
  48. CONST STFQUIT=1025 ''user quit
  49. CONST scmOff=0
  50. CONST scmOnIgnore=1
  51. CONST scmOnFatal=2
  52. DECLARE FUNCTION FOpenInf LIB "mscomstf.dll" (szFile$, fCheck%, fCheckSyms%) AS INTEGER
  53. DECLARE FUNCTION HShowWaitCursor LIB "msshlstf.dll" AS INTEGER
  54. DECLARE FUNCTION FRestoreCursor  LIB "msshlstf.dll" (hPrev%) AS INTEGER
  55. DECLARE FUNCTION CbGetInfSectionKeyField LIB "mscomstf.dll" (szSect$, szKey$, iField%, szBuf$, cbBuf%) AS INTEGER
  56. DECLARE FUNCTION FMakeListInfSectionField LIB "mscomstf.dll" (szSym$, szSect$, iField%) AS INTEGER
  57. DECLARE FUNCTION FSetBitmap LIB "msshlstf.dll" (szDll$, Bitmap%) AS INTEGER
  58. DECLARE FUNCTION FSetAbout LIB "msshlstf.dll" (szAbout1$, szAbout2$) AS INTEGER
  59. DECLARE FUNCTION FDoDialog LIB "msuilstf.dll" (hwnd%, szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS INTEGER
  60. DECLARE FUNCTION FKillNDialogs LIB "msuilstf.dll" (n%) AS INTEGER
  61. DECLARE SUB      SetWindowText LIB "User" (hwnd%, lpString$)
  62. DECLARE FUNCTION FSetSymbolValue LIB "msshlstf.dll" (szSymbol$, szValue$) AS INTEGER
  63. DECLARE FUNCTION FRemoveSymbol LIB "mscomstf.dll" (szSym$) AS INTEGER
  64. DECLARE FUNCTION CbGetSymbolValue LIB "mscomstf.dll" (szSymbol$, szValue$, Length%) AS INTEGER
  65. DECLARE FUNCTION UsGetListLength LIB "mscomstf.dll" (szSymbol$) AS INTEGER
  66. DECLARE FUNCTION CbGetListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$, cbMax%) AS INTEGER
  67. DECLARE FUNCTION FAddListItem LIB "mscomstf.dll" (szListSymbol$, szListItem$) AS INTEGER
  68. DECLARE FUNCTION FReplaceListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$) AS INTEGER
  69. DECLARE FUNCTION FSetSymbolToListOfInfKeys LIB "mscomstf.dll" (szSym$, szSect$, fNulls%) AS INTEGER
  70. DECLARE FUNCTION InitializeFrame LIB "msshlstf.dll" (szCmdLine$) AS INTEGER
  71. DECLARE FUNCTION HwndFrame LIB "msshlstf.dll" AS INTEGER
  72. DECLARE FUNCTION HinstFrame LIB "msshlstf.dll" AS INTEGER
  73. DECLARE FUNCTION FCreateDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
  74. DECLARE FUNCTION FAddSectionFilesToCopyList LIB "mscomstf.dll" (szSect$, szSrc$, szDest$) AS INTEGER
  75. DECLARE FUNCTION FAddSectionKeyFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
  76. DECLARE FUNCTION FAddSpecialFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
  77. DECLARE FUNCTION GrcCopyFilesInCopyList LIB "msinsstf.dll" (hInstance%) AS INTEGER
  78. DECLARE FUNCTION FRemoveIniSection LIB "msinsstf.dll" (szFile$, szSect$, cmo%) AS INTEGER
  79. DECLARE FUNCTION FCreateIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
  80. DECLARE FUNCTION FCreateProgManGroup LIB "msinsstf.dll" (szGroup$, szPath$, cmo%) AS INTEGER
  81. DECLARE FUNCTION FCreateProgManItem LIB "msinsstf.dll" (szGroup$, szItem$, szCmd$, cmo%) AS INTEGER
  82. DECLARE FUNCTION FShowProgManGroup LIB "msinsstf.dll" (szGroup$, szCmd$, cmo%) AS INTEGER
  83. DECLARE SUB      ResetCopyList LIB "msinsstf.dll"
  84. DECLARE FUNCTION LcbGetCopyListCost LIB "msinsstf.dll" (szExtraList$, szCostList$, szNeedList$) AS LONG
  85. DECLARE FUNCTION FCopyOneFile LIB "msinsstf.dll" (szSrc$, szDest$, cmo%, fAppend%) AS INTEGER
  86. DECLARE FUNCTION YnrcBackupFile LIB "msinsstf.dll" (szFullPath$, szBackup$, cmo%) AS INTEGER
  87. DECLARE FUNCTION FInitializeInstall LIB "msinsstf.dll" (hinst%, hwndFrame%) AS INTEGER
  88. DECLARE FUNCTION WFindFileUsingFileOpen LIB "msinsstf.dll" (szFile$, szBuf$, cbBuf%) AS INTEGER
  89. DECLARE FUNCTION FIsDirWritable LIB "msinsstf.dll" (szDir$) AS INTEGER
  90. DECLARE FUNCTION SetSizeCheckMode LIB "msinsstf.dll" (scmMode%) AS INTEGER
  91. DECLARE SUB      SetBitmap(szDll$, Bitmap%)
  92. DECLARE SUB      SetAbout(szAbout1$, szAbout2$)
  93. DECLARE FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS STRING
  94. DECLARE SUB UIPop (n%)
  95. DECLARE SUB UIPopAll
  96. DECLARE SUB SetTitle (sz$)
  97. DECLARE SUB ReadInfFile (szFile$)
  98. DECLARE SUB SetSymbolValue (szSymbol$, szValue$)
  99. DECLARE SUB RemoveSymbol (szSym$)
  100. DECLARE FUNCTION GetSymbolValue (szSymbol$) AS STRING
  101. DECLARE FUNCTION GetListLength(szSymbol$) AS INTEGER
  102. DECLARE FUNCTION GetListItem(szSymbol$, n%) AS STRING
  103. DECLARE SUB AddListItem(szSymbol$, szItem$)
  104. DECLARE SUB ReplaceListItem(szSymbol$, n%, szItem$)
  105. DECLARE FUNCTION InitFrame (szCmdLine$) AS INTEGER
  106. DECLARE FUNCTION InitSetup (szCmdLine$) AS INTEGER
  107. DECLARE FUNCTION ShowWaitCursor AS INTEGER
  108. DECLARE SUB RestoreCursor (hPrev%)
  109. DECLARE SUB MakeListFromSectionSize (szSym$, szSect$)
  110. DECLARE SUB CreateDir (szDir$, cmo%)
  111. DECLARE SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$)
  112. DECLARE SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
  113. DECLARE SUB CopyFilesInCopyList
  114. DECLARE SUB RemoveIniSection (szFile$, szSect$, cmo%)
  115. DECLARE SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
  116. DECLARE SUB CreateProgmanGroup (szGroup$, szPath$, cmo%)
  117. DECLARE SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%)
  118. DECLARE SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%)
  119. DECLARE SUB ClearCopyList
  120. DECLARE FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) AS LONG
  121. DECLARE SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%)
  122. DECLARE SUB RenameFile (szFullPath$, szBackup$)
  123. DECLARE SUB InitInstall
  124. DECLARE FUNCTION IsDirWritable (szDir$) AS INTEGER
  125. DECLARE FUNCTION GetWindowsMajorVersion AS INTEGER
  126. DECLARE FUNCTION GetWindowsMinorVersion AS INTEGER
  127. DECLARE FUNCTION GetWindowsDir  AS STRING
  128. DECLARE FUNCTION GetWindowsSysDir AS STRING
  129.  
  130. FUNCTION InitSetup(szCmdLine$) STATIC AS INTEGER
  131. fFrameInit=0
  132. fInstallInit=0
  133. IF hSetup > 0 THEN
  134. END IF
  135. i% = InitFrame(szCmdLine$)
  136. fFrameInit = 1
  137. InitInstall
  138. fInstallInit = 1
  139. InitSetup = i%
  140. END FUNCTION
  141.  
  142. FUNCTION InitFrame(szCmdLine$) STATIC AS INTEGER
  143. IF hSetup > 0 THEN
  144. ELSE
  145.   i% = InitializeFrame (szCmdLine$)
  146.   IF i% = -1 THEN
  147.   END '' NOT an error - Usage (/?) or Command line copy operation
  148.   ELSEIF i% = 0 THEN
  149.   END
  150.   ELSE
  151.   InitFrame = i%
  152.   END IF
  153. END IF
  154. END FUNCTION
  155.  
  156. SUB SetBitmap (szDll$, Bitmap%) STATIC
  157. IF FSetBitmap (szDll$, Bitmap%) = 0 THEN
  158.   ERROR STFERR
  159. END IF
  160. END SUB
  161.  
  162. SUB SetAbout (szAbout1$, szAbout2$) STATIC
  163. IF FSetAbout(szAbout1$, szAbout2$) = 0 THEN
  164.   ERROR STFERR
  165. END IF
  166. END SUB
  167.  
  168. SUB SetTitle (sz$) STATIC
  169. SetWindowText HwndFrame (), sz$
  170. END SUB
  171.  
  172. SUB ReadInfFile (szFile$) STATIC
  173. IF FOpenInf (szFile$, 1, 0) = 0 THEN
  174.   ERROR STFERR
  175. END IF
  176. END SUB
  177.  
  178. FUNCTION UIStartDlg (szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) STATIC AS STRING
  179. IF FDoDialog (HwndFrame (), szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) = 0 THEN
  180.   ERROR STFERR
  181. ELSE
  182.   UIStartDlg = GetSymbolValue ("DLGEVENT")
  183. END IF
  184. END FUNCTION
  185.  
  186. SUB UIPop (n%) STATIC
  187. IF FKillNDialogs (n%) = 0 THEN
  188.   ERROR STFERR
  189. END IF
  190. END SUB
  191.  
  192. '*************************************************************************
  193. SUB UIPopAll STATIC
  194. IF FKillNDialogs (65535) = 0 THEN
  195.   ERROR STFERR
  196. END IF
  197. END SUB
  198.  
  199. '*************************************************************************
  200. FUNCTION GetSymbolValue(szSymbol$) STATIC AS STRING
  201. szValue$ = string$ (cbSymValMax,32)
  202. Length% = CbGetSymbolValue (szSymbol$, szValue$, cbSymValMax)
  203. GetSymbolValue = szValue$
  204. IF Length% >= cbSymValMax THEN
  205.   res% = DoMsgBox ("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  206.   ERROR STFERR
  207. END IF
  208. IF szSymbol$ = "" THEN
  209.   ERROR STFERR
  210. END IF
  211. szValue$ = ""
  212. END FUNCTION
  213.  
  214. FUNCTION GetListLength (szSymbol$) STATIC AS INTEGER
  215. GetListLength = UsGetListLength (szSymbol$)
  216. IF szSymbol$ = "" THEN
  217.   ERROR STFERR
  218. END IF
  219. END FUNCTION
  220.  
  221. FUNCTION GetListItem (szListSymbol$, nItem%) STATIC AS STRING
  222. szListItem$ = string$ (cbSymValMax,32)
  223. Length% = CbGetListItem (szListSymbol$, nItem%, szListItem$, cbSymValMax)
  224. GetListItem = szListItem$
  225. IF Length% >= cbSymValMax THEN
  226.   res% = DoMsgBox ("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  227.   ERROR STFERR
  228. END IF
  229. IF szListSymbol$ = "" THEN
  230.   ERROR STFERR
  231. END IF
  232. if nItem% <= 0 or nItem% > GetListLength (szListSymbol$) then
  233.   ERROR STFERR
  234. end if
  235. szListItem$ = ""
  236. END FUNCTION
  237.  
  238. SUB AddListItem (szSymbol$, szItem$) STATIC
  239. IF FAddListItem (szSymbol$, szItem$) = 0 THEN
  240.   ERROR STFERR
  241. END IF
  242. END SUB
  243.  
  244. SUB ReplaceListItem (szSymbol$, n%, szItem$) STATIC
  245. IF FReplaceListItem(szSymbol$, n%, szItem$) = 0 THEN
  246.   ERROR STFERR
  247. END IF
  248. END SUB
  249.  
  250. SUB SetSymbolValue (szSymbol$, szValue$) STATIC
  251. IF FSetSymbolValue (szSymbol$, szValue$) = 0 THEN
  252.   ERROR STFERR
  253. END IF
  254. END SUB
  255.  
  256. SUB RemoveSymbol (szSym$) STATIC
  257. IF FRemoveSymbol (szSym$) = 0 THEN
  258.   ERROR STFERR
  259. END IF
  260. END SUB
  261.  
  262. FUNCTION ShowWaitCursor STATIC AS INTEGER
  263. ShowWaitCursor = HShowWaitCursor
  264. END FUNCTION
  265.  
  266. SUB RestoreCursor (hPrev%) STATIC
  267. i% = FRestoreCursor (hPrev%)
  268. IF i% = 0 THEN
  269.   ERROR STFERR
  270. END IF
  271. END SUB
  272.  
  273. SUB MakeListFromSectionSize (szSym$, szSect$) STATIC
  274. IF FMakeListInfSectionField (szSym$, szSect$, 15) = 0 THEN
  275.   ERROR STFERR
  276. END IF
  277. END SUB
  278.  
  279. SUB InitInstall STATIC
  280. IF hSetup > 0 THEN
  281. ELSEIF FInitializeInstall (HinstFrame (), HwndFrame ()) = 0 THEN
  282. END
  283. END IF
  284. END SUB
  285.  
  286. SUB CreateDir (szDir$, cmo%) STATIC
  287. IF FCreateDir (szDir$, cmo%) = 0 THEN
  288.   ERROR STFERR
  289. END IF
  290. END SUB
  291.  
  292. SUB RemoveIniSection (szFile$, szSect$, cmo%) STATIC
  293. IF FRemoveIniSection (szFile$, szSect$, cmo%) = 0 THEN
  294.   ERROR STFERR
  295.   END IF
  296. END SUB
  297.  
  298. SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
  299. IF FCreateIniKeyValue  (szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
  300.   ERROR STFERR
  301. END IF
  302. END SUB
  303.  
  304. SUB CreateProgmanGroup (szGroup$, szPath$, cmo%) STATIC
  305. IF FCreateProgManGroup (szGroup$, szPath$, cmo%) = 0 THEN
  306.   ERROR STFERR
  307. END IF
  308. END SUB
  309.  
  310. SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%) STATIC
  311. IF FShowProgManGroup (szGroup$, STR$(Cmd%), cmo%) = 0 THEN
  312.   ERROR STFERR
  313.   END IF
  314. END SUB
  315.  
  316. SUB ClearCopyList STATIC
  317. ResetCopyList
  318. END SUB
  319.  
  320. FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) STATIC AS LONG
  321. lNeed& = LcbGetCopyListCost (szExtraList$, szCostList$, szNeedList$)
  322. IF lNeed& < 0 THEN
  323.   ERROR STFERR
  324. END IF
  325. GetCopyListCost = lNeed&
  326. END FUNCTION
  327.  
  328. SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%) STATIC
  329. szItemNew$ = szItem$
  330. IF szOther$ <> "" THEN
  331.   szItemNew$ = szItem$ + "," + szOther$
  332. END IF
  333. IF FCreateProgManItem (szGroup$, szItemNew$, szCmd$, cmo%) = 0 THEN
  334.   ERROR STFERR
  335. END IF
  336. szItemNew$ = ""
  337. END SUB
  338.  
  339. SUB CopyFilesInCopyList STATIC
  340. grc% = GrcCopyFilesInCopyList (HinstFrame())
  341. IF grc% = grcUserQuit THEN
  342.   ERROR STFQUIT
  343. ELSEIF grc% > 0 THEN
  344.   ERROR STFERR
  345. END IF
  346. END SUB
  347.  
  348. SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%) STATIC
  349. IF FCopyOneFile (szFullPathSrc$, szFullPathDst$, (cmo OR cmoCopy), fAppend%) = 0 THEN
  350.   ERROR STFERR
  351. END IF
  352. END SUB
  353.  
  354. SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$) STATIC
  355. IF FAddSectionFilesToCopyList (szSect$, szSrc$, szDest$) = 0 THEN
  356.   ERROR STFERR
  357. END IF
  358. END SUB
  359.  
  360. '' 101 SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
  361. '' 101 IF FAddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
  362. '' 101   ERROR STFERR
  363. '' 101 END IF
  364. '' 101 END SUB
  365.  
  366. SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
  367. IF FAddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
  368.   ERROR STFERR
  369. END IF
  370. END SUB
  371.  
  372. FUNCTION IsDirWritable (szDir$) STATIC AS INTEGER
  373. IsDirWritable = FIsDirWritable (szDir$)
  374. END FUNCTION
  375.  
  376. FUNCTION GetWindowsMajorVersion STATIC AS INTEGER
  377. GetWindowsMajorVersion = GetVersion () MOD 256
  378. END FUNCTION
  379.  
  380. FUNCTION GetWindowsMinorVersion STATIC AS INTEGER
  381. GetWindowsMinorVersion = GetVersion () / 256
  382. END FUNCTION
  383.  
  384. FUNCTION GetWindowsDir STATIC AS STRING
  385. szBuf$ = string$ (256, 32)
  386. cbBuf% = GetWindowsDirectory (szBuf$, 256)
  387. IF cbBuf% = 0 THEN
  388.   GetWindowsDir = ""
  389.   ERROR STFERR
  390. ELSE
  391. IF cbBuf% > 255 THEN
  392.   res% = DoMsgBox ("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  393.   ERROR STFERR
  394. END IF
  395. szBuf$ = RTRIM$ (szBuf$)
  396. IF MID$(szBuf$, 1, 1) = "\" THEN
  397.   'szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  398.   szBuf$ = MID$(GetWindowsSysDir, 1, 2) + szBuf$
  399. ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  400.   szBuf$ = MID$(GetWindowsSysDir, 1, 3) + szBuf$
  401. END IF
  402. IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  403.   szBuf$ = szBuf$ + "\"
  404. END IF
  405. GetWindowsDir = szBuf$
  406. END IF
  407. szBuf$ = ""
  408. END FUNCTION
  409.  
  410. FUNCTION GetWindowsSysDir STATIC AS STRING
  411. szBuf$ = string$ (256, 32)
  412. cbBuf% = GetSystemDirectory (szBuf$, 256)
  413. IF cbBuf% = 0 THEN
  414.   ERROR STFERR
  415. ELSE
  416. IF cbBuf% > 255 THEN
  417.   res% = DoMsgBox ("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  418.   ERROR STFERR
  419. END IF
  420. szBuf$ = RTRIM$(szBuf$)
  421. IF MID$(szBuf$, 1, 1) = "\" THEN
  422.   szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  423. ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  424.   szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  425. END IF
  426. IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  427.   szBuf$ = szBuf$ + "\"
  428. END IF
  429. GetWindowsSysDir = szBuf$
  430. END IF
  431. szBuf$ = ""
  432. END FUNCTION
  433.  
  434. SUB RemoveFile (szFullPathSrc$, cmo%) STATIC
  435. IF YnrcRemoveFile (szFullPathSrc$, cmo%) = ynrcNo THEN
  436.   ERROR STFERR
  437. END IF
  438. END SUB
  439.  
  440. TRAP CleanupTrap From "MSSHLSTF.DLL"
  441. End Trap
  442.  
  443. hSetup = InitSetup (COMMAND$)
  444. ON ERROR GOTO QUIT
  445.  
  446. SUB RenameFile (szFullPath$, szBackup$) STATIC
  447. IF YnrcBackupFile (szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
  448.   ERROR STFERR
  449. END IF
  450. END SUB
  451.