'-------------------------------------------------------------------------------------
' Accessory functions/subs for ComicDir2Cbr
'-------------------------------------------------------------------------------------
' FUNCTION EXIST(BYVAL fileOrFolder AS STRING) AS LONG
' SUB FILECOPYX (src AS STRING, dst AS STRING) ' if dst exist, replace it
' MACRO FOLDERCOPY(f, path)
' FUNCTION FNAME(fullpath AS STRING) AS STRING ' File Name
' FUNCTION DQP(fullpath AS STRING) AS STRING ' Double Quote Protect
' FUNCTION WHATSINQUOTE(str AS STRING) AS STRING
' FUNCTION FILESIZE(file AS STRING) AS LONG
' SUB REPLACEinFILE(file AS STRING, src AS STRING, tgt AS STRING)
' SUB DUMP2FILE(buf AS STRING, file AS STRING)
' FUNCTION SIZEKB(fs AS LONG) AS STRING ' File size, in B, KB or MB
' FUNCTION LocalAppData AS STRING
' FUNCTION RoamingAppData AS STRING
' FUNCTION HasPngs(folder AS STRING) AS LONG
' FUNCTION HasJpgs(folder AS STRING) AS LONG
'-------------------------------------------------------------------------------------
#INCLUDE ONCE "shfolder.inc"
'-------------------------------------------------------------------------------------
FUNCTION EXIST(BYVAL fileOrFolder AS STRING) AS LONG
    LOCAL Dummy&
    Dummy& = GETATTR(fileOrFolder)
    FUNCTION = (ERRCLEAR = 0)
END FUNCTION
'-------------------------------------------------------------------------------------
SUB FILECOPYX (src AS STRING, dst AS STRING)
    IF EXIST(dst) THEN KILL dst
    FILECOPY src, dst
END SUB
'-------------------------------------------------------------------------------------
MACRO FOLDERCOPY(f, path)
    MKDIR path + f
    t = DIR$(f + "*.*")
    WHILE LEN(t) > 0
        FILECOPYX f + t, path + f + t
        t = DIR$(NEXT)
    WEND
    DIR$ CLOSE
END MACRO
'-------------------------------------------------------------------------------------
FUNCTION FNAME(fullpath AS STRING) AS STRING ' File Name
    IF INSTR(fullpath, "\") = 0 THEN FUNCTION = fullpath ELSE _
      FUNCTION = PARSE$(fullpath, "\", PARSECOUNT(fullpath, "\"))
END FUNCTION
'-------------------------------------------------------------------------------------
FUNCTION DQP(fullpath AS STRING) AS STRING ' Double Quote Protect
    IF INSTR(fullpath, $SPC) > 0 THEN FUNCTION = $DQ + fullpath + $DQ ELSE FUNCTION = fullpath
END FUNCTION
'-------------------------------------------------------------------------------------
FUNCTION WHATSINQUOTE(str AS STRING) AS STRING
    FUNCTION = PARSE$(str, $DQ, 2)
END FUNCTION
'-------------------------------------------------------------------------------------
FUNCTION FILESIZE(file AS STRING) AS LONG
    LOCAL ff, fs AS LONG
    ff = FREEFILE
    OPEN file FOR BINARY ACCESS READ LOCK SHARED AS #ff
    fs = LOF(#ff)
    CLOSE #ff
    FUNCTION = fs
END FUNCTION
'-------------------------------------------------------------------------------------
SUB REPLACEinFILE(file AS STRING, src AS STRING, tgt AS STRING)
    LOCAL ff AS LONG
    LOCAL buf AS STRING
    ff = FREEFILE
    OPEN file FOR BINARY ACCESS READ LOCK SHARED AS #ff : GET$ #ff, LOF(#ff), buf : CLOSE #ff
    REPLACE src WITH tgt IN buf
    KILL file
    ff = FREEFILE
    OPEN file FOR BINARY ACCESS WRITE AS #ff : PUT$ #ff, buf : CLOSE #ff
END SUB
'-------------------------------------------------------------------------------------
SUB DUMP2FILE(buf AS STRING, file AS STRING)
    LOCAL ff AS LONG
    KILL file
    ff = FREEFILE
    OPEN file FOR BINARY ACCESS WRITE AS #ff : PUT$ #ff, buf : CLOSE #ff
END SUB
'-------------------------------------------------------------------------------------
FUNCTION SIZEKB(fs AS LONG) AS STRING ' File size, in B, KB or MB
    LOCAL n AS LONG
    n = fs ' filesize
    IF n < 1024 THEN
        FUNCTION = FORMAT$(n) + " B"
    ELSE
        n \= 1024
        IF n < 1024 THEN
            FUNCTION = FORMAT$(n) + " KB"
        ELSE
            n \= 1024
            FUNCTION = FORMAT$(n) + " MB"
        END IF
    END IF
END FUNCTION
'-------------------------------------------------------------------------------------
FUNCTION LocalAppData AS STRING
    LOCAL szBaseFolder AS ASCIIZ * %MAX_PATH
    ShGetFolderPath (BYVAL 0, %CSIDL_LOCAL_APPDATA, BYVAL 0, BYVAL 0, szBaseFolder)
    FUNCTION = TRIM$(szBaseFolder) + "\"
END FUNCTION
'-------------------------------------------------------------------------------------
FUNCTION RoamingAppData AS STRING
    LOCAL e AS STRING
    e = LCASE$(LocalAppData())
    REPLACE "\local\" WITH "\roaming\" IN e
    FUNCTION = e
END FUNCTION
'-------------------------------------------------------------------------------------
FUNCTION HasExt(folder AS STRING, extension AS STRING) AS LONG
    LOCAL f, xt, e AS STRING
    LOCAL n AS LONG
    f = RTRIM$(folder, "\") + "\"
    xt = "." + LTRIM$(extension, ".")
    e = DIR$(f + "*" + xt)
    WHILE ISTRUE LEN(e) AND n <= 1
        INCR n
        e = DIR$(NEXT)
    WEND
    DIR$ CLOSE
    FUNCTION = (n > 1)
END FUNCTION
'-------------------------------------------------------------------------------------
FUNCTION HasPngs(folder AS STRING) AS LONG
    FUNCTION = HasExt(folder, ".png")
END FUNCTION
'-------------------------------------------------------------------------------------
FUNCTION HasJpgs(folder AS STRING) AS LONG
    FUNCTION = HasExt(folder, ".jpg")
END FUNCTION
'-------------------------------------------------------------------------------------
