From: Mathieu Lirzin <mthl@gnu.org>
To: guix-devel@gnu.org
Subject: [PATCH 3/3] support: Rename user-dmddir to %user-shepherd-dir.
Date: Sat, 16 Jan 2016 23:17:41 +0100 [thread overview]
Message-ID: <1452982661-17268-4-git-send-email-mthl@gnu.org> (raw)
In-Reply-To: <1452982661-17268-1-git-send-email-mthl@gnu.org>
[-- Attachment #1: Type: text/plain, Size: 424 bytes --]
* modules/shepherd/support.scm (user-dmddir): Rename to ...
(%user-shepherd-dir): ... this. Honor XDG variables and use
'~/.config/shepherd' as default value. All consumers changed.
(mkdir-p): New procedure. Export it.
(default-config-file): Use it.
(verify-dir): Likewise.
---
modules/shepherd/support.scm | 45 ++++++++++++++++++++++++++++++++++++--------
1 file changed, 37 insertions(+), 8 deletions(-)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0003-support-Rename-user-dmddir-to-user-shepherd-dir.patch --]
[-- Type: text/x-patch; name="0003-support-Rename-user-dmddir-to-user-shepherd-dir.patch", Size: 4042 bytes --]
diff --git a/modules/shepherd/support.scm b/modules/shepherd/support.scm
index b6af5eb..4591e65 100644
--- a/modules/shepherd/support.scm
+++ b/modules/shepherd/support.scm
@@ -32,6 +32,7 @@
with-system-error-handling
EINTR-safe
with-atomic-file-output
+ mkdir-p
l10n
local-output
@@ -155,6 +156,31 @@ output port, and PROC's result is returned."
(lambda (key . args)
(catch-system-error (delete-file template))))))
+(define* (mkdir-p dir #:optional (mode (umask))) ;copied from Guix
+ "Create directory DIR and all its ancestors."
+ (define absolute?
+ (string-prefix? "/" dir))
+
+ (define not-slash
+ (char-set-complement (char-set #\/)))
+
+ (let loop ((components (string-tokenize dir not-slash))
+ (root (if absolute?
+ ""
+ ".")))
+ (match components
+ ((head tail ...)
+ (let ((path (string-append root "/" head)))
+ (catch 'system-error
+ (lambda ()
+ (mkdir path mode)
+ (loop tail path))
+ (lambda args
+ (if (= EEXIST (system-error-errno args))
+ (loop tail path)
+ (apply throw args))))))
+ (() #t))))
+
\f
;; Localized version of STR.
@@ -186,8 +212,11 @@ There is NO WARRANTY, to the extent permitted by law.")))
(false-if-exception (passwd:dir (getpwuid (getuid))))
"/"))
-;; dmd default subdirectory if dmd is run as a normal user.
-(define user-dmddir (string-append user-homedir "/.dmd.d"))
+(define %user-shepherd-dir
+ ;; sheperd default directory if shepherd is run as a normal user.
+ (string-append (or (getenv "XDG_CONFIG_HOME")
+ (string-append user-homedir "/.config"))
+ "/shepherd"))
(define (make-bare-init-file target)
"Return #t if a bare init file was created at TARGET; #f otherwise.
@@ -216,7 +245,7 @@ TARGET should be a string representing a filepath + name."
(define default-logfile
(if (zero? (getuid))
(string-append %localstatedir "/log/shepherd.log")
- (string-append user-dmddir "/shepherd.log")))
+ (string-append %user-shepherd-dir "/shepherd.log")))
;; Configuration file.
(define (default-config-file)
@@ -225,8 +254,8 @@ global system configuration file when running as 'root'. As a side effect,
create a template configuration file if non exists."
(if (zero? (getuid))
(string-append %sysconfdir "/dmdconf.scm")
- (let ((config-file (string-append user-dmddir "/init.scm")))
- (catch-system-error (mkdir user-dmddir))
+ (let ((config-file (string-append %user-shepherd-dir "/init.scm")))
+ (mkdir-p %user-shepherd-dir #o700)
(if (not (file-exists? config-file))
(make-bare-init-file config-file))
config-file)))
@@ -239,7 +268,7 @@ create a template configuration file if non exists."
(define default-socket-dir
(if (zero? (getuid))
%system-socket-dir
- (string-append user-dmddir "/run")))
+ (string-append %user-shepherd-dir "/run")))
;; Unix domain socket for receiving commands in dmd.
(define default-socket-file
@@ -253,7 +282,7 @@ create a template configuration file if non exists."
(define default-persistency-state-file
(if (zero? (getuid))
(string-append %localstatedir "/lib/misc/dmd-state")
- (string-append user-dmddir "/dmd-state")))
+ (string-append %user-shepherd-dir "/dmd-state")))
;; Global variables set from (dmd).
(define persistency #f)
@@ -284,7 +313,7 @@ directory are not checked."
(and (string=? dir default-socket-dir)
;; If it exists already, this is fine, thus ignore errors.
(catch-system-error
- (mkdir default-socket-dir #o700)))
+ (mkdir-p default-socket-dir #o700)))
;; Check for permissions.
(when secure?
(let ((dir-stat (stat dir)))
next prev parent reply other threads:[~2016-01-16 22:18 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-16 22:17 [PATCH 0/3] [Shepherd][PATCH 0/3] Change configuration file Mathieu Lirzin
2016-01-16 22:17 ` [PATCH 1/3] maint: Add .dir-locals.el Mathieu Lirzin
2016-01-17 14:07 ` Ludovic Courtès
2016-01-16 22:17 ` [PATCH 2/3] support: Add a keyword argument '#:secure?' to verify-dir Mathieu Lirzin
2016-01-17 14:08 ` Ludovic Courtès
2016-01-16 22:17 ` Mathieu Lirzin [this message]
2016-01-17 14:05 ` [PATCH 3/3] support: Rename user-dmddir to %user-shepherd-dir Mathieu Lirzin
2016-01-17 20:43 ` Ludovic Courtès
2016-01-17 21:51 ` Mathieu Lirzin
2016-01-18 21:08 ` Ludovic Courtès
2016-01-17 14:19 ` Ludovic Courtès
2016-01-17 20:49 ` Mathieu Lirzin
2016-01-17 21:06 ` Mathieu Lirzin
2016-01-18 20:59 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1452982661-17268-4-git-send-email-mthl@gnu.org \
--to=mthl@gnu.org \
--cc=guix-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.