Skip to content

Commit

Permalink
JavaScript runtime: file names are Unicode strings
Browse files Browse the repository at this point in the history
  • Loading branch information
vouillon committed Feb 3, 2025
1 parent 0a2d8db commit 0ed9e83
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 25 deletions.
12 changes: 6 additions & 6 deletions compiler/tests-io/non_ascii_filenames.expected
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
opening files
/static/accentué: FAIL
/static/accentu�: PASS
/static/accentué: PASS
/static/accentu�: FAIL
accentué: PASS
accentu�: FAIL
reading directories
.: FAIL
/static: FAIL
.: PASS
/static: PASS
current working directory
./répertoire: FAIL
/static/répertoire: FAIL
./répertoire: PASS
/static/répertoire: PASS
28 changes: 14 additions & 14 deletions runtime/js/fs.js
Original file line number Diff line number Diff line change
Expand Up @@ -130,12 +130,12 @@ jsoo_mount_point.push({
});

//Provides:caml_list_mount_point
//Requires: jsoo_mount_point, caml_string_of_jsbytes
//Requires: jsoo_mount_point, caml_string_of_jsstring
function caml_list_mount_point() {
var prev = 0;
for (var i = 0; i < jsoo_mount_point.length; i++) {
var old = prev;
prev = [0, caml_string_of_jsbytes(jsoo_mount_point[i].path), old];
prev = [0, caml_string_of_jsstring(jsoo_mount_point[i].path), old];
}
return prev;
}
Expand Down Expand Up @@ -197,13 +197,13 @@ function caml_unmount(name) {
}

//Provides: caml_sys_getcwd
//Requires: caml_current_dir, caml_string_of_jsbytes
//Requires: caml_current_dir, caml_string_of_jsstring
function caml_sys_getcwd() {
return caml_string_of_jsbytes(caml_current_dir);
return caml_string_of_jsstring(caml_current_dir);
}

//Provides: caml_sys_chdir
//Requires: caml_current_dir, caml_raise_no_such_file, resolve_fs_device, caml_trailing_slash, caml_jsbytes_of_string, caml_raise_sys_error
//Requires: caml_current_dir, caml_raise_no_such_file, resolve_fs_device, caml_trailing_slash, caml_jsstring_of_string, caml_raise_sys_error
function caml_sys_chdir(dir) {
var root = resolve_fs_device(dir);
if (root.device.is_dir(root.rest)) {
Expand All @@ -213,10 +213,10 @@ function caml_sys_chdir(dir) {
return 0;
} else if (root.device.exists(root.rest)) {
caml_raise_sys_error(
"ENOTDIR: not a directory, chdir '" + caml_jsbytes_of_string(dir) + "'",
"ENOTDIR: not a directory, chdir '" + caml_jsstring_of_string(dir) + "'",
);
} else {
caml_raise_no_such_file(caml_jsbytes_of_string(dir));
caml_raise_no_such_file(caml_jsstring_of_string(dir));
}
}

Expand All @@ -239,14 +239,14 @@ function caml_sys_file_exists(name) {
}

//Provides: caml_sys_read_directory
//Requires: caml_string_of_jsbytes
//Requires: caml_string_of_jsstring
//Requires: resolve_fs_device
function caml_sys_read_directory(name) {
var root = resolve_fs_device(name);
var a = root.device.readdir(root.rest);
var l = new Array(a.length + 1);
l[0] = 0;
for (var i = 0; i < a.length; i++) l[i + 1] = caml_string_of_jsbytes(a[i]);
for (var i = 0; i < a.length; i++) l[i + 1] = caml_string_of_jsstring(a[i]);
return l;
}

Expand Down Expand Up @@ -339,18 +339,18 @@ function caml_create_file(name, content) {
}

//Provides: jsoo_create_file
//Requires: caml_create_file, caml_string_of_jsbytes
//Requires: caml_create_file, caml_string_of_jsbytes, caml_string_of_jsstring
function jsoo_create_file(name, content) {
var name = caml_string_of_jsbytes(name);
var name = caml_string_of_jsstring(name);
var content = caml_string_of_jsbytes(content);
return caml_create_file(name, content);
}

//Provides: caml_read_file_content
//Requires: resolve_fs_device, caml_raise_no_such_file, caml_string_of_uint8_array
//Requires: caml_string_of_jsbytes, caml_jsbytes_of_string
//Requires: caml_string_of_jsstring, caml_jsstring_of_string
function caml_read_file_content(name) {
var name = typeof name === "string" ? caml_string_of_jsbytes(name) : name;
var name = typeof name === "string" ? caml_string_of_jsstring(name) : name;
var root = resolve_fs_device(name);
if (root.device.exists(root.rest)) {
var file = root.device.open(root.rest, { rdonly: 1 });
Expand All @@ -359,5 +359,5 @@ function caml_read_file_content(name) {
file.read(buf, 0, len);
return caml_string_of_uint8_array(buf);
}
caml_raise_no_such_file(caml_jsbytes_of_string(name));
caml_raise_no_such_file(caml_jsstring_of_string(name));
}
4 changes: 2 additions & 2 deletions runtime/js/fs_fake.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ MlFakeDevice.prototype.slash = function (name) {
MlFakeDevice.prototype.lookup = function (name) {
if (!this.content[name] && this.lookupFun) {
var res = this.lookupFun(
caml_string_of_jsbytes(this.root),
caml_string_of_jsbytes(name),
caml_string_of_jsstring(this.root),
caml_string_of_jsstring(name),
);
if (res !== 0) {
this.create_dir_if_needed(name);
Expand Down
1 change: 0 additions & 1 deletion runtime/js/io.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ function MlChanid(id) {
//Requires: caml_raise_sys_error
//Requires: MlFakeFd_out
//Requires: resolve_fs_device
//Requires: caml_jsbytes_of_string
//Requires: fs_node_supported
//Requires: caml_sys_fds
//Requires: caml_sys_open_for_node
Expand Down
4 changes: 2 additions & 2 deletions runtime/js/sys.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
///////////// Sys

//Provides: caml_raise_sys_error (const)
//Requires: caml_raise_with_string, caml_global_data
//Requires: caml_raise_with_arg, caml_global_data, caml_string_of_jsstring
function caml_raise_sys_error(msg) {
caml_raise_with_string(caml_global_data.Sys_error, msg);
caml_raise_with_arg(caml_global_data.Sys_error, caml_string_of_jsstring(msg));
}

//Provides: caml_sys_exit
Expand Down

0 comments on commit 0ed9e83

Please sign in to comment.