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

From: Maxim Cournoyer <[email-masked]>
Date: Sun, 23 Jun 2024 21:45:23 -0400

Hi Yarl,

Yarl Baudig <[email-masked]> writes:

> (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.

Interesting!  It seems like using a variable in the pattern doesn't work
as I had expected...  Thanks for the fix.

> * 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))))

Applied, closing!

-- 
Thanks,
Maxim