vipak/src/vpkStorage.Mod
2020-06-09 17:57:59 +04:00

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.