diff --git a/GNUmakefile b/GNUmakefile index bb0711b..41dcce5 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -1,4 +1,4 @@ -DEPEND = github.com/norayr/strutils github.com/norayr/base64 github.com/norayr/dbg github.com/norayr/Internet github.com/norayr/http github.com/norayr/mbedtls github.com/norayr/lists github.com/norayr/opts github.com/norayr/skprLogger codeberg.org/sts-q/vishaps-ssqJson +DEPEND = github.com/norayr/unixFileSystem github.com/norayr/strutils github.com/norayr/base64 github.com/norayr/dbg github.com/norayr/Internet github.com/norayr/http github.com/norayr/mbedtls github.com/norayr/lists github.com/norayr/opts github.com/norayr/skprLogger codeberg.org/sts-q/vishaps-ssqJson VOC = voc mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) @@ -52,7 +52,6 @@ buildThis: @echo "building vipack" cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkTools.Mod cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkSettings.Mod - cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkLinuxFiles.Mod cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkTime.Mod cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/vpkLogger.Mod cd $(BUILD) && $(VOC) -s $(mkfile_dir_path)/src/unix/vpkEnv.Mod diff --git a/src/unix/vpkEnv.Mod b/src/unix/vpkEnv.Mod index 9bb75c2..a8864b7 100644 --- a/src/unix/vpkEnv.Mod +++ b/src/unix/vpkEnv.Mod @@ -1,5 +1,5 @@ MODULE vpkEnv; -IMPORT Files, Platform, Strings, Out, vpkSettings, vpkFiles, strTypes; +IMPORT Files, Platform, Strings, Out, vpkSettings, UnixFS, strTypes; VAR conf-, confDir- : ARRAY 256 OF CHAR; @@ -20,8 +20,8 @@ END getGraphName; PROCEDURE createIfNotThere*(VAR fileName: ARRAY OF CHAR); BEGIN - IF ~vpkFiles.ExistsByName(fileName) THEN - IF ~vpkFiles.mkDir(fileName) THEN + IF ~UnixFS.ExistsByName(fileName) THEN + IF ~UnixFS.mkDir(fileName) THEN Out.String("failed to create directory "); Out.String(fileName); Out.Ln; HALT(1); END; END; @@ -172,10 +172,10 @@ END getConfFile; PROCEDURE checkConfig*(): BOOLEAN; VAR - file : vpkFiles.fileInfo; + file : UnixFS.fileInfo; BEGIN file.name := conf; - RETURN vpkFiles.Exists(file); + RETURN UnixFS.Exists(file); END checkConfig; PROCEDURE setTreeDir*(VAR path: ARRAY OF CHAR); @@ -200,21 +200,21 @@ END getTreeDir; PROCEDURE checkEnv*; VAR - file : vpkFiles.fileInfo; + file : UnixFS.fileInfo; tmp : ARRAY 256 OF CHAR; BEGIN file.name := conf; - IF ~vpkFiles.Exists(file) THEN + IF ~UnixFS.Exists(file) THEN (* Checking if ~/.vipack directory already exists *) file.name := confDir; - IF ~vpkFiles.Exists(file) THEN (* exists!!! *) + IF ~UnixFS.Exists(file) THEN (* exists!!! *) Out.String("Creating directory "); Out.String(confDir);Out.Ln; - IF ~vpkFiles.mkDir(confDir) THEN + IF ~UnixFS.mkDir(confDir) THEN Out.String("failed to create "); Out.String(confDir); Out.String(" directory"); Out.Ln; HALT(1); END; ELSE - IF ~(vpkFiles.dir IN file.attr) THEN + IF ~(UnixFS.dir IN file.attr) THEN Out.String(confDir); Out.String(" exists, but is not a directory"); Out.Ln; HALT(1); END; diff --git a/src/unix/vpkFreeBSDFiles.Mod b/src/unix/vpkFreeBSDFiles.Mod deleted file mode 100644 index 870b2a9..0000000 --- a/src/unix/vpkFreeBSDFiles.Mod +++ /dev/null @@ -1,198 +0,0 @@ -MODULE vpkFiles; -IMPORT SYSTEM; - -CONST - dir* = 0; char* = 1; block* = 2; file* = 3; fifo* = 4; - symlink* = 5; socket* = 6; - -TYPE - fileInfo* = RECORD; - name* : ARRAY 256 OF CHAR; - attr- : SET - END; - -(* https://github.com/vishaps/voc/blob/4bebc891a4d0d1184d74134908bdc1a91e3ad5be/src/lib/system/freebsd/clang/x86_64/Unix.Mod -from output of cpp /usr/include/sys/stat.h -struct stat { - __dev_t st_dev; - ino_t st_ino; - mode_t st_mode; - nlink_t st_nlink; - uid_t st_uid; - gid_t st_gid; - __dev_t st_rdev; - struct timespec st_atim; - struct timespec st_mtim; - struct timespec st_ctim; - off_t st_size; - blkcnt_t st_blocks; - blksize_t st_blksize; - fflags_t st_flags; - __uint32_t st_gen; - __int32_t st_lspare; - struct timespec st_birthtim; -# 148 "/usr/include/sys/stat.h" - unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec)); - unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec)); -}; -sizes on freebsd 64 bit -short int 2 -int 4 -long 8 -long int 8 -size_t 8 -dev_t 4 -ino_t 4 -mode_t 2 -nlink_t 2 -uid_t 4 -gid_t 4 -off_t 8 -blksize_t 4 -blkcnt_t 8 -time_t 8 -fflags_t 4 -__uint32_t 4 -__int32_t 4 -*) - -(* this was old info. now it's like this: - -size of stat is 224 -size of s.st_dev is 8 -size of s.st_ino is 8 -size of s.st_nlink is 8 -size of s.st_mode is 2 -size of s.st_padding0 is 2 -size of s.st_uid is 4 -size of s.st_gid is 4 -size of s.st_padding1 is 4 -size of s.rdev is 8 -size of s.st_atim is 16 -size of s.st_mtim is 16 -size of s.st_ctim is 16 -size of s.st_birthtim is 16 -size of s.st_size is 8 -size of s.st_blocks is 8 -size of s.st_blksize is 4 -size of s.st_flags is 4 -size of s.st_gen is 8 -size of s.st_spare is 80 -*) - - Status* = RECORD (* struct stat *) - dev* : HUGEINT; (* dev_t 8 *) - ino* : HUGEINT; (* ino_t 8 *) - nlink* : HUGEINT; (* nlink_t 8 *) - mode*: INTEGER; (* mode_t 4 *) - padding0: INTEGER; - uid*, gid*: LONGINT; (* uid_t, gid_t 4 *) - padding1: LONGINT; - rdev*: HUGEINT; (* dev_t 8 *) - atime* : HUGEINT; atimences* : HUGEINT; - mtime* : HUGEINT; mtimences* : HUGEINT; (* struct timespec 16 *) - ctime* : HUGEINT; ctimences* : HUGEINT; (* struct timespec 16 *) - birthtime* : HUGEINT; birthtimences* : HUGEINT; (* struct timespec 16 *) - size*: HUGEINT; (* off_t 8 *) - blocks* : HUGEINT; - blksize* : LONGINT; - flags* : LONGINT; - gen* : HUGEINT; - lspare* : ARRAY 10 OF HUGEINT; - END ; - -PROCEDURE -Aincludesysstat '#include '; -PROCEDURE -Aincludesystypes '#include '; - -PROCEDURE -mkdir(VAR path: ARRAY OF CHAR): INTEGER - "(int)mkdir(path, 0755)"; - -PROCEDURE mkDir*(VAR path: ARRAY OF CHAR): BOOLEAN; -VAR res: INTEGER; -BEGIN - res := mkdir(path); - IF res = 0 THEN RETURN TRUE ELSE RETURN FALSE END -END mkDir; - -PROCEDURE -stat(VAR path : ARRAY OF CHAR; st: Status): INTEGER -"stat((const char*)path, (struct stat*)&st)"; - -PROCEDURE -isDir(mode: LONGINT): INTEGER -"S_ISDIR(mode)"; - -PROCEDURE -isChar(mode: LONGINT): INTEGER -"S_ISCHR(mode)"; - -PROCEDURE -isBlock(mode: LONGINT): INTEGER -"S_ISBLK(mode)"; - -PROCEDURE -isReg(mode: LONGINT): INTEGER -"S_ISREG(mode)"; - -PROCEDURE -isFIFO(mode: LONGINT): INTEGER -"S_ISFIFO(mode)"; - -PROCEDURE -isLnk(mode: LONGINT): INTEGER -"S_ISLNK(mode)"; - -PROCEDURE -isSock(mode: LONGINT): INTEGER -"S_ISSOCK(mode)"; - -PROCEDURE Exists*(VAR fl : fileInfo): BOOLEAN; -VAR - i : INTEGER; - st: Status; -BEGIN - fl.attr := {}; - i := stat(fl.name, st); - IF i < 0 THEN RETURN FALSE END; - IF i = 0 THEN (* file exists*) - i := isDir(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {dir} END; - i := isChar(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {char} END; - i := isBlock(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {block} END; - i := isReg(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {file} END; - i := isFIFO(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {fifo} END; - i := isLnk(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {symlink} END; - i := isSock(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {socket} END; - RETURN TRUE - END; -END Exists; - -PROCEDURE ExistsByName*(VAR fileName : ARRAY OF CHAR): BOOLEAN; -VAR - i : INTEGER; - st: Status; - fl: fileInfo; -BEGIN - fl.attr := {}; - COPY(fileName, fl.name); - i := stat(fl.name, st); - IF i < 0 THEN RETURN FALSE END; - IF i = 0 THEN (* file exists*) - i := isDir(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {dir} END; - i := isChar(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {char} END; - i := isBlock(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {block} END; - i := isReg(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {file} END; - i := isFIFO(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {fifo} END; - i := isLnk(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {symlink} END; - i := isSock(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {socket} END; - RETURN TRUE - END; -END ExistsByName; - - -END vpkFiles. diff --git a/src/unix/vpkLinuxFiles.Mod b/src/unix/vpkLinuxFiles.Mod deleted file mode 100644 index 1eedbf9..0000000 --- a/src/unix/vpkLinuxFiles.Mod +++ /dev/null @@ -1,128 +0,0 @@ -MODULE vpkFiles; -IMPORT SYSTEM; - -CONST - dir* = 0; char* = 1; block* = 2; file* = 3; fifo* = 4; - symlink* = 5; socket* = 6; - -TYPE - fileInfo* = RECORD; - name* : ARRAY 256 OF CHAR; - attr- : SET - END; - - Status = RECORD (* struct stat *) - dev* : HUGEINT; (* dev_t 8 *) - ino* : HUGEINT; (* ino 8 *) - nlink* : HUGEINT; - mode* : LONGINT; - uid*, gid*: LONGINT; - pad0* : LONGINT; - rdev* : HUGEINT; - size* : HUGEINT; - blksize* : HUGEINT; - blocks* : HUGEINT; - atime* : HUGEINT; - atimences* : HUGEINT; - mtime* : HUGEINT; - mtimensec* : HUGEINT; - ctime* : HUGEINT; - ctimensec* : HUGEINT; - unused0*, unused1*, unused2*: HUGEINT; - END; - -PROCEDURE -Aincludesysstat '#include '; -PROCEDURE -Aincludesystypes '#include '; - -PROCEDURE -mkdir(VAR path: ARRAY OF CHAR): INTEGER - "(int)mkdir(path, 0755)"; - -PROCEDURE mkDir*(VAR path: ARRAY OF CHAR): BOOLEAN; -VAR res: INTEGER; -BEGIN - res := mkdir(path); - IF res = 0 THEN RETURN TRUE ELSE RETURN FALSE END -END mkDir; - -PROCEDURE -stat(VAR path : ARRAY OF CHAR; st: Status): INTEGER -"stat((const char*)path, (struct stat*)&st)"; - -PROCEDURE -isDir(mode: LONGINT): INTEGER -"S_ISDIR(mode)"; - -PROCEDURE -isChar(mode: LONGINT): INTEGER -"S_ISCHR(mode)"; - -PROCEDURE -isBlock(mode: LONGINT): INTEGER -"S_ISBLK(mode)"; - -PROCEDURE -isReg(mode: LONGINT): INTEGER -"S_ISREG(mode)"; - -PROCEDURE -isFIFO(mode: LONGINT): INTEGER -"S_ISFIFO(mode)"; - -PROCEDURE -isLnk(mode: LONGINT): INTEGER -"S_ISLNK(mode)"; - -PROCEDURE -isSock(mode: LONGINT): INTEGER -"S_ISSOCK(mode)"; - -PROCEDURE Exists*(VAR fl : fileInfo): BOOLEAN; -VAR - i : INTEGER; - st: Status; -BEGIN - fl.attr := {}; - i := stat(fl.name, st); - IF i < 0 THEN RETURN FALSE END; - IF i = 0 THEN (* file exists*) - i := isDir(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {dir} END; - i := isChar(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {char} END; - i := isBlock(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {block} END; - i := isReg(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {file} END; - i := isFIFO(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {fifo} END; - i := isLnk(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {symlink} END; - i := isSock(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {socket} END; - RETURN TRUE - END; -END Exists; - -PROCEDURE ExistsByName*(VAR fileName : ARRAY OF CHAR): BOOLEAN; -VAR - i : INTEGER; - st: Status; - fl: fileInfo; -BEGIN - fl.attr := {}; - COPY(fileName, fl.name); - i := stat(fl.name, st); - IF i < 0 THEN RETURN FALSE END; - IF i = 0 THEN (* file exists*) - i := isDir(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {dir} END; - i := isChar(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {char} END; - i := isBlock(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {block} END; - i := isReg(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {file} END; - i := isFIFO(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {fifo} END; - i := isLnk(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {symlink} END; - i := isSock(st.mode); - IF i # 0 THEN fl.attr := fl.attr + {socket} END; - RETURN TRUE - END; -END ExistsByName; - - -END vpkFiles. diff --git a/src/vpkStorage.Mod b/src/vpkStorage.Mod index 697788e..eb63747 100644 --- a/src/vpkStorage.Mod +++ b/src/vpkStorage.Mod @@ -1,6 +1,6 @@ MODULE vpkStorage; IMPORT Files, Out, Strings, -strUtils, vpkLogger, vpkEnv, vpkFiles; +strUtils, vpkLogger, vpkEnv, UnixFS; PROCEDURE WriteString(VAR r : Files.Rider; str : ARRAY OF CHAR); BEGIN @@ -61,14 +61,14 @@ END stringToFile; PROCEDURE json2pstring*(VAR json: ARRAY OF CHAR; VAR pstr: strUtils.pstring); VAR - fi: vpkFiles.fileInfo; + fi: UnixFS.fileInfo; BEGIN pstr := NIL; vpkEnv.getTreeDir(fi.name); Strings.Append("/", fi.name); Strings.Append(json, fi.name); Strings.Append(".json", fi.name); - IF vpkFiles.Exists(fi) THEN + IF UnixFS.Exists(fi) THEN fileToString(fi.name, pstr); END END json2pstring;