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