diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2023-09-13 00:01:28 +0200 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2023-09-13 00:01:28 +0200 |
commit | a82b6c772089aa46e30c6c89ef48f514294df3cb (patch) | |
tree | e25d9b6fd1fefe8b6ac293a5c0b53293872a8f54 /module/xdg | |
parent | Add basic documentation for lens. (diff) | |
parent | Even more documentation. (diff) | |
download | calp-a82b6c772089aa46e30c6c89ef48f514294df3cb.tar.gz calp-a82b6c772089aa46e30c6c89ef48f514294df3cb.tar.xz |
Merge branch 'next' into datarewrite-structures
Diffstat (limited to '')
-rw-r--r-- | module/xdg/basedir.scm | 43 |
1 files changed, 25 insertions, 18 deletions
diff --git a/module/xdg/basedir.scm b/module/xdg/basedir.scm index 92a5c7d9..f4e7b89b 100644 --- a/module/xdg/basedir.scm +++ b/module/xdg/basedir.scm @@ -3,59 +3,66 @@ ;;; Code: (define-module (xdg basedir) - :export (sysconfdir runtime-dir - data-home config-home cache-home + :export (runtime-dir + data-home config-home state-home cache-home data-dirs config-dirs)) +;;; Check if an environment variable is set to a non-empty value. +(define (set? var) + (cond ((getenv var) + => (lambda (s) + (if (string-null? s) + #f s))) + (else #f))) + ;;; XDG_DATA_HOME ;;; $HOME/.local/share (define (data-home) - (or (getenv "XDG_DATA_HOME") + (or (set? "XDG_DATA_HOME") (string-append (getenv "HOME") "/.local/share"))) ;;; XDG_CONFIG_HOME ;;; $HOME/.config (define (config-home) - (or (getenv "XDG_CONFIG_HOME") + (or (set? "XDG_CONFIG_HOME") (string-append (getenv "HOME") "/.config"))) +;;; XDG_STATE_HOME +;;; $HOME/.local/state +(define (state-home) + (or (set? "XDG_STATE_HOME") + (string-append (getenv "HOME") "/.local/state"))) + ;;; XDG_DATA_DIRS ;;; colon (:) sepparated, in addition to XDG_DATA_HOME ;;; /usr/local/share/:/usr/share/ (define (data-dirs) - (let ((str (getenv "XDG_DATA_DIRS"))) + (let ((str (set? "XDG_DATA_DIRS"))) (if str - (parse-path str) + (string-split str #\:) '("/usr/local/share" "/usr/share")))) -;;; sysconfdir -;;; /etc -;;; Techincly not part of the standard, but it's mentioned -(define (sysconfdir) - (or (getenv "sysconfdir") - "/etc")) - - ;;; XDG_CONFIG_DIRS ;;; colon (:) separated, in adddition to XDG_CONFIG_HOME ;;; /etc/xdg (define (config-dirs) - (let ((str (getenv "XDG_CONFIG_DIRS"))) + (let ((str (set? "XDG_CONFIG_DIRS"))) (if str (string-split str #\:) - (list (string-append sysconfdir "/xdg"))))) + '("/etc/xdg")))) ;;; XDG_CACHE_HOME ;;; $HOME/.cache (define (cache-home) - (or (getenv "XDG_CACHE_HOME") + (or (set? "XDG_CACHE_HOME") (string-append (getenv "HOME") "/.cache"))) ;;; XDG_RUNTIME_DIR ;;; Default to /tmp or /tmp/$(uid), and raise a warning (define (runtime-dir) - (or (getenv "XDG_RUNTIME_DIR") + (or (set? "XDG_RUNTIME_DIR") (begin (display "WARNING: XDG_RUNTIME_DIR unset, defaulting to /tmp\n" (current-error-port)) "/tmp"))) + |