Skip to content

Commit 913dc6e

Browse files
committed
Runtime: implement Sys.is_directory
1 parent 1e2c57d commit 913dc6e

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

runtime/wasm/fs.wat

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
(func $readdir (param anyref) (result (ref extern))))
2626
(import "bindings" "file_exists"
2727
(func $file_exists (param anyref) (result (ref eq))))
28+
(import "bindings" "is_directory"
29+
(func $is_directory (param anyref) (result (ref eq))))
2830
(import "bindings" "rename" (func $rename (param anyref) (param anyref)))
2931
(import "jslib" "wrap" (func $wrap (param anyref) (result (ref eq))))
3032
(import "jslib" "unwrap" (func $unwrap (param (ref eq)) (result anyref)))
@@ -141,10 +143,15 @@
141143

142144
(data $caml_sys_is_directory "caml_sys_is_directory")
143145

144-
(func (export "caml_sys_is_directory") (param (ref eq)) (result (ref eq))
145-
;; ZZZ
146-
(call $log_str
147-
(array.new_data $string $caml_sys_is_directory
148-
(i32.const 0) (i32.const 21)))
149-
(ref.i31 (i32.const 0)))
146+
(func (export "caml_sys_is_directory")
147+
(param $name (ref eq)) (result (ref eq))
148+
(try
149+
(do
150+
(return
151+
(call $is_directory
152+
(call $unwrap
153+
(call $caml_jsstring_of_string (local.get $name))))))
154+
(catch $javascript_exception
155+
(call $caml_handle_sys_error (pop externref))
156+
(return (ref.i31 (i32.const 0))))))
150157
)

runtime/wasm/runtime.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,7 @@
437437
unlink: (p) => fs.unlinkSync(p),
438438
readdir: (p) => fs.readdirSync(p),
439439
file_exists: (p) => +fs.existsSync(p),
440+
is_directory: (p) => +fs.lstatSync(p).isDirectory(),
440441
rename: (o, n) => fs.renameSync(o, n),
441442
throw: (e) => {
442443
throw e;

0 commit comments

Comments
 (0)