mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-06 04:52:26 +00:00
76 lines
1.7 KiB
Modula-2
76 lines
1.7 KiB
Modula-2
MODULE vpkStorage;
|
|
IMPORT Files, Out, Strings,
|
|
strutils, vpkLogger, vpkEnv, vpkFiles;
|
|
|
|
PROCEDURE WriteString(VAR r : Files.Rider; str : ARRAY OF CHAR);
|
|
BEGIN
|
|
Files.WriteBytes(r, str, Strings.Length(str));
|
|
END WriteString;
|
|
|
|
PROCEDURE fileToString*(VAR fileName: ARRAY OF CHAR; VAR returnString: strutils.pstring);
|
|
VAR
|
|
f: Files.File;
|
|
r: Files.Rider;
|
|
i, j: LONGINT;
|
|
BEGIN
|
|
returnString := NIL;
|
|
f := Files.Old(fileName);
|
|
IF f # NIL THEN
|
|
Files.Set(r, f, 0);
|
|
i := Files.Length(f);
|
|
NEW(returnString, i);
|
|
j := 0;
|
|
REPEAT
|
|
Files.Read(r, returnString^[j]);
|
|
INC(j);
|
|
UNTIL r.eof OR (j >= i);
|
|
ELSE
|
|
Out.String("file ");
|
|
Out.String(fileName);
|
|
Out.String(" not found");
|
|
Out.Ln;
|
|
END;
|
|
|
|
END fileToString;
|
|
|
|
PROCEDURE stringToFile*(VAR fileName, content: ARRAY OF CHAR): BOOLEAN;
|
|
VAR
|
|
f: Files.File;
|
|
r: Files.Rider;
|
|
i: LONGINT;
|
|
BEGIN
|
|
f := Files.New(fileName);
|
|
|
|
IF f = NIL THEN
|
|
vpkLogger.Log(fileName);
|
|
vpkLogger.Log(" not found");
|
|
vpkLogger.Ln;
|
|
RETURN FALSE
|
|
END;
|
|
|
|
Files.Set(r, f, 0);
|
|
vpkLogger.Log("Writing to file");
|
|
vpkLogger.Log(fileName);
|
|
vpkLogger.Log("-------------------");
|
|
WriteString(r, content);
|
|
|
|
Files.Register(f);
|
|
Files.Close(f);
|
|
RETURN TRUE;
|
|
END stringToFile;
|
|
|
|
PROCEDURE json2pstring*(VAR json: ARRAY OF CHAR; VAR pstr: strutils.pstring);
|
|
VAR
|
|
fi: vpkFiles.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
|
|
fileToString(fi.name, pstr);
|
|
END
|
|
END json2pstring;
|
|
|
|
END vpkStorage.
|