Skip to content

Commit ba1b6d8

Browse files
authored
WasmFS JS API: Change open to return an object (#19542)
This PR changes open to return an object with a fd property to match the legacy JS API. close and read were updated to take in an object from open instead of an fd, matching the JS API. Tests were also modified to remove ifdefs.
1 parent adca2e7 commit ba1b6d8

File tree

3 files changed

+10
-22
lines changed

3 files changed

+10
-22
lines changed

src/library_wasmfs.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,14 @@ FS.createPreloadedFile = FS_createPreloadedFile;
121121
mode = typeof mode == 'undefined' ? 438 /* 0666 */ : mode;
122122
return withStackSave(() => {
123123
var buffer = stringToUTF8OnStack(path);
124-
return FS.handleError(__wasmfs_open({{{ to64('buffer') }}}, flags, mode));
125-
})
124+
var fd = FS.handleError(__wasmfs_open({{{ to64('buffer') }}}, flags, mode));
125+
return { fd : fd };
126+
});
126127
},
127128
// TODO: create
128129
// TODO: close
129-
close: (fd) => {
130-
return FS.handleError(-__wasmfs_close(fd));
130+
close: (stream) => {
131+
return FS.handleError(-__wasmfs_close(stream.fd));
131132
},
132133
unlink: (path) => {
133134
return withStackSave(() => {
@@ -142,16 +143,16 @@ FS.createPreloadedFile = FS_createPreloadedFile;
142143
});
143144
},
144145
// TODO: read
145-
read: (fd, buffer, offset, length, position) => {
146+
read: (stream, buffer, offset, length, position) => {
146147
var seeking = typeof position != 'undefined';
147148

148149
var dataBuffer = _malloc(length);
149150

150151
var bytesRead;
151152
if (seeking) {
152-
bytesRead = __wasmfs_pread(fd, dataBuffer, length, position);
153+
bytesRead = __wasmfs_pread(stream.fd, dataBuffer, length, position);
153154
} else {
154-
bytesRead = __wasmfs_read(fd, dataBuffer, length);
155+
bytesRead = __wasmfs_read(stream.fd, dataBuffer, length);
155156
}
156157
bytesRead = FS.handleError(bytesRead);
157158

test/fs/test_fs_js_api.c

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,11 @@ int main() {
99
var writeStream = FS.open('testfile', 'w');
1010
var writePlusStream = FS.open('testfile', 'w+');
1111
var appendStream = FS.open('testfile', 'a');
12-
#if WASMFS
13-
assert(readStream >= 0);
14-
assert(writeStream >= 0);
15-
assert(writePlusStream >= 0);
16-
assert(appendStream >= 0);
17-
#else
12+
1813
assert(readStream && readStream.fd >= 0);
1914
assert(writeStream && writeStream.fd >= 0);
2015
assert(writePlusStream && writePlusStream.fd >= 0);
2116
assert(appendStream && appendStream.fd >= 0);
22-
#endif
2317

2418
var ex;
2519
try {
@@ -30,11 +24,8 @@ int main() {
3024
assert(ex.name === "ErrnoError" && ex.errno === 44 /* ENOENT */);
3125

3226
var createFileNotHere = FS.open('filenothere', 'w+');
33-
#if WASMFS
34-
assert(createFileNotHere >= 0);
35-
#else
27+
3628
assert(createFileNotHere && createFileNotHere.fd >= 0);
37-
#endif
3829
);
3930

4031
/********** test FS.rename() **********/

test/unistd/access.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,7 @@ int main() {
7373

7474
EM_ASM(
7575
var fchmodstream = FS.open("fchmodtest", "r");
76-
#if WASMFS
77-
FS.fchmod(fchmodstream, 0777);
78-
#else
7976
FS.fchmod(fchmodstream.fd, 0777);
80-
#endif
8177
);
8278
stat("fchmodtest", &fileStats);
8379
assert(fileStats.st_mode & 0777);

0 commit comments

Comments
 (0)