Skip to content

Commit

Permalink
src: use S_ISDIR to check if the file is dir
Browse files Browse the repository at this point in the history
  • Loading branch information
theanarkh committed Mar 21, 2024
1 parent 4e9ce7c commit 5accbc2
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/node_file.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1049,7 +1049,7 @@ static void InternalModuleStat(const FunctionCallbackInfo<Value>& args) {
int rc = uv_fs_stat(env->event_loop(), &req, *path, nullptr);
if (rc == 0) {
const uv_stat_t* const s = static_cast<const uv_stat_t*>(req.ptr);
rc = !!(s->st_mode & S_IFDIR);
rc = S_ISDIR(s->st_mode);
}
uv_fs_req_cleanup(&req);

Expand Down Expand Up @@ -2854,7 +2854,7 @@ BindingData::FilePathIsFileReturnType BindingData::FilePathIsFile(

if (rc == 0) {
const uv_stat_t* const s = static_cast<const uv_stat_t*>(req.ptr);
rc = !!(s->st_mode & S_IFDIR);
rc = S_ISDIR(s->st_mode);
}

uv_fs_req_cleanup(&req);
Expand Down
2 changes: 1 addition & 1 deletion src/permission/fs_permission.cc
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ std::string WildcardIfDir(const std::string& res) noexcept {
int rc = uv_fs_stat(nullptr, &req, res.c_str(), nullptr);
if (rc == 0) {
const uv_stat_t* const s = static_cast<const uv_stat_t*>(req.ptr);
if (s->st_mode & S_IFDIR) {
if ((s->st_mode & S_IFMT) == S_IFDIR) {
// add wildcard when directory
if (res.back() == node::kPathSeparator) {
return res + "*";
Expand Down
15 changes: 15 additions & 0 deletions test/parallel/test-fs-readdir-recursive.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
'use strict';
const common = require('../common');
const assert = require('assert');
const fs = require('fs');
const net = require('net');

const tmpdir = require('../common/tmpdir');
tmpdir.refresh();

const server = net.createServer().listen(common.PIPE, common.mustCall(() => {
// See https://github.com/nodejs/node/issues/52159
const files = fs.readdirSync(tmpdir.path, { recursive: true });
assert.ok(files.length === 1);
server.close();
}));

0 comments on commit 5accbc2

Please sign in to comment.