fix: some stupid mistakes in FS

This commit is contained in:
TopchetoEU 2023-12-24 14:27:27 +02:00
parent 1b2068a274
commit 7a301eba8f
Signed by: topchetoeu
GPG Key ID: 6531B8583E5F6ED4
2 changed files with 43 additions and 43 deletions

View File

@ -1,41 +1,41 @@
package me.topchetoeu.jscript.filesystem; package me.topchetoeu.jscript.filesystem;
import me.topchetoeu.jscript.Buffer; import me.topchetoeu.jscript.Buffer;
public interface File { public interface File {
int read(byte[] buff); int read(byte[] buff);
void write(byte[] buff); void write(byte[] buff);
long getPtr(); long getPtr();
void setPtr(long offset, int pos); void setPtr(long offset, int pos);
void close(); void close();
Mode mode(); Mode mode();
default String readToString() { default String readToString() {
setPtr(0, 2); setPtr(0, 2);
long len = getPtr(); long len = getPtr();
if (len < 0) return null; if (len < 0) return null;
setPtr(0, 0); setPtr(0, 0);
byte[] res = new byte[(int)len]; byte[] res = new byte[(int)len];
read(res); len = read(res);
return new String(res); return new String(res);
} }
default String readLine() { default String readLine() {
var res = new Buffer(); var res = new Buffer();
var buff = new byte[1]; var buff = new byte[1];
while (true) { while (true) {
if (read(buff) == 0) { if (read(buff) == 0) {
if (res.length() == 0) return null; if (res.length() == 0) return null;
else break; else break;
} }
if (buff[0] == '\n') break; if (buff[0] == '\n') break;
res.write(res.length(), buff); res.write(res.length(), buff);
} }
return new String(res.data()); return new String(res.data());
} }
} }

View File

@ -35,9 +35,9 @@ public class PhysicalFile implements File {
if (file == null || !perms.readable) throw new FilesystemException(filename, FSCode.NO_PERMISSIONS_R); if (file == null || !perms.readable) throw new FilesystemException(filename, FSCode.NO_PERMISSIONS_R);
try { try {
if (pos == 1) pos += file.getFilePointer(); if (pos == 1) offset += file.getFilePointer();
else if (pos == 2) pos += file.length(); else if (pos == 2) offset += file.length();
file.seek(pos); file.seek(offset);
} }
catch (IOException e) { throw new FilesystemException(filename, FSCode.NO_PERMISSIONS_R); } catch (IOException e) { throw new FilesystemException(filename, FSCode.NO_PERMISSIONS_R); }
} }