got rid of vpkFreeBSDFiles/vpkLinuxFiles in favour of

github.com/unixFileSystem
This commit is contained in:
Norayr Chilingarian 2024-10-03 00:00:49 +04:00
parent 0302a1da2b
commit bc2fc727be
5 changed files with 14 additions and 341 deletions

View file

@ -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

View file

@ -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;

View file

@ -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 <sys/stat.h>';
PROCEDURE -Aincludesystypes '#include <sys/types.h>';
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.

View file

@ -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 <sys/stat.h>';
PROCEDURE -Aincludesystypes '#include <sys/types.h>';
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.

View file

@ -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;