diff mbox series

[bug#62298,v2,5/8] services: mpd: Fix unintentional API breakage for mixer-type field.

Message ID 12a3b44e8516829fd6ef5db2b5084f7c836b99e2.1679583701.git.mirai@makinata.eu
State New
Headers show
Series [bug#62298,v2,1/8] services: configuration: Add user-defined sanitizer support. | expand

Commit Message

Bruno Victal March 23, 2023, 3:02 p.m. UTC
* gnu/services/audio.scm (mpd-output)[mixer-type]: Use sanitizer to
accept both strings and symbols as values.
---
 gnu/services/audio.scm | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/gnu/services/audio.scm b/gnu/services/audio.scm
index e5b065a479..56ea2f8638 100644
--- a/gnu/services/audio.scm
+++ b/gnu/services/audio.scm
@@ -140,6 +140,11 @@  (define (uglify-field-name field-name)
 (define list-of-symbol?
   (list-of symbol?))
 
+
+;;;
+;;; MPD
+;;;
+
 (define (mpd-serialize-field field-name value)
   (let ((field (if (string? field-name) field-name
                    (uglify-field-name field-name)))
@@ -294,7 +299,17 @@  (define-configuration mpd-output
 for this audio output: the @code{hardware} mixer, the @code{software}
 mixer, the @code{null} mixer (allows setting the volume, but with no
 effect; this can be used as a trick to implement an external mixer
-External Mixer) or no mixer (@code{none}).")
+External Mixer) or no mixer (@code{none})."
+   (sanitizer
+    (lambda (x)  ; TODO: deprecated, remove me later.
+      (cond
+       ((symbol? x)
+        (warning (G_ "symbol value for 'mixer-type' is deprecated, \
+use string instead~%"))
+        (symbol->string x))
+       ((string? x) x)
+       (else
+        (configuration-field-error #f 'mixer-type x))))))
 
   (replay-gain-handler
    maybe-string