aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjulien.hamaide <julien.hamaide@fishingcactus.com>2012-02-09 09:36:50 +0100
committerjulien.hamaide <julien.hamaide@fishingcactus.com>2012-02-09 09:36:50 +0100
commit04a20ae1ab0d2c2c1e6954614b7d0da1e71ae485 (patch)
treecaf3926e49a3845e1139368d66ab4541d74c565f
parent60be52255a30b28ab956b17998b52d8985dc30d7 (diff)
Fix readdir()
-rw-r--r--src/library.js16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/library.js b/src/library.js
index 6385507c..1fd05f40 100644
--- a/src/library.js
+++ b/src/library.js
@@ -512,16 +512,24 @@ LibraryManager.library = {
if (loc < -2 || loc >= entries) {
{{{ makeSetValue('result', '0', '0', 'i8*') }}}
} else {
- var name, inode;
+ var name, inode, type;
if (loc === -2) {
name = '.';
inode = 1; // Really undefined.
+ type = 4; //DT_DIR
} else if (loc === -1) {
name = '..';
inode = 1; // Really undefined.
+ type = 4; //DT_DIR
} else {
+ var object;
name = stream.contents[loc];
- inode = stream.object.contents[name].inodeNumber;
+ object = stream.object.contents[name];
+ inode = object.inodeNumber;
+ type = object.isDevice ? 2 // DT_CHR, character device.
+ : object.isFolder ? 4 // DT_DIR, directory.
+ : object.link !== undefined ? 10 // DT_LNK, symbolic link.
+ : 8; // DT_REG, regular file.
}
stream.position++;
var offsets = ___dirent_struct_layout;
@@ -532,10 +540,6 @@ LibraryManager.library = {
{{{ makeSetValue('entry + offsets.d_name', 'i', 'name.charCodeAt(i)', 'i8') }}}
}
{{{ makeSetValue('entry + offsets.d_name', 'i', '0', 'i8') }}}
- var type = stream.object.isDevice ? 2 // DT_CHR, character device.
- : stream.object.isFolder ? 4 // DT_DIR, directory.
- : stream.object.link !== undefined ? 10 // DT_LNK, symbolic link.
- : 8; // DT_REG, regular file.
{{{ makeSetValue('entry', 'offsets.d_type', 'type', 'i8') }}}
{{{ makeSetValue('result', '0', 'entry', 'i8*') }}}
}