'# @(#)   ixxhared.inc          20.3	SAP/iXOS     95/01/10

GLOBAL SharedFileNeedsCopying AS INTEGER



DECLARE FUNCTION WCompareVersion (szVer1$, szVer2$) AS INTEGER



DECLARE FUNCTION FindSharedFileFromPath (szField$, szVersion$) AS STRING



DECLARE FUNCTION SearchForLocationForSharedFile (szRegDbKey$, szWinIniSect$, szWinIniKey$, iWinIniField%, szDefault$, szVersion$) AS STRING







'' returns: 1 if szVer1$ > szVer2$;  0 if equal;  -1 if szVer1$ < szVer2$

''

FUNCTION WCompareVersion (szVer1$, szVer2$) STATIC AS INTEGER

    IF szVer1$ = "" THEN

        IF szVer2$ = "" THEN

            WCompareVersion = 0

        ELSE

            WCompareVersion = -1

        END IF

    ELSEIF szVer2$ = "" THEN

        WCompareVersion = 1

    ELSE

        WCompareVersion = 0

        FOR i% = 1 TO 4 STEP 1

            piece1& = GetVersionNthField(szVer1$, i%)

            piece2& = GetVersionNthField(szVer2$, i%)

            IF piece1& > piece2& THEN

                WCompareVersion = 1

                GOTO _WCV_END

            ELSEIF piece1& < piece2& THEN

                WCompareVersion = -1

                GOTO _WCV_END

            END IF

        NEXT i%

    END IF

_WCV_END:

END FUNCTION





'' private to this file - needed in next api

''

FUNCTION FindSharedFileFromPath(szField$, szVersion$) STATIC AS STRING

    FindSharedFileFromPath = ""

    SharedFileNeedsCopying = 0

    IF szField$ <> "" THEN

        IF DoesFileExist(szField$, OF_EXIST) = 0 THEN

            szFile$ = STRING$(32, 32)



            IF FParseFATPathIntoPieces(szField$, NULL, 0, NULL, 0, szFile$, 31) <> 0 THEN

                szField$ = FindFileUsingFileOpen(szFile$)

            ELSE

                szField$ = ""

            END IF

            szFile$ = ""

        END IF



        IF szField$ <> "" THEN

            IF WCompareVersion(GetVersionOfFile(szField$), szVersion$) >= 0 THEN

                FindSharedFileFromPath = szField$

            ELSEIF IsFileWritable(szField$) <> 0 THEN

                SharedFileNeedsCopying = 1

                FindSharedFileFromPath = szField$

            END IF



            szField$ = ""

        END IF

    END IF

END FUNCTION





FUNCTION SearchForLocationForSharedFile (szRegDbKey$, szWinIniSect$, szWinIniKey$, iWinIniField%, szDefault$, szVersion$) STATIC AS STRING



    SearchForLocationForSharedFile = szDefault$



'$IFDEF    REG_DB_ENABLED

    IF szRegDbKey$ <> "" THEN

        szField$ = GetRegKeyValue(szRegDbKey$)

        szFile$ = FindSharedFileFromPath(szField$, szVersion$)

        IF szFile$ <> "" THEN

            SearchForLocationForSharedFile = szFile$

            szFile$ = ""

            GOTO _SFLSFS_END

        END IF

    END IF

'$ENDIF '' REG_DB_ENABLED



    IF szWinIniSect$ <> "" AND szWinIniKey$ <> "" THEN

        szWinIniLine$ = GetIniKeyString("WIN.INI", szWinIniSect$, szWinIniKey$)

        IF szWinIniLine$ <> "" THEN

            szField$ = GetNthFieldFromIniString(szWinIniLine$, iWinIniField%)

            szWinIniLine$ = ""

            szFile$ = FindSharedFileFromPath(szField$, szVersion$)

            IF szFile$ <> "" THEN

                SearchForLocationForSharedFile = szFile$

                szFile$ = ""

                GOTO _SFLSFS_END

            END IF

        END IF

    END IF



    '' return value is still szDefault$ - assume it is writable

    SharedFileNeedsCopying = 1

    IF DoesFileExist(szDefault$, OF_EXIST) <> 0 THEN

        IF WCompareVersion(GetVersionOfFile(szDefault$), szVersion$) >= 0 THEN

            SharedFileNeedsCopying = 0

        END IF

    END IF



_SFLSFS_END:



END FUNCTION



