Subject: [bug#71735] [PATCH] services: mpd: fix log to file

From: Yarl Baudig <[email-masked]>
Date: Sun, 23 Jun 2024 16:15:58 +0200

(match value (%unset-value ...)) is equivalent here to
(match value (_ ...)). Even if you set 'log-file to some path, it's always
"syslog" in the configuration file.

* gnu/services/audio.scm (mpd): fix buggy 'match'.
---
 gnu/services/audio.scm | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/gnu/services/audio.scm b/gnu/services/audio.scm
index ae991ced4d..2c8af138e7 100644
--- a/gnu/services/audio.scm
+++ b/gnu/services/audio.scm
@@ -251,16 +251,12 @@ (define (mpd-group-sanitizer value)
          (configuration-field-error #f 'group value))))
 
 (define (mpd-log-file-sanitizer value)
-  (match value
-    (%unset-value
-     ;; XXX: While leaving the 'sys_log' option out of the mpd.conf file is
-     ;; supposed to cause logging to happen via systemd (elogind provides a
-     ;; compatible interface), this doesn't work (nothing gets logged); use
-     ;; syslog instead.
-     "syslog")
-    ((? string?)
-     value)
-    (_ (configuration-field-error #f 'log-file value))))
+  ;; XXX: While leaving the 'sys_log' option out of the mpd.conf file is
+  ;; supposed to cause logging to happen via systemd (elogind provides a
+  ;; compatible interface), this doesn't work (nothing gets logged); use
+  ;; syslog instead.
+  (let ((value (maybe-value value "syslog")))
+    (if (string? value) value (configuration-field-error #f 'log-file value))))
 
 ;;;
 
-- 
2.45.1