|
|
1.1 root 1: GLOBAL SharedFileNeedsCopying AS INTEGER
2:
3: DECLARE FUNCTION WCompareVersion (szVer1$, szVer2$) AS INTEGER
4:
5: DECLARE FUNCTION FindSharedFileFromPath (szField$, szVersion$) AS STRING
6:
7: DECLARE FUNCTION SearchForLocationForSharedFile (szRegDbKey$, szWinIniSect$, szWinIniKey$, iWinIniField%, szDefault$, szVersion$) AS STRING
8:
9:
10:
11: '' returns: 1 if szVer1$ > szVer2$; 0 if equal; -1 if szVer1$ < szVer2$
12: ''
13: FUNCTION WCompareVersion (szVer1$, szVer2$) STATIC AS INTEGER
14: IF szVer1$ = "" THEN
15: IF szVer2$ = "" THEN
16: WCompareVersion = 0
17: ELSE
18: WCompareVersion = -1
19: END IF
20: ELSEIF szVer2$ = "" THEN
21: WCompareVersion = 1
22: ELSE
23: WCompareVersion = 0
24: FOR i% = 1 TO 4 STEP 1
25: piece1& = GetVersionNthField(szVer1$, i%)
26: piece2& = GetVersionNthField(szVer2$, i%)
27: IF piece1& > piece2& THEN
28: WCompareVersion = 1
29: GOTO _WCV_END
30: ELSEIF piece1& < piece2& THEN
31: WCompareVersion = -1
32: GOTO _WCV_END
33: END IF
34: NEXT i%
35: END IF
36: _WCV_END:
37: END FUNCTION
38:
39:
40: '' private to this file - needed in next api
41: ''
42: FUNCTION FindSharedFileFromPath(szField$, szVersion$) STATIC AS STRING
43: FindSharedFileFromPath = ""
44: SharedFileNeedsCopying = 0
45: IF szField$ <> "" THEN
46: IF DoesFileExist(szField$, OF_EXIST) = 0 THEN
47: szFile$ = STRING$(32, 32)
48:
49: IF FParseFATPathIntoPieces(szField$, NULL, 0, NULL, 0, szFile$, 31) <> 0 THEN
50: szField$ = FindFileUsingFileOpen(szFile$)
51: ELSE
52: szField$ = ""
53: END IF
54: szFile$ = ""
55: END IF
56:
57: IF szField$ <> "" THEN
58: IF WCompareVersion(GetVersionOfFile(szField$), szVersion$) >= 0 THEN
59: FindSharedFileFromPath = szField$
60: ELSEIF IsFileWritable(szField$) <> 0 THEN
61: SharedFileNeedsCopying = 1
62: FindSharedFileFromPath = szField$
63: END IF
64:
65: szField$ = ""
66: END IF
67: END IF
68: END FUNCTION
69:
70:
71: FUNCTION SearchForLocationForSharedFile (szRegDbKey$, szWinIniSect$, szWinIniKey$, iWinIniField%, szDefault$, szVersion$) STATIC AS STRING
72:
73: SearchForLocationForSharedFile = szDefault$
74:
75: '$IFDEF REG_DB_ENABLED
76: IF szRegDbKey$ <> "" THEN
77: szField$ = GetRegKeyValue(szRegDbKey$)
78: szFile$ = FindSharedFileFromPath(szField$, szVersion$)
79: IF szFile$ <> "" THEN
80: SearchForLocationForSharedFile = szFile$
81: szFile$ = ""
82: GOTO _SFLSFS_END
83: END IF
84: END IF
85: '$ENDIF '' REG_DB_ENABLED
86:
87: IF szWinIniSect$ <> "" AND szWinIniKey$ <> "" THEN
88: szWinIniLine$ = GetIniKeyString("WIN.INI", szWinIniSect$, szWinIniKey$)
89: IF szWinIniLine$ <> "" THEN
90: szField$ = GetNthFieldFromIniString(szWinIniLine$, iWinIniField%)
91: szWinIniLine$ = ""
92: szFile$ = FindSharedFileFromPath(szField$, szVersion$)
93: IF szFile$ <> "" THEN
94: SearchForLocationForSharedFile = szFile$
95: szFile$ = ""
96: GOTO _SFLSFS_END
97: END IF
98: END IF
99: END IF
100:
101: '' return value is still szDefault$ - assume it is writable
102: SharedFileNeedsCopying = 1
103: IF DoesFileExist(szDefault$, OF_EXIST) <> 0 THEN
104: IF WCompareVersion(GetVersionOfFile(szDefault$), szVersion$) >= 0 THEN
105: SharedFileNeedsCopying = 0
106: END IF
107: END IF
108:
109: _SFLSFS_END:
110:
111: END FUNCTION
112:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.