diff options
author | Alex Shinn <alexshinn@gmail.com> | 2024-02-23 15:16:22 +0900 |
---|---|---|
committer | Alex Shinn <alexshinn@gmail.com> | 2024-02-23 15:16:22 +0900 |
commit | 19c7d4fec2932d90d3bcb0f2a296e963b264d298 (patch) | |
tree | 9911793913d578a716bf70f94d56e53ca95044f6 | |
parent | 56ef426dfa8d0a19dc2f76d52f432b21af1c6286 (diff) |
-rw-r--r-- | lib/chibi/system.sld | 13 | ||||
-rw-r--r-- | lib/chibi/tar.scm | 4 |
2 files changed, 9 insertions, 8 deletions
diff --git a/lib/chibi/system.sld b/lib/chibi/system.sld index 4dd4b6b1..e1b1faae 100644 --- a/lib/chibi/system.sld +++ b/lib/chibi/system.sld @@ -17,11 +17,12 @@ (else (export user-information group-information) (body + (define (safe-car x) (and (pair? x) (car x))) (define (user-information user) - (car (if (string? user) - (getpwnam_r user (make-string 1024)) - (getpwuid_r user (make-string 1024))))) + (safe-car (if (string? user) + (getpwnam_r user (make-string 1024)) + (getpwuid_r user (make-string 1024))))) (define (group-information group) - (car (if (string? group) - (getgrnam_r group (make-string 1024)) - (getgrgid_r group (make-string 1024))))))))) + (safe-car (if (string? group) + (getgrnam_r group (make-string 1024)) + (getgrgid_r group (make-string 1024))))))))) diff --git a/lib/chibi/tar.scm b/lib/chibi/tar.scm index 0fe6a729..c221c512 100644 --- a/lib/chibi/tar.scm +++ b/lib/chibi/tar.scm @@ -24,9 +24,9 @@ #u8(0 0 0 0 0 0 0 0 0 0 0 0))) (define (file-owner-or-nobody uid) - (or (user-name (user-information uid)) "nobody")) + (or (cond ((user-information uid) => user-name) (else #f)) "nobody")) (define (file-group-or-nobody gid) - (or (group-name (group-information gid)) "nobody")) + (or (cond ((group-information gid) => group-name) (else #f)) "nobody")) (define (make-tar file mode uid gid size mod-time type . o) (let* ((link (if (pair? o) (car o) "")) |