aboutsummaryrefslogtreecommitdiff
path: root/src/library_fs.js
diff options
context:
space:
mode:
authorAnthony Pesch <inolen@gmail.com>2013-08-13 20:18:33 -0700
committerAnthony Pesch <inolen@gmail.com>2013-08-13 20:18:33 -0700
commit68dfca4906a5c33a66f3c8cdf7850de970c985bd (patch)
tree616d9345f51d7e437f39ff9c2215635763cd95b9 /src/library_fs.js
parentb639ed59378df54fc0513fb00ac97d0678f8ee6e (diff)
- made FS.readdir easier to use
- tightened up exported node and stream ops for each type
Diffstat (limited to 'src/library_fs.js')
-rw-r--r--src/library_fs.js19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/library_fs.js b/src/library_fs.js
index 9c83fcad..c9aa9900 100644
--- a/src/library_fs.js
+++ b/src/library_fs.js
@@ -730,6 +730,9 @@ mergeInto(LibraryManager.library, {
});
// use a custom read function
stream_ops.read = function(stream, buffer, offset, length, position) {
+ if (!FS.forceLoadFile(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
var contents = stream.node.contents;
var size = Math.min(contents.length - position, length);
if (contents.slice) { // normal array
@@ -1035,7 +1038,7 @@ mergeInto(LibraryManager.library, {
FS.hashRemoveNode(old_node);
// do the underlying fs rename
try {
- old_node.node_ops.rename(old_node, new_dir, new_name);
+ old_dir.node_ops.rename(old_node, new_dir, new_name);
} catch (e) {
throw e;
} finally {
@@ -1062,6 +1065,14 @@ mergeInto(LibraryManager.library, {
parent.node_ops.rmdir(parent, name);
FS.destroyNode(node);
},
+ readdir: function(path) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ var node = lookup.node;
+ if (!node.node_ops.readdir) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ return node.node_ops.readdir(node);
+ },
unlink: function(path) {
var lookup = FS.lookupPath(path, { parent: true });
var parent = lookup.node;
@@ -1280,12 +1291,6 @@ mergeInto(LibraryManager.library, {
}
return stream.stream_ops.llseek(stream, offset, whence);
},
- readdir: function(stream) {
- if (!stream.stream_ops.readdir) {
- throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
- }
- return stream.stream_ops.readdir(stream);
- },
read: function(stream, buffer, offset, length, position) {
if (length < 0 || position < 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);