From dd44f19023f4cc9a70b431aff999c9a771b364b1 Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Tue, 3 May 2022 16:02:02 -0700 Subject: OS:TYPECASE, OS:DEBIAN-SUITE-CASE: support otherwise clauses Signed-off-by: Sean Whitton --- src/property/os.lisp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/property') 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) -- cgit v1.2.3