Skip to content

Commit 64840c1

Browse files
EdSchoutengopherbot
authored andcommitted
unix: add bindings for setattrlist() on macOS
The setattrlist() function can be used to mutate the attributes of files through a single call. For example, one can perform a chmod(), chown(), chflags(), [...] all at once. This change also adds bindings for the UF_* and SF_* flags that are accepted by chflags(). This makes it possible to use setattrlist() to perform the equivalent of lchflags(), for which we currently have no binding. Change-Id: Ib5a604503a984b95a02b65ad1a437246cd170584 GitHub-Last-Rev: 45dd9d4 GitHub-Pull-Request: #155 Reviewed-on: https://go-review.googlesource.com/c/sys/+/481815 Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> Run-TryBot: Ian Lance Taylor <iant@google.com> Auto-Submit: Ian Lance Taylor <iant@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org>
1 parent 90abad3 commit 64840c1

13 files changed

+125
-1
lines changed

unix/darwin_amd64_test.go

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

unix/darwin_arm64_test.go

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

unix/mkerrors.sh

+2
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ includes_Darwin='
6666
#include <sys/ptrace.h>
6767
#include <sys/select.h>
6868
#include <sys/socket.h>
69+
#include <sys/stat.h>
6970
#include <sys/un.h>
7071
#include <sys/sockio.h>
7172
#include <sys/sys_domain.h>
@@ -521,6 +522,7 @@ ccflags="$@"
521522
$2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ ||
522523
$2 ~ /^NFC_.*_(MAX)?SIZE$/ ||
523524
$2 ~ /^RAW_PAYLOAD_/ ||
525+
$2 ~ /^[US]F_/ ||
524526
$2 ~ /^TP_STATUS_/ ||
525527
$2 ~ /^FALLOC_/ ||
526528
$2 ~ /^ICMPV?6?_(FILTER|SEC)/ ||

unix/syscall_darwin.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -613,6 +613,7 @@ func SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) {
613613
//sys Rmdir(path string) (err error)
614614
//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
615615
//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
616+
//sys Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error)
616617
//sys Setegid(egid int) (err error)
617618
//sysnb Seteuid(euid int) (err error)
618619
//sysnb Setgid(gid int) (err error)
@@ -675,7 +676,6 @@ func SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) {
675676
// Kqueue_from_portset_np
676677
// Kqueue_portset
677678
// Getattrlist
678-
// Setattrlist
679679
// Getdirentriesattr
680680
// Searchfs
681681
// Delete

unix/types_darwin.go

+2
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,8 @@ type Fsid C.struct_fsid
140140

141141
type Dirent C.struct_dirent
142142

143+
type Attrlist C.struct_attrlist
144+
143145
// File system limits
144146

145147
const (

unix/zerrors_darwin_amd64.go

+19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

unix/zerrors_darwin_arm64.go

+19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

unix/zsyscall_darwin_amd64.go

+25
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

unix/zsyscall_darwin_amd64.s

+5
Original file line numberDiff line numberDiff line change
@@ -705,6 +705,11 @@ TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0
705705
GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8
706706
DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)
707707

708+
TEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0
709+
JMP libc_setattrlist(SB)
710+
GLOBL ·libc_setattrlist_trampoline_addr(SB), RODATA, $8
711+
DATA ·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB)
712+
708713
TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0
709714
JMP libc_setegid(SB)
710715

unix/zsyscall_darwin_arm64.go

+25
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

unix/zsyscall_darwin_arm64.s

+5
Original file line numberDiff line numberDiff line change
@@ -705,6 +705,11 @@ TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0
705705
GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8
706706
DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)
707707

708+
TEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0
709+
JMP libc_setattrlist(SB)
710+
GLOBL ·libc_setattrlist_trampoline_addr(SB), RODATA, $8
711+
DATA ·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB)
712+
708713
TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0
709714
JMP libc_setegid(SB)
710715

unix/ztypes_darwin_amd64.go

+10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

unix/ztypes_darwin_arm64.go

+10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)