aboutsummaryrefslogtreecommitdiff
path: root/src/javascript
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-04-05 01:52:48 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-04-05 01:52:48 -0700
commitdb5951337e968effd7adce82a31fa841f6a7c8a8 (patch)
treea07aa194d29f359d96f4de33f66ce36283588243 /src/javascript
parentd652e874737fd831c90de8b6642bbdd39ab7f288 (diff)
downloadbun-db5951337e968effd7adce82a31fa841f6a7c8a8.tar.gz
bun-db5951337e968effd7adce82a31fa841f6a7c8a8.tar.zst
bun-db5951337e968effd7adce82a31fa841f6a7c8a8.zip
Fix stat() on x64
Diffstat (limited to 'src/javascript')
-rw-r--r--src/javascript/jsc/node/syscall.zig32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/javascript/jsc/node/syscall.zig b/src/javascript/jsc/node/syscall.zig
index 091b3d632..d51062a83 100644
--- a/src/javascript/jsc/node/syscall.zig
+++ b/src/javascript/jsc/node/syscall.zig
@@ -23,6 +23,27 @@ pub const S = struct {
};
const sys = std.os.system;
+const statSym = if (Environment.isMac)
+ C.stat
+else if (Environment.isLinux)
+ linux.stat
+else
+ @compileError("STAT");
+
+const fstatSym = if (Environment.isMac)
+ C.fstat
+else if (Environment.isLinux)
+ linux.fstat
+else
+ @compileError("STAT");
+
+const lstat64 = if (Environment.isMac)
+ C.lstat
+else if (Environment.isLinux)
+ linux.lstat
+else
+ @compileError("STAT");
+
pub const Tag = enum(u8) {
TODO,
@@ -76,11 +97,6 @@ const mode_t = os.mode_t;
const open_sym = system.open;
-const fstat_sym = if (builtin.os.tag == .linux)
- sys.fstat64
-else
- sys.fstat;
-
const mem = std.mem;
pub fn getcwd(buf: *[bun.MAX_PATH_BYTES]u8) Maybe([]const u8) {
@@ -105,19 +121,19 @@ pub fn chdir(destination: [:0]const u8) Maybe(void) {
pub fn stat(path: [:0]const u8) Maybe(os.Stat) {
var stat_ = mem.zeroes(os.Stat);
- if (Maybe(os.Stat).errnoSys(sys.stat(path, &stat_), .stat)) |err| return err;
+ if (Maybe(os.Stat).errnoSys(statSym(path, &stat_), .stat)) |err| return err;
return Maybe(os.Stat){ .result = stat_ };
}
pub fn lstat(path: [:0]const u8) Maybe(os.Stat) {
var stat_ = mem.zeroes(os.Stat);
- if (Maybe(os.Stat).errnoSys(C.lstat(path, &stat_), .lstat)) |err| return err;
+ if (Maybe(os.Stat).errnoSys(lstat64(path, &stat_), .lstat)) |err| return err;
return Maybe(os.Stat){ .result = stat_ };
}
pub fn fstat(fd: JSC.Node.FileDescriptor) Maybe(os.Stat) {
var stat_ = mem.zeroes(os.Stat);
- if (Maybe(os.Stat).errnoSys(fstat_sym(fd, &stat_), .fstat)) |err| return err;
+ if (Maybe(os.Stat).errnoSys(fstatSym(fd, &stat_), .fstat)) |err| return err;
return Maybe(os.Stat){ .result = stat_ };
}