new object $file: $root;
var $root inited = 1;
var $file stat = 0;
public method .files() {
arg path;
return (> files(path) <);
};
public method .stat() {
arg @path;
if (path) {
return (> fstat(@path) <);
} else {
return stat;
}
};
public method .open() {
arg path, @mode;
var obj, stat;
stat = (| .fstat(path) |);
if (!stat || stat[1][1] == "4") {
throw(~filenf, "File not found");
}
obj = .spawn();
(> obj._fopen(path, stat, @mode) <);
return obj;
};
public method ._fopen() {
arg path, _stat, @mode;
stat = _stat;
(> fopen(path, @mode) <);
};
public method .read() {
return (> fread() <);
};
public method .close() {
(| fclose() |);
.destroy();
};
public method .slurp() {
var data;
data = `[];
while ((| data += fread() |) != ~eof);
return data;
};
public method .readlines() {
var line, lines;
lines = [];
while ((| line = fread() |) != ~eof) {
lines = [@lines, line];
}
return lines;
};