From b1361f237aa6b2584e6dbc43c8ae8dc74394eb64 Mon Sep 17 00:00:00 2001 From: Nelson Crosby Date: Sat, 26 Oct 2024 13:22:03 +1300 Subject: [PATCH] Fix up Linux xattr syscalls fgetxattr now doesn't accidentally call lgetxattr, and argument types are more consistent. --- lib/std/os/linux.zig | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index 03eef2bb8e..bccbba5aed 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -2022,8 +2022,8 @@ pub fn llistxattr(path: [*:0]const u8, list: [*]u8, size: usize) usize { return syscall3(.llistxattr, @intFromPtr(path), @intFromPtr(list), size); } -pub fn flistxattr(fd: usize, list: [*]u8, size: usize) usize { - return syscall3(.flistxattr, fd, @intFromPtr(list), size); +pub fn flistxattr(fd: fd_t, list: [*]u8, size: usize) usize { + return syscall3(.flistxattr, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(list), size); } pub fn getxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]u8, size: usize) usize { @@ -2034,20 +2034,20 @@ pub fn lgetxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]u8, size: u return syscall4(.lgetxattr, @intFromPtr(path), @intFromPtr(name), @intFromPtr(value), size); } -pub fn fgetxattr(fd: usize, name: [*:0]const u8, value: [*]u8, size: usize) usize { - return syscall4(.lgetxattr, fd, @intFromPtr(name), @intFromPtr(value), size); +pub fn fgetxattr(fd: fd_t, name: [*:0]const u8, value: [*]u8, size: usize) usize { + return syscall4(.fgetxattr, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(name), @intFromPtr(value), size); } -pub fn setxattr(path: [*:0]const u8, name: [*:0]const u8, value: *const void, size: usize, flags: usize) usize { +pub fn setxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]const u8, size: usize, flags: usize) usize { return syscall5(.setxattr, @intFromPtr(path), @intFromPtr(name), @intFromPtr(value), size, flags); } -pub fn lsetxattr(path: [*:0]const u8, name: [*:0]const u8, value: *const void, size: usize, flags: usize) usize { +pub fn lsetxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]const u8, size: usize, flags: usize) usize { return syscall5(.lsetxattr, @intFromPtr(path), @intFromPtr(name), @intFromPtr(value), size, flags); } -pub fn fsetxattr(fd: usize, name: [*:0]const u8, value: *const void, size: usize, flags: usize) usize { - return syscall5(.fsetxattr, fd, @intFromPtr(name), @intFromPtr(value), size, flags); +pub fn fsetxattr(fd: fd_t, name: [*:0]const u8, value: [*]const u8, size: usize, flags: usize) usize { + return syscall5(.fsetxattr, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(name), @intFromPtr(value), size, flags); } pub fn removexattr(path: [*:0]const u8, name: [*:0]const u8) usize {