Skip to content

Commit ac2a3a4

Browse files
committed
Few Changes
* Remove `memset` in `BaseINode::FillStat` * Optimize `BaseINode::FillStatx` a bit * Remove user/group/other associated macros * Add function maros to module
1 parent b59d63f commit ac2a3a4

File tree

5 files changed

+57
-67
lines changed

5 files changed

+57
-67
lines changed

FileSystem.cc

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,6 @@ namespace {
219219
return nlink == (FS_S_ISDIR(mode) ? 1 : 0);
220220
}
221221
void FillStat(struct fs_stat* buf) {
222-
memset(buf, '\0', sizeof(struct fs_stat));
223222
buf->st_ino = id;
224223
buf->st_mode = mode;
225224
buf->st_nlink = nlink;
@@ -233,10 +232,12 @@ namespace {
233232
buf->stx_mask = mask;
234233
if (mask & FS_STATX_INO)
235234
buf->stx_ino = id;
236-
if (mask & FS_STATX_TYPE)
237-
buf->stx_mode |= mode & FS_S_IFMT;
238-
if (mask & FS_STATX_MODE)
239-
buf->stx_mode |= mode & ~FS_S_IFMT;
235+
if (mask & FS_STATX_TYPE) {
236+
buf->stx_mode = mode & FS_S_IFMT;
237+
if (mask & FS_STATX_MODE)
238+
buf->stx_mode |= mode & ~FS_S_IFMT;
239+
} else if (mask & FS_STATX_MODE)
240+
buf->stx_mode = mode & ~FS_S_IFMT;
240241
if (mask & FS_STATX_NLINK)
241242
buf->stx_nlink = nlink;
242243
if (mask & FS_STATX_SIZE)

fsdef.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -86,18 +86,6 @@
8686
#define FS_S_IFLNK 0120000
8787
#define FS_S_IFMT 0170000
8888
#define FS_S_IFREG 0100000
89-
#define FS_S_IRUSR 0400
90-
#define FS_S_IRGRP (FS_S_IRUSR >> 3)
91-
#define FS_S_IROTH (FS_S_IRGRP >> 3)
92-
#define FS_S_IWUSR 0200
93-
#define FS_S_IWGRP (FS_S_IWUSR >> 3)
94-
#define FS_S_IWOTH (FS_S_IWGRP >> 3)
95-
#define FS_S_IXUSR 0100
96-
#define FS_S_IXGRP (FS_S_IXUSR >> 3)
97-
#define FS_S_IXOTH (FS_S_IXGRP >> 3)
98-
#define FS_S_IRWXU (FS_S_IRUSR | FS_S_IWUSR | FS_S_IXUSR)
99-
#define FS_S_IRWXG (FS_S_IRWXU >> 3)
100-
#define FS_S_IRWXO (FS_S_IRWXG >> 3)
10189
#define FS_UTIME_NOW (((FS_LONG)1 << 30) - (FS_LONG)1)
10290
#define FS_UTIME_OMIT (((FS_LONG)1 << 30) - (FS_LONG)2)
10391
#define FS_XATTR_CREATE 0x1

module.cc

Lines changed: 46 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2480,7 +2480,47 @@ void FileSystemLoadFrom(const FunctionCallbackInfo<Value>& args) {
24802480
args.GetReturnValue().Set(fsObj);
24812481
}
24822482

2483-
void DefineConstants(Isolate* isolate, Local<FunctionTemplate> func) {
2483+
void MacroISDIR(const FunctionCallbackInfo<Value>& args) {
2484+
args.GetReturnValue().Set(FS_S_ISDIR(Val<uint64_t>(args[0])));
2485+
}
2486+
2487+
void MacroISREG(const FunctionCallbackInfo<Value>& args) {
2488+
args.GetReturnValue().Set(FS_S_ISREG(Val<uint64_t>(args[0])));
2489+
}
2490+
2491+
void MacroISLNK(const FunctionCallbackInfo<Value>& args) {
2492+
args.GetReturnValue().Set(FS_S_ISLNK(Val<uint64_t>(args[0])));
2493+
}
2494+
2495+
void MacroIFTODT(const FunctionCallbackInfo<Value>& args) {
2496+
args.GetReturnValue().Set(BigInt::NewFromUnsigned(args.GetIsolate(), Val<uint64_t>(args[0])));
2497+
}
2498+
2499+
template<typename T, size_t N>
2500+
void DefineFunction(
2501+
Isolate* isolate,
2502+
Local<T> obj,
2503+
const char (&prop)[N],
2504+
FunctionCallback fn,
2505+
int argc,
2506+
PropertyAttribute attr = PropertyAttribute::DontEnum
2507+
) {
2508+
obj->Set(
2509+
String::NewFromUtf8Literal(isolate, prop, NewStringType::kInternalized),
2510+
FunctionTemplate::New(
2511+
isolate,
2512+
fn,
2513+
Local<Value>(),
2514+
Local<Signature>(),
2515+
argc,
2516+
ConstructorBehavior::kThrow,
2517+
SideEffectType::kHasSideEffect
2518+
),
2519+
attr
2520+
);
2521+
}
2522+
2523+
void DefineMacros(Isolate* isolate, Local<FunctionTemplate> func) {
24842524
#define DefineFlag(v) \
24852525
do { \
24862526
func->Set( \
@@ -2541,18 +2581,10 @@ void DefineConstants(Isolate* isolate, Local<FunctionTemplate> func) {
25412581
DefineFlag(S_IFLNK);
25422582
DefineFlag(S_IFMT);
25432583
DefineFlag(S_IFREG);
2544-
DefineFlag(S_IRUSR);
2545-
DefineFlag(S_IRGRP);
2546-
DefineFlag(S_IROTH);
2547-
DefineFlag(S_IWUSR);
2548-
DefineFlag(S_IWGRP);
2549-
DefineFlag(S_IWOTH);
2550-
DefineFlag(S_IXUSR);
2551-
DefineFlag(S_IXGRP);
2552-
DefineFlag(S_IXOTH);
2553-
DefineFlag(S_IRWXU);
2554-
DefineFlag(S_IRWXG);
2555-
DefineFlag(S_IRWXO);
2584+
DefineFunction(isolate, func, "S_IFTODT", MacroIFTODT, 1, PropertyAttribute::None);
2585+
DefineFunction(isolate, func, "S_ISDIR", MacroISDIR, 1, PropertyAttribute::None);
2586+
DefineFunction(isolate, func, "S_ISLNK", MacroISLNK, 1, PropertyAttribute::None);
2587+
DefineFunction(isolate, func, "S_ISREG", MacroISREG, 1, PropertyAttribute::None);
25562588
DefineFlag(UTIME_NOW);
25572589
DefineFlag(UTIME_OMIT);
25582590
DefineFlag(XATTR_CREATE);
@@ -2583,29 +2615,6 @@ void DefineConstants(Isolate* isolate, Local<FunctionTemplate> func) {
25832615
#undef DefineFlag
25842616
}
25852617

2586-
template<typename T, size_t N>
2587-
void DefineFunction(
2588-
Isolate* isolate,
2589-
Local<T> obj,
2590-
const char (&prop)[N],
2591-
FunctionCallback fn,
2592-
int argc,
2593-
PropertyAttribute attr = PropertyAttribute::DontEnum
2594-
) {
2595-
obj->Set(
2596-
String::NewFromUtf8Literal(isolate, prop, NewStringType::kInternalized),
2597-
FunctionTemplate::New(
2598-
isolate,
2599-
fn,
2600-
Local<Value>(),
2601-
Local<Signature>(),
2602-
argc,
2603-
ConstructorBehavior::kThrow,
2604-
SideEffectType::kHasSideEffect
2605-
),
2606-
attr
2607-
);
2608-
}
26092618
void DefineTemplateFunctions(Isolate* isolate, Local<ObjectTemplate> tmpl) {
26102619
DefineFunction(isolate, tmpl, "faccessat2", FileSystemFAccessAt2, 4);
26112620
DefineFunction(isolate, tmpl, "faccessat", FileSystemFAccessAt, 3);
@@ -2680,7 +2689,7 @@ NODE_MODULE_INIT() {
26802689
isolate,
26812690
FileSystemConstructor
26822691
);
2683-
DefineConstants(isolate, FSTmpl);
2692+
DefineMacros(isolate, FSTmpl);
26842693
DefineFunction(isolate, FSTmpl, "loadFrom", FileSystemLoadFrom, 1, PropertyAttribute::None);
26852694
FSConstructorTmpl.Reset(isolate, FSTmpl);
26862695
Local<ObjectTemplate> instTmpl = FSTmpl->InstanceTemplate();

module.d.ts

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -104,18 +104,10 @@ declare module "@daisydogs07/filesystem" {
104104
static S_IFLNK: number;
105105
static S_IFMT: number;
106106
static S_IFREG: number;
107-
static S_IRUSR: number;
108-
static S_IRGRP: number;
109-
static S_IROTH: number;
110-
static S_IWUSR: number;
111-
static S_IWGRP: number;
112-
static S_IWOTH: number;
113-
static S_IXUSR: number;
114-
static S_IXGRP: number;
115-
static S_IXOTH: number;
116-
static S_IRWXU: number;
117-
static S_IRWXG: number;
118-
static S_IRWXO: number;
107+
static S_IFTODT(mode: NumberLike): boolean;
108+
static S_ISDIR(mode: NumberLike): boolean;
109+
static S_ISLNK(mode: NumberLike): boolean;
110+
static S_ISREG(mode: NumberLike): boolean;
119111
static UTIME_NOW: number;
120112
static UTIME_OMIT: number;
121113
static XATTR_CREATE: number;

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@daisydogs07/filesystem",
3-
"version": "5.2.15",
3+
"version": "5.2.16",
44
"os": ["linux", "win32"],
55
"cpu": ["x64"],
66
"keywords": [

0 commit comments

Comments
 (0)