From d58e52b0713648dd30d41b41277854a935d8d15a Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe Date: Tue, 21 Sep 2021 20:35:49 +0000 Subject: installer: keymap: Fix optional fields handling. Fixes: . The keymap xml contains optional shortDescription and description fields. The assoc-ref call on those fields can return false, handle it correctly. * gnu/installer/keymap.scm (xkb-rules->models+layouts): Introduce a new "maybe-empty" helper to deal with optional fields. Use it for shortDescription and description fields. --- gnu/installer/keymap.scm | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'gnu') diff --git a/gnu/installer/keymap.scm b/gnu/installer/keymap.scm index c42b308009..83b65a0427 100644 --- a/gnu/installer/keymap.scm +++ b/gnu/installer/keymap.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2018 Mathieu Othacehe +;;; Copyright © 2018, 2021 Mathieu Othacehe ;;; Copyright © 2020 Florian Pelz ;;; ;;; This file is part of GNU Guix. @@ -79,6 +79,11 @@ "Parse FILE and return two values, the list of supported X11-KEYMAP-MODEL and X11-KEYMAP-LAYOUT records. FILE is an XML file from the X Keyboard Configuration Database, describing possible XKB configurations." + (define maybe-empty + (match-lambda + ((x) x) + (#f ""))) + (define (model m) (sxml-match m [(model @@ -108,7 +113,7 @@ Configuration Database, describing possible XKB configurations." . ,rest-variant)) (x11-keymap-variant (name name) - (description (car + (description (maybe-empty (assoc-ref rest-variant 'description))))])) (define (layout l) @@ -120,9 +125,9 @@ Configuration Database, describing possible XKB configurations." (variantList ,[variant -> v] ...)) (x11-keymap-layout (name name) - (synopsis (car + (synopsis (maybe-empty (assoc-ref rest-layout 'shortDescription))) - (description (car + (description (maybe-empty (assoc-ref rest-layout 'description))) (variants (list v ...)))] [(layout @@ -131,9 +136,9 @@ Configuration Database, describing possible XKB configurations." . ,rest-layout)) (x11-keymap-layout (name name) - (synopsis (car + (synopsis (maybe-empty (assoc-ref rest-layout 'shortDescription))) - (description (car + (description (maybe-empty (assoc-ref rest-layout 'description))) (variants '()))])) -- cgit v1.2.3