From: <cli...@li...> - 2008-12-31 12:07:32
|
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/doc impext.xml,1.558,1.559 (Sam Steingold) 2. clisp/src ChangeLog,1.6754,1.6755 (Sam Steingold) 3. clisp/modules/rawsock rawsock.c, 1.113, 1.114 sock.lisp, 1.39, 1.40 test.tst, 1.56, 1.57 (Sam Steingold) 4. clisp/src clos-genfun2b.lisp,1.17,1.18 (Bruno Haible) 5. clisp/src control.d,1.159,1.160 (Bruno Haible) 6. clisp/src eval.d,1.264,1.265 (Sam Steingold) ---------------------------------------------------------------------- Message: 1 Date: Tue, 30 Dec 2008 17:05:34 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/doc impext.xml,1.558,1.559 To: cli...@li... Message-ID: <E1L...@dd...> Update of /cvsroot/clisp/clisp/doc In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv10073/doc Modified Files: impext.xml Log Message: (so-status): mention the possibility of a stream-error and refer to tests/econnreset.lisp Index: impext.xml =================================================================== RCS file: /cvsroot/clisp/clisp/doc/impext.xml,v retrieving revision 1.558 retrieving revision 1.559 diff -u -d -r1.558 -r1.559 --- impext.xml 18 Dec 2008 14:21:32 -0000 1.558 +++ impext.xml 30 Dec 2008 17:05:32 -0000 1.559 @@ -4566,6 +4566,9 @@ return, then the second value is positive (this is the reason &nil; is ¬-e; treated as an empty &list-t;, but as an invalid argument).</simpara> + <simpara>Note that &so-status; may &signal; a &stream-error-t;. + This happens if the &socket-stream; receives an <code>RST</code> packet, + see <filename role="clisp-cvs">tests/econnreset.lisp</filename>.</simpara> <simpara>This is the interface to <function role="unix">select</function> (on some platforms, <function role="unix">poll</function>), so it will work on any &clisp; &stream-t; which is based on a ------------------------------ Message: 2 Date: Tue, 30 Dec 2008 17:48:40 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/src ChangeLog,1.6754,1.6755 To: cli...@li... Message-ID: <E1L...@dd...> Update of /cvsroot/clisp/clisp/src In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv12673/src Modified Files: ChangeLog Log Message: * modules/rawsock/sock.lisp (failure, rawsock-error): new conditions (eai): inherit from FAILURE * modules/rawsock/rawsock.c (rawsock_error): signal RAWSOCK-ERROR (SYSCALL): use it Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.6754 retrieving revision 1.6755 diff -u -d -r1.6754 -r1.6755 --- ChangeLog 30 Dec 2008 16:54:05 -0000 1.6754 +++ ChangeLog 30 Dec 2008 17:48:38 -0000 1.6755 @@ -1,5 +1,12 @@ 2008-12-30 Sam Steingold <sd...@gn...> + * modules/rawsock/sock.lisp (failure, rawsock-error): new conditions + (eai): inherit from FAILURE + * modules/rawsock/rawsock.c (rawsock_error): signal RAWSOCK-ERROR + (SYSCALL): use it + +2008-12-30 Sam Steingold <sd...@gn...> + * unixaux.d (fd_read): when errno is ECONNRESET, close fd to avoid SIGPIPE on further accesses (see tests/econnreset.lisp) Reported by Don Cohen ------------------------------ Message: 3 Date: Tue, 30 Dec 2008 17:48:40 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/modules/rawsock rawsock.c, 1.113, 1.114 sock.lisp, 1.39, 1.40 test.tst, 1.56, 1.57 To: cli...@li... Message-ID: <E1L...@dd...> Update of /cvsroot/clisp/clisp/modules/rawsock In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv12673/modules/rawsock Modified Files: rawsock.c sock.lisp test.tst Log Message: * modules/rawsock/sock.lisp (failure, rawsock-error): new conditions (eai): inherit from FAILURE * modules/rawsock/rawsock.c (rawsock_error): signal RAWSOCK-ERROR (SYSCALL): use it Index: rawsock.c =================================================================== RCS file: /cvsroot/clisp/clisp/modules/rawsock/rawsock.c,v retrieving revision 1.113 retrieving revision 1.114 diff -u -d -r1.113 -r1.114 --- rawsock.c 30 Dec 2008 15:08:01 -0000 1.113 +++ rawsock.c 30 Dec 2008 17:48:38 -0000 1.114 @@ -287,13 +287,28 @@ #define begin_sock_call() START_WRITING_TO_SUBPROCESS; begin_blocking_system_call() #define end_sock_call() end_blocking_system_call(); STOP_WRITING_TO_SUBPROCESS +/* report error on the given socket or OS_error if socket<0 */ +nonreturning_function(static, rawsock_error, (int socket)) { + if (socket < 0) OS_error(); + begin_system_call(); { + int ecode = errno; + char *msg = strerror(ecode); + end_system_call(); + pushSTACK(`RAWSOCK::RAWSOCK-ERROR`); /* error type */ + pushSTACK(S(Kcode)); + pushSTACK(fixnum(errno)); funcall(`OS::ERRNO`,1); pushSTACK(value1); + pushSTACK(`:MESSAGE`); pushSTACK(safe_to_string(msg)); + pushSTACK(`:SOCKET`); pushSTACK(fixnum(socket)); + funcall(S(make_instance),7); + } + pushSTACK(value1); funcall(S(error),1); + NOTREACHED; +} + /* invoke system call C, place return value in R, report error on socket S */ -#define SYSCALL(r,s,c) \ - do { begin_sock_call(); r = c; end_sock_call(); \ - if (r == -1) { \ - if (s<=0) OS_error(); \ - else OS_file_error(fixnum(s)); \ - } \ +#define SYSCALL(r,s,c) \ + do { begin_sock_call(); r = c; end_sock_call(); \ + if (r == -1) rawsock_error(s); \ } while(0) /* ================== arpa/inet.h interface ================== */ @@ -789,7 +804,7 @@ end_system_call(); pushSTACK(`RAWSOCK::EAI`); /* error type */ pushSTACK(S(Kcode)); pushSTACK(check_gai_ecode_reverse(ecode)); - pushSTACK(`:MESSAGE`); pushSTACK(asciz_to_string(msg,GLO(misc_encoding))); + pushSTACK(`:MESSAGE`); pushSTACK(safe_to_string(msg)); funcall(S(make_instance),5); pushSTACK(value1); funcall(S(error),1); NOTREACHED; Index: test.tst =================================================================== RCS file: /cvsroot/clisp/clisp/modules/rawsock/test.tst,v retrieving revision 1.56 retrieving revision 1.57 diff -u -d -r1.56 -r1.57 --- test.tst 15 Dec 2008 15:24:06 -0000 1.56 +++ test.tst 30 Dec 2008 17:48:38 -0000 1.57 @@ -92,7 +92,7 @@ (setq size len) (show (list len sa-len sa (subseq ve 0 len)) :pretty t))) (assert (eq status (show (socket:socket-status so)))) - (rawsock:sock-close *sock*) + (rawsock:sock-close so) size) (defun my-bind (sock sa) (handler-case (rawsock:bind sock sa) @@ -152,6 +152,16 @@ (ext:socket-status *sock*) :OUTPUT (ext:socket-stream-shutdown *sock* :io) NIL + +(block foo + (handler-bind ((rawsock:rawsock-error + (lambda (e) + (princ-error e) + (return-from foo (= (rawsock:rawsock-error-socket e) + *sock*))))) + (rawsock:sock-write *sock* #A((UNSIGNED-BYTE 8) (2) (1 2))))) +T + (rawsock:sock-close *sock*) 0 ;; re-create the socket after it has been closed Index: sock.lisp =================================================================== RCS file: /cvsroot/clisp/clisp/modules/rawsock/sock.lisp,v retrieving revision 1.39 retrieving revision 1.40 diff -u -d -r1.39 -r1.40 --- sock.lisp 12 Nov 2008 04:54:48 -0000 1.39 +++ sock.lisp 30 Dec 2008 17:48:38 -0000 1.40 @@ -17,6 +17,8 @@ #:sockaddr #:make-sockaddr #:sockaddr-family #:sockaddr-p #:htonl #:htons #:ntohl #:ntohs #:convert-address #:if-name-index #:configdev #:ipcsum #:icmpcsum #:tcpcsum #:udpcsum #:ifaddrs + #:failure #:failure-code #:failure-message #:eai + #:rawsock-error #:rawsock-error-socket #:open-unix-socket #:open-unix-socket-stream)) (in-package "RAWSOCK") @@ -107,9 +109,22 @@ (multiple-value-bind (node service) (rawsock:getnameinfo addr) (format out "sockaddr node: ~S, service: ~S~%" node service)))) -(define-condition eai (error) - (($ecode :reader eai-code :initarg :code) - ($message :reader eai-message :initarg :message)) - (:documentation "getaddrinfo()/getnameinfo() error, see <netdb.h>") +(defun report-failure (c out) + (format out "[~S]: ~A" (failure-code c) (failure-message c))) + +(define-condition failure (error) + (($ecode :reader failure-code :initarg :code) + ($message :reader failure-message :initarg :message)) + (:documentation "OS error") + (:report report-failure)) + +(define-condition eai (failure) () + (:documentation "getaddrinfo()/getnameinfo() error, see <netdb.h>")) + +(define-condition rawsock-error (failure) + (($socket :reader rawsock-error-socket :initarg :socket)) + (:documentation "OS error on a raw socket") (:report (lambda (c out) - (format out "[~S]: ~A" (eai-code c) (eai-message c))))) + (format out "OS Error on socket ~S: " + (rawsock-error-socket c)) + (report-failure c out)))) ------------------------------ Message: 4 Date: Tue, 30 Dec 2008 20:26:27 +0000 From: Bruno Haible <ha...@us...> Subject: clisp/src clos-genfun2b.lisp,1.17,1.18 To: cli...@li... Message-ID: <E1L...@dd...> Update of /cvsroot/clisp/clisp/src In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv22241 Modified Files: clos-genfun2b.lisp Log Message: Tweak upper/lowercase in macros. Index: clos-genfun2b.lisp =================================================================== RCS file: /cvsroot/clisp/clisp/src/clos-genfun2b.lisp,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- clos-genfun2b.lisp 22 Feb 2008 18:29:40 -0000 1.17 +++ clos-genfun2b.lisp 30 Dec 2008 20:26:25 -0000 1.18 @@ -142,7 +142,7 @@ (multiple-value-bind (bindings lambdabody) (compute-dispatch gf) (let ((preliminary (eval `(LET ,bindings - (DECLARE ,@(safe-gf-declspecs gf) ,@*COMPILE-NO-JITC*) + (DECLARE ,@(safe-gf-declspecs gf) ,@*compile-no-jitc*) (%GENERIC-FUNCTION-LAMBDA ,@lambdabody))))) (assert (<= (sys::%record-length preliminary) 3)) preliminary))) ------------------------------ Message: 5 Date: Tue, 30 Dec 2008 20:38:29 +0000 From: Bruno Haible <ha...@us...> Subject: clisp/src control.d,1.159,1.160 To: cli...@li... Message-ID: <E1L...@dd...> Update of /cvsroot/clisp/clisp/src In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv23461 Modified Files: control.d Log Message: Fix comment. Index: control.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/control.d,v retrieving revision 1.159 retrieving revision 1.160 diff -u -d -r1.159 -r1.160 --- control.d 29 Oct 2008 14:49:31 -0000 1.159 +++ control.d 30 Dec 2008 20:38:27 -0000 1.160 @@ -367,7 +367,7 @@ /* UP for LET, LET*, LOCALLY, MULTIPLE-VALUE-BIND, SYMBOL-MACROLET: Compiles the current form and executes it in compiled state. - compile_form() + compile_eval_form() > in STACK: EVAL-frame with the form < mv_count/mv_space: Values can trigger GC */ ------------------------------ Message: 6 Date: Tue, 30 Dec 2008 20:41:23 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/src eval.d,1.264,1.265 To: cli...@li... Message-ID: <E1L...@dd...> Update of /cvsroot/clisp/clisp/src In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv23721/src Modified Files: eval.d Log Message: liste->list Index: eval.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/eval.d,v retrieving revision 1.264 retrieving revision 1.265 diff -u -d -r1.264 -r1.265 --- eval.d 29 Nov 2008 14:04:57 -0000 1.264 +++ eval.d 30 Dec 2008 20:41:21 -0000 1.265 @@ -1304,7 +1304,7 @@ var object env = env5->block_env; var uintL depth = 0; /* recursion depth := 0 */ /* Pseudo-Recursion: nests a BLOCK_ENV. */ - /* Input: env, a BLOCK_ENV. Output: env, with Aliste. */ + /* Input: env, a BLOCK_ENV. Output: env, with Alist. */ nest_block_start: { /* start of recursion */ var gcv_object_t* FRAME; if (framepointerp(env)) { @@ -1328,7 +1328,7 @@ Cdr(new_cons) = frame; pushSTACK(new_cons); } - /* and prepend to the Aliste: */ + /* and prepend to the Alist: */ env = allocate_cons(); Car(env) = popSTACK(); /* new_cons */ Cdr(env) = popSTACK(); /* previous Alist */ @@ -1527,7 +1527,7 @@ { pushSTACK(formlist); /* store formlist for error message */ pushSTACK(NIL); /* preliminary Doc-String */ - pushSTACK(NIL); /* start of decl-spec-Liste */ + pushSTACK(NIL); /* start of decl-spec-List */ /* stack layout: formlist, docstring, declspecs. */ var bool compile_decl = false; /* flag: (COMPILE)-declaration occurred */ var object body = formlist; /* rest of the form-list */ @@ -1576,7 +1576,7 @@ } } value1 = body; - value2 = nreverse(popSTACK()); /* decl-spec-Liste */ + value2 = nreverse(popSTACK()); /* decl-spec-List */ value3 = popSTACK(); /* Doc-String */ skipSTACK(1); return compile_decl; ------------------------------ ------------------------------------------------------------------------------ ------------------------------ _______________________________________________ clisp-cvs mailing list cli...@li... https://lists.sourceforge.net/lists/listinfo/clisp-cvs End of clisp-cvs Digest, Vol 32, Issue 38 ***************************************** |