From 03f147b3ccc0b8b18155e1d868ff8aa57650f664 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Mon, 16 Dec 2024 20:33:07 +0100 Subject: [PATCH 1/6] Don't normalize path in basename This brings it in line with the behavior of basename im coreutils and node. --- src/library_path.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/library_path.js b/src/library_path.js index ab3112503a202..dd367f273eea8 100644 --- a/src/library_path.js +++ b/src/library_path.js @@ -66,7 +66,6 @@ addToLibrary({ basename: (path) => { // EMSCRIPTEN return '/'' for '/', not an empty string if (path === '/') return '/'; - path = PATH.normalize(path); path = path.replace(/\/$/, ""); var lastSlash = path.lastIndexOf('/'); if (lastSlash === -1) return path; From f8f25c2270b160c15228ab067b33bc93913cbd71 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Mon, 16 Dec 2024 20:35:55 +0100 Subject: [PATCH 2/6] update changelog --- ChangeLog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index fb191d96b14c2..184a56d9d17e9 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -20,6 +20,9 @@ See docs/process.md for more on how version tagging works. 3.1.75 (in development) ----------------------- +- `FS.basename()` no longer calls `PATH.normalize()`, so that + `FS.basename("a/.")` returns `"."` instead of `"a"` and `FS.basename("a/b/..")` + returns `".."` instead of `"a"`. 3.1.74 - 12/14/24 ----------------- From 23c59a45d288fed2d2fa2aea842858c1abb096ea Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Mon, 16 Dec 2024 20:36:40 +0100 Subject: [PATCH 3/6] Add pr number to changelog --- ChangeLog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog.md b/ChangeLog.md index 184a56d9d17e9..e70449b6ad638 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -22,7 +22,7 @@ See docs/process.md for more on how version tagging works. ----------------------- - `FS.basename()` no longer calls `PATH.normalize()`, so that `FS.basename("a/.")` returns `"."` instead of `"a"` and `FS.basename("a/b/..")` - returns `".."` instead of `"a"`. + returns `".."` instead of `"a"`. (#23180) 3.1.74 - 12/14/24 ----------------- From 947f51f7054ec197c40cdcd532871ba05a8fd953 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Mon, 16 Dec 2024 20:47:33 +0100 Subject: [PATCH 4/6] Remove multiple trailing slashes --- src/library_path.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library_path.js b/src/library_path.js index dd367f273eea8..8fa26ea51b84b 100644 --- a/src/library_path.js +++ b/src/library_path.js @@ -66,7 +66,7 @@ addToLibrary({ basename: (path) => { // EMSCRIPTEN return '/'' for '/', not an empty string if (path === '/') return '/'; - path = path.replace(/\/$/, ""); + path = path.replace(/\/+$/g, ""); var lastSlash = path.lastIndexOf('/'); if (lastSlash === -1) return path; return path.substr(lastSlash+1); From e4e2fd63e0a3c8d5645ed95a658e7d55efe2b54f Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Mon, 16 Dec 2024 21:15:27 +0100 Subject: [PATCH 5/6] Address review --- ChangeLog.md | 6 ++++-- src/library_path.js | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index e70449b6ad638..8e0253e83b30c 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -21,8 +21,10 @@ See docs/process.md for more on how version tagging works. 3.1.75 (in development) ----------------------- - `FS.basename()` no longer calls `PATH.normalize()`, so that - `FS.basename("a/.")` returns `"."` instead of `"a"` and `FS.basename("a/b/..")` - returns `".."` instead of `"a"`. (#23180) + `FS.basename("a/.")` returns `"."` instead of `"a"` and + `FS.basename("a/b/..")` returns `".."` instead of `"a"`. This is in line with + the behaviour of both node and coreutils, and is already the case when using + NODERAWFS". (#23180) 3.1.74 - 12/14/24 ----------------- diff --git a/src/library_path.js b/src/library_path.js index 8fa26ea51b84b..fd5fec3dc2c46 100644 --- a/src/library_path.js +++ b/src/library_path.js @@ -64,7 +64,7 @@ addToLibrary({ return root + dir; }, basename: (path) => { - // EMSCRIPTEN return '/'' for '/', not an empty string + // EMSCRIPTEN return '/' for '/', not an empty string if (path === '/') return '/'; path = path.replace(/\/+$/g, ""); var lastSlash = path.lastIndexOf('/'); From 8eb78452705b9c3ddc93cca67d23801ef6969c9a Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Mon, 16 Dec 2024 21:20:49 +0100 Subject: [PATCH 6/6] Fix changelog again --- ChangeLog.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 8e0253e83b30c..b84601c221cde 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -20,9 +20,9 @@ See docs/process.md for more on how version tagging works. 3.1.75 (in development) ----------------------- -- `FS.basename()` no longer calls `PATH.normalize()`, so that - `FS.basename("a/.")` returns `"."` instead of `"a"` and - `FS.basename("a/b/..")` returns `".."` instead of `"a"`. This is in line with +- `PATH.basename()` no longer calls `PATH.normalize()`, so that + `PATH.basename("a/.")` returns `"."` instead of `"a"` and + `PATH.basename("a/b/..")` returns `".."` instead of `"a"`. This is in line with the behaviour of both node and coreutils, and is already the case when using NODERAWFS". (#23180)