changeset 685: | ebe3315b7add |
parent: | 16a3cdc06cbc |
author: | Richard Westhaver <ellis@rwest.io> |
date: | Sun, 29 Sep 2024 22:44:52 -0400 |
permissions: | -rw-r--r-- |
description: | evdev/kbd fully operational, rustls and blake3 cleanups |
222 | 1 | ;;; std/os.lisp --- OS interop definitions |
2 | ||
282 | 3 | ;; UNIX only. |
222 | 4 | |
5 | ;;; Code: |
|
291 | 6 | (in-package :std/os) |
222 | 7 | (require 'sb-posix) |
8 | ||
9 | (defun list-all-users () |
|
10 | "List all users via passwd. (uid gid name home shell comment)" |
|
11 | (let ((r nil)) |
|
12 | (sb-posix:do-passwds (u r) |
|
13 | (push (list (sb-posix:passwd-uid u) |
|
14 | (sb-posix:passwd-gid u) |
|
15 | (sb-posix:passwd-name u) |
|
16 | (sb-posix:passwd-dir u) |
|
17 | (sb-posix:passwd-shell u) |
|
18 | (sb-posix:passwd-gecos u)) |
|
19 | r)) |
|
20 | r)) |
|
21 | ||
22 | (defun list-all-groups () |
|
23 | "List all groups. (gid name mem)" |
|
24 | (let ((r nil)) |
|
25 | (sb-posix:do-groups (g r) (push (list (sb-posix:group-gid g) |
|
26 | (sb-posix:group-name g) |
|
27 | (sb-posix:group-mem g)) |
|
28 | r)))) |
|
589 | 29 | |
30 | (defmacro with-umask (mask &body body) |
|
31 | "Temporarily set the system-wide umask for the extent of BODY." |
|
32 | (with-gensyms (umask) |
|
33 | `(let ((,umask (sb-posix:umask ,mask))) |
|
34 | (unwind-protect (progn ,@body) |
|
35 | (sb-posix:umask ,umask))))) |
|
36 | ||
37 | ;; (with-umask #o22 nil) |
|
685
ebe3315b7add
evdev/kbd fully operational, rustls and blake3 cleanups
Richard Westhaver <ellis@rwest.io>
parents:
589
diff
changeset
|
38 | |
ebe3315b7add
evdev/kbd fully operational, rustls and blake3 cleanups
Richard Westhaver <ellis@rwest.io>
parents:
589
diff
changeset
|
39 | (defmacro with-fd ((fvar fname &key (flags #.sb-posix:o-rdonly) (close t)) &body body) |
ebe3315b7add
evdev/kbd fully operational, rustls and blake3 cleanups
Richard Westhaver <ellis@rwest.io>
parents:
589
diff
changeset
|
40 | `(let* ((,fvar (sb-posix:open ,fname ,flags))) |
ebe3315b7add
evdev/kbd fully operational, rustls and blake3 cleanups
Richard Westhaver <ellis@rwest.io>
parents:
589
diff
changeset
|
41 | (unwind-protect (progn ,@body) |
ebe3315b7add
evdev/kbd fully operational, rustls and blake3 cleanups
Richard Westhaver <ellis@rwest.io>
parents:
589
diff
changeset
|
42 | ,@(when close `(sb-posix:close ,fvar))))) |