1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
// HACK: use "fs.read" and "fs.isFile" until properly implemented.
// save "fs" here since it will be replaced in "system" later.
var fs = system.fs;
var exports = require('./file');
exports.SEPARATOR = '/';
exports.ALT_SEPARATOR = undefined;
exports.ROOT = '/';
exports.cwd = function () {
return system.env['PWD'] || '.';
};
// TODO necessary for package loading
exports.list = function (path) {
throw Error("list not yet implemented.");
};
// TODO necessary for package loading
exports.canonical = function (path) {
// does not resolve symlinks
return exports.normal(exports.join(exports.cwd(), path));
};
exports.exists = function (path) {
throw Error("exists not yet implemented.");
};
// TODO necessary for lazy module reloading in sandboxes
exports.mtime = function (path) {
return Date();
};
exports.size = function (path) {
throw Error("size not yet implemented.");
};
exports.stat = function (path) {
return {
mtime: exports.mtime(path),
size: exports.size(path)
}
};
// TODO necessary for package loading
exports.isDirectory = function (path) {
//throw Error("isDirectory not yet implemented.");
system.log.warn("isDirectory not yet implemented. ("+path+")");
return false;
};
// TODO necessary for module loading
exports.isFile = function (path) {
return fs.isFile(path);
};
exports.isLink = function (path) {
throw Error("isLink not yet implemented.");
};
exports.isReadable = function (path) {
throw Error("isReadable not yet implemented.");
};
exports.isWritable = function (path) {
throw Error("isWritable not yet implemented.");
};
exports.rename = function (source, target) {
throw Error("rename not yet implemented.");
};
exports.move = function (source, target) {
throw Error("move not yet implemented.");
};
exports.remove = function (path) {
throw Error("remove not yet implemented.");
};
exports.mkdir = function (path) {
throw Error("mkdir not yet implemented.");
};
exports.rmdir = function(path) {
throw Error("rmdir not yet implemented.");
};
exports.touch = function (path, mtime) {
throw Error("touch not yet implemented.");
};
exports.FileIO = function (path, mode, permissions) {
mode = exports.mode(mode);
var read = mode.read,
write = mode.write,
append = mode.append,
update = mode.update;
if (update) {
throw new Error("Updating IO not yet implemented.");
} else if (write || append) {
throw new Error("Writing IO not yet implemented.");
} else if (read) {
// FIXME temporary hack
return {
'read': function () {
return fs.read(path);
},
'close': function () {
}
};
} else {
throw new Error("Files must be opened either for read, write, or update mode.");
}
};
|