From 27647fae40ac316aee4f6bf87e9186cf05110d84 Mon Sep 17 00:00:00 2001 From: Stelian Ionescu Date: Sat, 29 Dec 2007 05:24:42 +0100 Subject: [PATCH] Improve LOOKUP-INTERFACE. Signed-off-by: Stelian Ionescu --- sockets/iface.lisp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sockets/iface.lisp b/sockets/iface.lisp index 0d42122..df71bb0 100644 --- a/sockets/iface.lisp +++ b/sockets/iface.lisp @@ -70,7 +70,6 @@ :finally (if-freenameindex ifptr))))) (defun get-interface-by-index (index) - (check-type index unsigned-byte "a non-negative integer") (with-foreign-object (buff :uint8 ifnamesize) (let (retval) (handler-case @@ -83,7 +82,6 @@ (make-interface (copy-seq retval) index)))) (defun get-interface-by-name (name) - (check-type name string "a string") (let (retval) (handler-case (setf retval (if-nametoindex name)) @@ -94,11 +92,13 @@ :name name))) (make-interface (copy-seq name) retval))) -;;; Why bother parsing "22" as a number? --luis (defun lookup-interface (iface) "Lookup an interface by name or index. UNKNOWN-INTERFACE is signalled if an interface is not found." - (let ((parsed-number (parse-number-or-nil iface))) - (if parsed-number - (get-interface-by-index parsed-number) - (get-interface-by-name iface)))) + (check-type iface (or unsigned-byte string keyword) "non-negative integer, a string or a keyword") + (let ((iface (or (and (keywordp iface) (string-downcase iface)) + (parse-number-or-nil iface) + iface))) + (etypecase iface + (unsigned-byte (get-interface-by-index iface)) + (string (get-interface-by-name iface))))) -- 2.11.4.GIT