[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[no subject]
From: |
Ludovic Courtès |
Date: |
Tue, 28 Nov 2023 10:26:20 -0500 (EST) |
branch: master
commit a68b3d71221195d09bac3fb78c35bebb3579fdb9
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Mon Nov 27 15:19:33 2023 +0100
utils: Add ‘gather-user-privileges’.
* src/cuirass/scripts/remote-server.scm (gather-user-privileges): Move to…
* src/cuirass/utils.scm (gather-user-privileges): … here.
---
src/cuirass/scripts/remote-server.scm | 12 ------------
src/cuirass/utils.scm | 17 ++++++++++++++++-
2 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/src/cuirass/scripts/remote-server.scm
b/src/cuirass/scripts/remote-server.scm
index aaf0041..485fa95 100644
--- a/src/cuirass/scripts/remote-server.scm
+++ b/src/cuirass/scripts/remote-server.scm
@@ -589,18 +589,6 @@ exiting."
(terminate-helper-processes)
(primitive-exit 1))))
-(define (gather-user-privileges user)
- "switch to the identity of user, a user name."
- (catch 'misc-error
- (lambda ()
- (let ((user (getpw user)))
- (setgroups #())
- (setgid (passwd:gid user))
- (setuid (passwd:uid user))))
- (lambda (key proc message args . rest)
- (leave (G_ "user '~a' not found: ~a~%")
- user (apply format #f message args)))))
-
(define (cuirass-remote-server args)
(signal-handler)
(with-error-handling
diff --git a/src/cuirass/utils.scm b/src/cuirass/utils.scm
index a55a795..1ef5eae 100644
--- a/src/cuirass/utils.scm
+++ b/src/cuirass/utils.scm
@@ -28,6 +28,8 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-19)
#:use-module (srfi srfi-71)
+ #:autoload (guix i18n) (G_)
+ #:autoload (guix ui) (leave)
#:use-module (fibers)
#:use-module (fibers channels)
#:use-module (fibers operations)
@@ -44,7 +46,8 @@
date->rfc822-str
random-string
- call-with-time))
+ call-with-time
+ gather-user-privileges))
(define-syntax-rule (define-enumeration name (symbol value) ...)
"Define an 'enum' type with the given SYMBOL/VALUE pairs. NAME is defined a
@@ -217,3 +220,15 @@ values."
(result (call-with-values thunk list))
(end (current-time time-monotonic)))
(apply kont (time-difference end start) result)))
+
+(define (gather-user-privileges user)
+ "switch to the identity of user, a user name."
+ (catch 'misc-error
+ (lambda ()
+ (let ((user (getpw user)))
+ (setgroups #())
+ (setgid (passwd:gid user))
+ (setuid (passwd:uid user))))
+ (lambda (key proc message args . rest)
+ (leave (G_ "user '~a' not found: ~a~%")
+ user (apply format #f message args)))))