diff --git a/src/library_fs.js b/src/library_fs.js index 575bf8feaac6b..af07764dfdbe8 100644 --- a/src/library_fs.js +++ b/src/library_fs.js @@ -1391,6 +1391,9 @@ FS.staticInit(); FS.mount({ mount() { var node = FS.createNode(proc_self, 'fd', {{{ cDefs.S_IFDIR | 0o777 }}}, {{{ cDefs.S_IXUGO }}}); + node.stream_ops = { + llseek: MEMFS.stream_ops.llseek, + }; node.node_ops = { lookup(parent, name) { var fd = +name; @@ -1399,9 +1402,15 @@ FS.staticInit(); parent: null, mount: { mountpoint: 'fake' }, node_ops: { readlink: () => stream.path }, + id: fd + 1, }; ret.parent = ret; // make it look like a simple root node return ret; + }, + readdir() { + return Array.from(FS.streams.entries()) + .filter(([k, v]) => v) + .map(([k, v]) => k.toString()); } }; return node; diff --git a/test/fs/test_proc_self_fd.c b/test/fs/test_proc_self_fd.c index 13ff19c1ae3ca..582725693f45e 100644 --- a/test/fs/test_proc_self_fd.c +++ b/test/fs/test_proc_self_fd.c @@ -14,8 +14,6 @@ int main(int argc, char* argv[]) { struct dirent *entry; while ((entry = readdir(d))) { printf("entry: %s\n", entry->d_name); - printf("unexpected success reading directory!"); - return 1; } closedir(d); diff --git a/test/fs/test_proc_self_fd.out b/test/fs/test_proc_self_fd.out index 2c53cdf6b16f2..0d8d377ed7488 100644 --- a/test/fs/test_proc_self_fd.out +++ b/test/fs/test_proc_self_fd.out @@ -1,2 +1,6 @@ +entry: 0 +entry: 1 +entry: 2 +entry: 3 fd0: /dev/tty done