guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dmd] 02/03: services: Use / as the execution directory when $HOME is no


From: Ludovic Courtès
Subject: [dmd] 02/03: services: Use / as the execution directory when $HOME is nonexistent.
Date: Fri, 04 Jul 2014 16:59:48 +0000

civodul pushed a commit to branch master
in repository dmd.

commit 64a6c8c9f791bbe648efabb0fc13020ef0dd572b
Author: Ludovic Courtès <address@hidden>
Date:   Fri Jul 4 15:26:39 2014 +0200

    services: Use / as the execution directory when $HOME is nonexistent.
    
    * modules/dmd/service.scm (default-service-directory): Add
      'ensure-valid' procedure and use it.
    * tests/respawn.sh: Add some debugging output.
---
 modules/dmd/service.scm |   14 ++++++++++----
 tests/respawn.sh        |    4 +++-
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/modules/dmd/service.scm b/modules/dmd/service.scm
index a706358..ffa3a68 100644
--- a/modules/dmd/service.scm
+++ b/modules/dmd/service.scm
@@ -552,12 +552,18 @@
 
 (define (default-service-directory)
   "Return the default current directory from which a service is started."
+  (define (ensure-valid directory)
+    (if (and (file-exists? directory)
+             (file-is-directory? directory))
+        directory
+        "/"))
+
   (if (zero? (getuid))
       "/"
-      (or (getenv "HOME")
-          (and=> (catch-system-error (getpw (getuid)))
-                 passwd:dir)
-          (getcwd))))
+      (ensure-valid (or (getenv "HOME")
+                        (and=> (catch-system-error (getpw (getuid)))
+                               passwd:dir)
+                        (getcwd)))))
 
 (define (default-environment-variables)
   "Return the list of environment variable name/value pairs that should be
diff --git a/tests/respawn.sh b/tests/respawn.sh
index 6a0d88b..d88d33e 100644
--- a/tests/respawn.sh
+++ b/tests/respawn.sh
@@ -29,7 +29,8 @@ pid="t-pid-$$"
 
 deco="deco -s $socket"
 
-trap "rm -f $socket $conf $stamp $log $pid $service1_pid $service2_pid ;
+trap "cat $log || true ;
+  rm -f $socket $conf $stamp $log $pid $service1_pid $service2_pid ;
   test -f $pid && kill \`cat $pid\` || true ;
   test -f $service1_pid && kill \`cat $service1_pid\` || true ;
   test -f $service2_pid && kill \`cat $service2_pid\` || true ;
@@ -90,6 +91,7 @@ dmd_pid="`cat $pid`"
 
 kill -0 $dmd_pid
 test -S "$socket"
+$deco status dmd
 $deco status test1 | grep started
 $deco status test2 | grep started
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]