SummaryRefsLogTreeCommitDiffStats
diff options
context:
space:
mode:
-rw-r--r--src/mcron/base.scm12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/mcron/base.scm b/src/mcron/base.scm
index f7b727d..037a9b7 100644
--- a/src/mcron/base.scm
+++ b/src/mcron/base.scm
@@ -182,7 +182,17 @@ next value."
(λ ()
(setgid (passwd:gid (job:user job)))
(setuid (passwd:uid (job:user job)))
- (chdir (passwd:dir (job:user job)))
+ ;; Handle the case where the home directory points to a nonexistent
+ ;; location, as can be the case when running the job as the "nobody"
+ ;; user.
+ (catch 'system-error
+ (lambda ()
+ (chdir (passwd:dir (job:user job))))
+ (lambda args
+ (let ((errno (system-error-errno args)))
+ (cond
+ ((= ENOENT errno) (chdir "/"))
+ (else (throw 'system-error args))))))
(modify-environment (job:environment job) (job:user job))
((job:action job)))
(λ ()