From: <cli...@li...> - 2009-12-08 12:04:35
|
Send clisp-cvs mailing list submissions to cli...@li... To subscribe or unsubscribe via the World Wide Web, visit https://lists.sourceforge.net/lists/listinfo/clisp-cvs or, via email, send a message with subject or body 'help' to cli...@li... You can reach the person managing the list at cli...@li... When replying, please edit your Subject line so it is more specific than "Re: Contents of clisp-cvs digest..." CLISP CVS commits for today Today's Topics: 1. clisp/modules/rawsock/demos sniffer.lisp,1.4,1.5 (Sam Steingold) ---------------------------------------------------------------------- Message: 1 Date: Mon, 07 Dec 2009 15:51:57 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/modules/rawsock/demos sniffer.lisp,1.4,1.5 To: cli...@li... Message-ID: <E1N...@sf...> Update of /cvsroot/clisp/clisp/modules/rawsock/demos In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv26252 Modified Files: sniffer.lisp Log Message: use read-from-string instead of parse-integer for argument parsing Index: sniffer.lisp =================================================================== RCS file: /cvsroot/clisp/clisp/modules/rawsock/demos/sniffer.lisp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- sniffer.lisp 7 Dec 2009 02:18:29 -0000 1.4 +++ sniffer.lisp 7 Dec 2009 15:51:55 -0000 1.5 @@ -9,11 +9,11 @@ ;; --- more or less generic command line argument parsing (defparameter *arg-table* (make-hash-table :test 'equal :initial-contents - '(("-domain" :INET "KEYWORD") - ("-type" :PACKET "KEYWORD") - ("-protocol" #x300 "KEYWORD") - ("-repeat" 10) - ("-bufsiz" 1518))) + '(("-domain" :INET "domain argument for socket(2)") + ("-type" :PACKET "type argument for socket(2)") + ("-protocol" #x300 "protocol argument for socket(2)") + ("-repeat" 10 "how many times to call rcvfrom(2)") + ("-bufsiz" 1518 "the buffer size for rcvfrom(2)"))) "Default argument values.") (defun parse-args (&optional (args *args*)) @@ -24,7 +24,8 @@ (when (string= "-help" key) (format t "Packet sniffer~%Arguments:~%") (maphash (lambda (key val) - (format t " ~A defaults to ~S~@[ (if not an integer, will be looked up in ~{~A~^, ~})~]~%" key (car val) (cdr val))) + (format t " ~A ~A (default: ~S)~%" + key (second val) (first val))) *arg-table*) (ext:quit 1)) (unless val (error "Odd number of arguments: ~S" args)) @@ -40,12 +41,9 @@ (let ((arg (gethash opt ht)) (dfl (gethash opt *arg-table*))) (if arg - (or (parse-integer arg :junk-allowed t) - (dolist (pack (cdr dfl)) - (let ((s (find-symbol (string-upcase arg) pack))) - (when s (return s)))) - (error "Invalid ~S: ~S" opt arg)) - (car dfl)))) + (handler-case (read-from-string arg) + (error (c) (error "Invalid ~S argument: ~S: ~A" opt arg c))) + (first dfl)))) ;; --- the sniffer proper (defun my-rcvfrom (socket buffer device) ------------------------------ ------------------------------------------------------------------------------ Return on Information: Google Enterprise Search pays you back Get the facts. http://p.sf.net/sfu/google-dev2dev ------------------------------ _______________________________________________ clisp-cvs mailing list cli...@li... https://lists.sourceforge.net/lists/listinfo/clisp-cvs End of clisp-cvs Digest, Vol 44, Issue 6 **************************************** |