diff options
Diffstat (limited to 'ext/fs')
| -rw-r--r-- | ext/fs/30_fs.js | 19 | ||||
| -rw-r--r-- | ext/fs/ops.rs | 8 |
2 files changed, 26 insertions, 1 deletions
diff --git a/ext/fs/30_fs.js b/ext/fs/30_fs.js index dbe064ab8..f14fcd5d1 100644 --- a/ext/fs/30_fs.js +++ b/ext/fs/30_fs.js @@ -245,6 +245,7 @@ async function rename(oldpath, newpath) { // high u32 | low u32 // // 4. ?u64 converts a zero u64 value to JS null on Windows. +// ?bool converts a false bool value to JS null on Windows. function createByteStruct(types) { // types can be "date", "bool" or "u64". let offset = 0; @@ -273,7 +274,15 @@ function createByteStruct(types) { }] + view[${offset + 3}] * 2**32),`; offset += 2; } else { - str += `${name}: !!(view[${offset}] + view[${offset + 1}] * 2**32),`; + if (!optional) { + str += `${name}: !!(view[${offset}] + view[${offset + 1}] * 2**32),`; + } else { + str += `${name}: (unix ? !!((view[${offset}] + view[${ + offset + 1 + }] * 2**32)) : !!((view[${offset}] + view[${ + offset + 1 + }] * 2**32)) || null),`; + } } offset += 2; } @@ -299,6 +308,10 @@ const { 0: statStruct, 1: statBuf } = createByteStruct({ rdev: "?u64", blksize: "?u64", blocks: "?u64", + isBlockDevice: "?bool", + isCharDevice: "?bool", + isFifo: "?bool", + isSocket: "?bool", }); function parseFileInfo(response) { @@ -322,6 +335,10 @@ function parseFileInfo(response) { rdev: unix ? response.rdev : null, blksize: unix ? response.blksize : null, blocks: unix ? response.blocks : null, + isBlockDevice: unix ? response.isBlockDevice : null, + isCharDevice: unix ? response.isCharDevice : null, + isFifo: unix ? response.isFifo : null, + isSocket: unix ? response.isSocket : null, }; } diff --git a/ext/fs/ops.rs b/ext/fs/ops.rs index 0fad92044..5bf3b1c6f 100644 --- a/ext/fs/ops.rs +++ b/ext/fs/ops.rs @@ -1596,6 +1596,10 @@ create_struct_writer! { rdev: u64, blksize: u64, blocks: u64, + is_block_device: bool, + is_char_device: bool, + is_fifo: bool, + is_socket: bool, } } @@ -1623,6 +1627,10 @@ impl From<FsStat> for SerializableStat { rdev: stat.rdev, blksize: stat.blksize, blocks: stat.blocks, + is_block_device: stat.is_block_device, + is_char_device: stat.is_char_device, + is_fifo: stat.is_fifo, + is_socket: stat.is_socket, } } } |
