diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/c.zig | 10 | ||||
-rw-r--r-- | src/javascript/jsc/node/syscall.zig | 32 |
2 files changed, 32 insertions, 10 deletions
@@ -28,13 +28,19 @@ pub extern "c" fn fchmodat(c_int, [*c]const u8, mode_t, c_int) c_int; pub extern "c" fn fchown(std.c.fd_t, std.c.uid_t, std.c.gid_t) c_int; pub extern "c" fn lchown(path: [*:0]const u8, std.c.uid_t, std.c.gid_t) c_int; pub extern "c" fn chown(path: [*:0]const u8, std.c.uid_t, std.c.gid_t) c_int; -pub extern "c" fn lstat([*c]const u8, [*c]libc_stat) c_int; pub extern "c" fn lstat64([*c]const u8, [*c]libc_stat) c_int; +pub extern "c" fn fstat64([*c]const u8, [*c]libc_stat) c_int; +pub extern "c" fn stat64([*c]const u8, [*c]libc_stat) c_int; pub extern "c" fn lchmod(path: [*:0]const u8, mode: mode_t) c_int; -pub extern "c" fn truncate(path: [*:0]const u8, len: os.off_t) c_int; +pub extern "c" fn truncate([*:0]const u8, i64) c_int; // note: truncate64 is not a thing + pub extern "c" fn lutimes(path: [*:0]const u8, times: *const [2]std.os.timeval) c_int; pub extern "c" fn mkdtemp(template: [*c]u8) ?[*:0]u8; +pub const lstat = lstat64; +pub const fstat = fstat64; +pub const stat = stat64; + pub fn lstat_absolute(path: [:0]const u8) !Stat { if (builtin.os.tag == .windows) { @compileError("Not implemented yet"); 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_ }; } |