syscalls: Add 'setxattr'.

* guix/build/syscalls.scm (setxattr): New procedure.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Jan (janneke) Nieuwenhuizen 2020-05-13 22:49:54 +02:00 committed by Jan Nieuwenhuizen
parent e792dd3244
commit d155c9d934
No known key found for this signature in database
GPG key ID: F3C1A0D9C1D65273

View file

@ -79,6 +79,7 @@ (define-module (guix build syscalls)
fdatasync
pivot-root
scandir*
setxattr
fcntl-flock
lock-file
@ -723,6 +724,23 @@ (define* (device-in-use? device)
(list (strerror err))
(list err))))))
(define setxattr
(let ((proc (syscall->procedure int "setxattr"
`(* * * ,size_t ,int))))
(lambda* (file key value #:optional (flags 0))
"Set extended attribute KEY to VALUE on FILE."
(let*-values (((bv) (string->utf8 value))
((ret err)
(proc (string->pointer/utf-8 file)
(string->pointer key)
(bytevector->pointer bv)
(bytevector-length bv)
flags)))
(unless (zero? ret)
(throw 'system-error "setxattr" "~S: ~A"
(list file key value (strerror err))
(list err)))))))
;;;
;;; Random.