From: Dmitry Volyntsev Date: Wed, 26 Nov 2025 03:08:10 +0000 (-0800) Subject: FS: fixed fs.mkdir() and friends. X-Git-Tag: 0.9.5~12 X-Git-Url: http://www.kaiwu.me/postgresql/commit/static/gitweb.js?a=commitdiff_plain;h=3e6825729060d089e397a90bca1b7a20c4957e93;p=njs.git FS: fixed fs.mkdir() and friends. --- diff --git a/external/njs_fs_module.c b/external/njs_fs_module.c index c56a685a..33fb6111 100644 --- a/external/njs_fs_module.c +++ b/external/njs_fs_module.c @@ -2950,28 +2950,27 @@ njs_fs_make_path(njs_vm_t *vm, char *path, mode_t md, njs_bool_t recursive, ret = mkdir(path, md); err = errno; - switch (ret) { - case 0: - break; - - case EACCES: - case ENOTDIR: - case EPERM: - goto failed; - - case EEXIST: - default: - ret = stat(path, &sb); - if (ret == 0) { - if (!S_ISDIR(sb.st_mode)) { - err = ENOTDIR; - goto failed; + if (ret != 0) { + switch (err) { + case EACCES: + case ENOTDIR: + case EPERM: + goto failed; + + case EEXIST: + default: + ret = stat(path, &sb); + if (ret == 0) { + if (!S_ISDIR(sb.st_mode)) { + err = ENOTDIR; + goto failed; + } + + break; } - break; + goto failed; } - - goto failed; } if (p == end) { diff --git a/external/qjs_fs_module.c b/external/qjs_fs_module.c index 4fcce40f..9117072b 100644 --- a/external/qjs_fs_module.c +++ b/external/qjs_fs_module.c @@ -513,28 +513,27 @@ qjs_fs_make_path(JSContext *cx, char *path, mode_t md, int recursive) ret = mkdir(path, md); err = errno; - switch (ret) { - case 0: - break; - - case EACCES: - case ENOTDIR: - case EPERM: - goto failed; - - case EEXIST: - default: - ret = stat(path, &sb); - if (ret == 0) { - if (!S_ISDIR(sb.st_mode)) { - err = ENOTDIR; - goto failed; + if (ret != 0) { + switch (err) { + case EACCES: + case ENOTDIR: + case EPERM: + goto failed; + + case EEXIST: + default: + ret = stat(path, &sb); + if (ret == 0) { + if (!S_ISDIR(sb.st_mode)) { + err = ENOTDIR; + goto failed; + } + + break; } - break; + goto failed; } - - goto failed; } if (p == end) { diff --git a/test/fs/mkdir2.t.mjs b/test/fs/mkdir_recursive.t.mjs similarity index 100% rename from test/fs/mkdir2.t.mjs rename to test/fs/mkdir_recursive.t.mjs