diff options
author | Mathieu Lirzin <mthl@gnu.org> | 2018-03-26 22:42:26 +0200 |
---|---|---|
committer | Mathieu Lirzin <mthl@gnu.org> | 2018-03-27 03:13:14 +0200 |
commit | 15fa52f7ec85b3c2cb9f00ec8609dfe63a9ea9cd (patch) | |
tree | bc17945ecb6e43e003abbe2ee50bf62d34b9e8e0 /src/mcron/job-specifier.scm | |
parent | 56f85cfd8aef4a0f2668c5fa72ae032ff1652c8b (diff) | |
download | mcron-15fa52f7ec85b3c2cb9f00ec8609dfe63a9ea9cd.tar.gz mcron-15fa52f7ec85b3c2cb9f00ec8609dfe63a9ea9cd.tar.bz2 mcron-15fa52f7ec85b3c2cb9f00ec8609dfe63a9ea9cd.zip |
job-specifier: Box 'configuration-user' global variable
* src/mcron/job-specifier.scm (configuration-user): Box it using
SRFI-111 to be explicit about the mutability of this object.
(job): Adapt.
(set-configuration-user): Adapt and use 'get-user'.
* tests/job-specifier.scm ("set-configuration-user: passwd entry")
("set-configuration-user: invalid uid", "set-configuration-user: uid")
("set-configuration-user: invalid spec")
("set-configuration-user: name"): New tests.
Diffstat (limited to 'src/mcron/job-specifier.scm')
-rw-r--r-- | src/mcron/job-specifier.scm | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/mcron/job-specifier.scm b/src/mcron/job-specifier.scm index cbfa2df..120bf99 100644 --- a/src/mcron/job-specifier.scm +++ b/src/mcron/job-specifier.scm @@ -33,6 +33,7 @@ #:use-module (mcron utils) #:use-module (mcron vixie-time) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-111) #:re-export (append-environment-mods) #:export (range next-year-from next-year @@ -186,17 +187,14 @@ go into the list. For example, (range 1 6 2) returns '(1 3 5)." ;; time; a UID is stored with each job and it is that which takes effect when ;; the job actually runs. -(define configuration-user (getpw (getuid))) +(define configuration-user (box (getpw (getuid)))) (define configuration-time ;; Use SOURCE_DATE_EPOCH environment variable to support reproducible tests. (if (getenv "SOURCE_DATE_EPOCH") 0 (current-time))) (define (set-configuration-user user) - (set! configuration-user (if (or (string? user) - (integer? user)) - (getpw user) - user))) + (set-box! configuration-user (get-user user))) (define (set-configuration-time time) (set! configuration-time time)) @@ -218,7 +216,7 @@ go into the list. For example, (range 1 6 2) returns '(1 3 5)." ;; right at the top of this program). (define* (job time-proc action #:optional displayable - #:key (user configuration-user)) + #:key (user (unbox configuration-user))) (let ((action (cond ((procedure? action) action) ((list? action) (lambda () (primitive-eval action))) ((string? action) (lambda () (system action))) |