diff --git a/src/lib/libwasmfs.js b/src/lib/libwasmfs.js index f2f166619b5ff..34d8216a27b59 100644 --- a/src/lib/libwasmfs.js +++ b/src/lib/libwasmfs.js @@ -98,6 +98,11 @@ FS.init(); FS.ErrnoError.prototype = new Error(); FS.ErrnoError.prototype.constructor = FS.ErrnoError; }, + createFile(parent, name, backend, canRead, canWrite) { + var pathName = name ? parent + '/' + name : parent; + var mode = FS_getMode(canRead, canWrite); + return FS.handleError(withStackSave(() => _wasmfs_create_file(stringToUTF8OnStack(path), mode, backend))); + }, createDataFile(parent, name, fileData, canRead, canWrite, canOwn) { FS_createDataFile(parent, name, fileData, canRead, canWrite, canOwn); }, diff --git a/test/fs/test_fs_js_api.c b/test/fs/test_fs_js_api.c index 184de18a85351..13e3140d53cb8 100644 --- a/test/fs/test_fs_js_api.c +++ b/test/fs/test_fs_js_api.c @@ -469,6 +469,23 @@ void cleanup() { remove("closetestfile"); } +void test_fs_createfile_js() { +#if WASMFS + EM_ASM( + var backend = MEMFS.createBackend({}); + var file = FS.createFile("/", "test.txt", backend, true, true); + if (file <= 0) throw "No file created"; + FS.close(file); + ); +#else + EM_ASM( + var file = FS.createFile("/", "test.txt", {}, true, true); + if (file <= 0) throw "No file created"; + FS.close(file); + ); +#endif +} + int main() { test_fs_open(); test_fs_createPath(); @@ -484,6 +501,7 @@ int main() { // TODO: Fix legacy API FS.mmap bug involving emscripten_builtin_memalign test_fs_mmap(); #endif + test_fs_createfile_js(); test_fs_mkdirTree(); test_fs_utime();