aboutsummaryrefslogtreecommitdiff
path: root/src/property
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2022-05-03 16:02:02 -0700
committerSean Whitton <spwhitton@spwhitton.name>2022-05-03 16:02:02 -0700
commitdd44f19023f4cc9a70b431aff999c9a771b364b1 (patch)
tree2ca823a158782e85340182ef03e92d86aba2058a /src/property
parent70833c2b02fba0506be10fb1610d0252ed9e0df1 (diff)
downloadconsfigurator-dd44f19023f4cc9a70b431aff999c9a771b364b1.tar.gz
OS:TYPECASE, OS:DEBIAN-SUITE-CASE: support otherwise clauses
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Diffstat (limited to 'src/property')
-rw-r--r--src/property/os.lisp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/property/os.lisp b/src/property/os.lisp
index 58741aa..0875db5 100644
--- a/src/property/os.lisp
+++ b/src/property/os.lisp
@@ -94,10 +94,12 @@
(defun case-host (host fn)
(funcall fn (if host (get-hostattrs-car :os host) (get-hostattrs-car :os))))
-(defun case-choose (host cases reader pred)
+(defun case-choose (host cases reader pred &optional default)
(loop with slot = (case-host host reader)
for (case propapp) on cases by #'cddr
- when (funcall pred slot case) return propapp))
+ when (or (and default (eql case t))
+ (funcall pred slot case))
+ return propapp))
(defmacro define-host-case-combinators
(name ename reader pred convert-key error-control)
@@ -112,7 +114,7 @@
`(progn
(define-choosing-property-combinator ,case* (host &rest cases)
:type (cases-type cases)
- :choose (case-choose host cases ,reader ,pred))
+ :choose (case-choose host cases ,reader ,pred t))
(define-choosing-property-combinator ,ecase* (host &rest cases)
:type (cases-type cases)