From psilord at cs.wisc.edu Wed Mar 3 03:18:31 2010 From: psilord at cs.wisc.edu (Peter Keller) Date: Tue, 2 Mar 2010 21:18:31 -0600 Subject: [iolib-devel] Patch for a nil callback invocation. In-Reply-To: <20100120063326.GA6590@cs.wisc.edu> References: <20100120063326.GA6590@cs.wisc.edu> Message-ID: <20100303031831.GA28869@cs.wisc.edu> Hello, After a talk with Stelian about the previous version of this patch, I see now my initial solution was incorrect. Here is a corrected version of it. The purpose of this patch is to fix %remove-handlers and %dispatch-event so they don't try to invoke or otherwise misuse a NIL callback handler on a ready socket. Thank you. -pete diff --git a/src/multiplex/event-loop.lisp b/src/multiplex/event-loop.lisp index 35879fd..a0b6ab1 100644 --- a/src/multiplex/event-loop.lisp +++ b/src/multiplex/event-loop.lisp @@ -313,7 +313,7 @@ within the extent of BODY. Closes VAR." (when (and eventsp one-shot) (setf exit-p t)))))) (defun %remove-handlers (event-base event-list) - (loop :for ev :in event-list + (loop :for ev :in (remove-if #'null event-list) :for fd := (fd-handler-fd ev) :for fd-entry := (fd-entry-of event-base fd) :do (%remove-io-handler event-base fd fd-entry ev))) @@ -352,13 +352,14 @@ within the extent of BODY. Closes VAR." (defun %dispatch-event (fd-entry event-type errorp now) (let ((ev (fd-entry-handler fd-entry event-type))) - (funcall (fd-handler-callback ev) - (fd-entry-fd fd-entry) - event-type - (if errorp :error nil)) - (when-let (timer (fd-handler-timer ev)) - (reschedule-timer-relative-to-now timer now)) - (fd-handler-one-shot-p ev))) + (when ev + (funcall (fd-handler-callback ev) + (fd-entry-fd fd-entry) + event-type + (if errorp :error nil)) + (when-let (timer (fd-handler-timer ev)) + (reschedule-timer-relative-to-now timer now)) + (fd-handler-one-shot-p ev)))) (defun dispatch-fd-timeouts (events) (dolist (ev events) From sionescu at cddr.org Sat Mar 6 23:13:46 2010 From: sionescu at cddr.org (Stelian Ionescu) Date: Sun, 07 Mar 2010 00:13:46 +0100 Subject: [iolib-devel] Patch for a nil callback invocation. In-Reply-To: <20100303031831.GA28869@cs.wisc.edu> References: <20100120063326.GA6590@cs.wisc.edu> <20100303031831.GA28869@cs.wisc.edu> Message-ID: <1267917226.3628.1.camel@blackhole.cddr.org> On Tue, 2010-03-02 at 21:18 -0600, Peter Keller wrote: > Hello, > > After a talk with Stelian about the previous version of this patch, I see > now my initial solution was incorrect. Here is a corrected version of it. > > The purpose of this patch is to fix %remove-handlers and %dispatch-event > so they don't try to invoke or otherwise misuse a NIL callback handler > on a ready socket. Thanks, I applied your patch with a small modification. -- Stelian Ionescu a.k.a. fe[nl]ix Quidquid latine dictum sit, altum videtur. http://common-lisp.net/project/iolib -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: This is a digitally signed message part URL: From psilord at cs.wisc.edu Sun Mar 7 06:32:35 2010 From: psilord at cs.wisc.edu (Peter Keller) Date: Sun, 7 Mar 2010 00:32:35 -0600 Subject: [iolib-devel] Patch for a nil callback invocation. In-Reply-To: <1267917226.3628.1.camel@blackhole.cddr.org> References: <20100120063326.GA6590@cs.wisc.edu> <20100303031831.GA28869@cs.wisc.edu> <1267917226.3628.1.camel@blackhole.cddr.org> Message-ID: <20100307063235.GA26115@cs.wisc.edu> On Sun, Mar 07, 2010 at 12:13:46AM +0100, Stelian Ionescu wrote: > On Tue, 2010-03-02 at 21:18 -0600, Peter Keller wrote: > > The purpose of this patch is to fix %remove-handlers and %dispatch-event > > so they don't try to invoke or otherwise misuse a NIL callback handler > > on a ready socket. > > Thanks, I applied your patch with a small modification. Ah, I see. That modification makes perfect sense. Thank you! -pete From sionescu at common-lisp.net Sun Mar 7 10:00:08 2010 From: sionescu at common-lisp.net (Stelian Ionescu) Date: Sun, 07 Mar 2010 05:00:08 -0500 Subject: [iolib-devel] New patches: 6-Mar-2010 Message-ID: commit d4862b25cd1f55ea4d8b6fe9ff7c92315ff0cf10 Author: Peter Keller Date: Sun Mar 7 00:09:57 2010 +0100 Avoid calling NULL callbacks. src/multiplex/event-loop.lisp | 17 +++++++++-------- 1 files changed, 9 insertions(+), 8 deletions(-) An updated tarball of IOLib's source can be downloaded here: http://common-lisp.net/project/iolib/files/snapshots/iolib-20100306.tar.gz Gitweb URL: http://repo.or.cz/w/iolib.git From psilord at cs.wisc.edu Sun Mar 14 07:23:23 2010 From: psilord at cs.wisc.edu (Peter Keller) Date: Sun, 14 Mar 2010 01:23:23 -0600 Subject: [iolib-devel] send-to question Message-ID: <20100314072323.GA24007@cs.wisc.edu> Hello, Under what situations does IOLib's send-to fail on a TCP socket and how does it fail? An example for a TCP receive-from is when it tries to read from a closed connection it returns 0 bytes--as oposed to read-line from a closed connection which results in a signaled END-OF-FILE condition. write-line will produce a hangup on a closed connection remotely, but what will send-to do on a closed connection remotely? Return 0? Signal a HANGUP? In practice it seems to "write" however many bytes I asked it to the nonexistent client and return the number of bytes written. I was expecting a signaled HANGUP instead. What's the deal? Thank you. -pete From sionescu at cddr.org Sun Mar 14 18:00:30 2010 From: sionescu at cddr.org (Stelian Ionescu) Date: Sun, 14 Mar 2010 19:00:30 +0100 Subject: [iolib-devel] send-to question In-Reply-To: <20100314072323.GA24007@cs.wisc.edu> References: <20100314072323.GA24007@cs.wisc.edu> Message-ID: <1268589630.29835.32.camel@blackhole.cddr.org> On Sun, 2010-03-14 at 01:23 -0600, Peter Keller wrote: > Hello, > > Under what situations does IOLib's send-to fail on a TCP socket and how > does it fail? > > An example for a TCP receive-from is when it tries to read from a closed > connection it returns 0 bytes--as oposed to read-line from a closed > connection which results in a signaled END-OF-FILE condition. > > write-line will produce a hangup on a closed connection remotely, but > what will send-to do on a closed connection remotely? Return 0? Signal > a HANGUP? In practice it seems to "write" however many bytes I asked it > to the nonexistent client and return the number of bytes written. I was > expecting a signaled HANGUP instead. What's the deal? You should get a condition, namely ISYS:EPIPE, but apparently Linux doesn't return EPIPE with loopback connections -- Stelian Ionescu a.k.a. fe[nl]ix Quidquid latine dictum sit, altum videtur. http://common-lisp.net/project/iolib -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: This is a digitally signed message part URL: From archimag at gmail.com Wed Mar 17 11:51:35 2010 From: archimag at gmail.com (Andrey Moskvitin) Date: Wed, 17 Mar 2010 14:51:35 +0300 Subject: [iolib-devel] Problem with peek-char Message-ID: Hi, I am trying to rewrite the work with sockets in a swank via IOLib and found that call peek-char produces an error "No uncommitted character to unread" (see %stream-unread-char in a gray-stream-methods.lisp) . I did not understand deep, but noticed that after the following simple modifications: diff --git a/src/streams/gray/gray-stream-methods.lisp b/src/streams/gray/gray-stream-methods.lisp index d0cdbce..43f4694 100644 --- a/src/streams/gray/gray-stream-methods.lisp +++ b/src/streams/gray/gray-stream-methods.lisp @@ -320,7 +320,6 @@ (unread-index ibuf-unread-index-of) (ef external-format-of)) stream - (setf unread-index (iobuf-start ib)) (let* ((str nil) (ret nil) (encoding (babel:external-format-encoding ef)) (max-octets-per-char system begins to work normally Moskvitin Andrey -------------- next part -------------- An HTML attachment was scrubbed... URL: From archimag at gmail.com Wed Mar 17 15:38:26 2010 From: archimag at gmail.com (Andrey Moskvitin) Date: Wed, 17 Mar 2010 18:38:26 +0300 Subject: [iolib-devel] Bug in stream-write-string Message-ID: Hi, I found bug in implementation stream-write-string for dual-channel-gray-stream class: lost last #\Newline character. Patch: diff --git a/src/streams/gray/gray-stream-methods.lisp b/src/streams/gray/gray-stream-methods.lisp index 43f4694..9d8b720 100644 --- a/src/streams/gray/gray-stream-methods.lisp +++ b/src/streams/gray/gray-stream-methods.lisp @@ -492,13 +492,13 @@ (ef (external-format-of stream)) (line-terminator (babel:external-format-eol-style ef))) (loop :for off1 := start :then (1+ off2) - :for nl-off := (position #\Newline string :start off1) + :for nl-off := (position #\Newline string :start off1 :end end) :for off2 := (or nl-off end) - :when nl-off :do (%write-line-terminator stream line-terminator) :when (> off2 off1) :do ;; FIXME: should probably convert directly to a foreign buffer? (setf octets (%to-octets string off1 off2 ef)) (%write-simple-array-ub8 stream octets 0 (length octets)) + :when nl-off :do (%write-line-terminator stream line-terminator) :while (< off2 end)))) (values string)) Andrey -------------- next part -------------- An HTML attachment was scrubbed... URL: From sionescu at common-lisp.net Fri Mar 19 09:00:06 2010 From: sionescu at common-lisp.net (Stelian Ionescu) Date: Fri, 19 Mar 2010 05:00:06 -0400 Subject: [iolib-devel] New patches: 18-Mar-2010 Message-ID: commit b88687474bdbd7cc41f260efdb4606b48df93dd3 Author: Stelian Ionescu Date: Thu Mar 18 22:19:14 2010 +0100 Renamed package NET.TRIVIAL-SOCKETS to IOLIB.TRIVIAL-SOCKETS, shadow SOCKET-ERROR. src/sockets/trivial-sockets.lisp | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) An updated tarball of IOLib's source can be downloaded here: http://common-lisp.net/project/iolib/files/snapshots/iolib-20100318.tar.gz Gitweb URL: http://repo.or.cz/w/iolib.git From sionescu at cddr.org Thu Mar 25 01:12:45 2010 From: sionescu at cddr.org (Stelian Ionescu) Date: Thu, 25 Mar 2010 02:12:45 +0100 Subject: [iolib-devel] Problem with peek-char In-Reply-To: References: Message-ID: <1269479565.25439.0.camel@blackhole.cddr.org> On Wed, 2010-03-17 at 14:51 +0300, Andrey Moskvitin wrote: > Hi, > > > I am trying to rewrite the work with sockets in a swank via IOLib and > found > that call peek-char produces an error "No uncommitted character to > unread" > (see %stream-unread-char in a gray-stream-methods.lisp) . > I did not understand deep, but noticed that after the following simple > modifications: > system begins to work normally I'm not sure that this is a bug. Could you please send me a test case ? -- Stelian Ionescu a.k.a. fe[nl]ix Quidquid latine dictum sit, altum videtur. http://common-lisp.net/project/iolib -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: This is a digitally signed message part URL: From sionescu at cddr.org Thu Mar 25 01:13:48 2010 From: sionescu at cddr.org (Stelian Ionescu) Date: Thu, 25 Mar 2010 02:13:48 +0100 Subject: [iolib-devel] Bug in stream-write-string In-Reply-To: References: Message-ID: <1269479628.25439.1.camel@blackhole.cddr.org> On Wed, 2010-03-17 at 18:38 +0300, Andrey Moskvitin wrote: > Hi, > > > I found bug in implementation stream-write-string > for dual-channel-gray-stream class: lost last #\Newline character. Thanks for the report: I fixed it by rewriting stream-write-string. The current version was quite unreadable anyway. -- Stelian Ionescu a.k.a. fe[nl]ix Quidquid latine dictum sit, altum videtur. http://common-lisp.net/project/iolib -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: This is a digitally signed message part URL: From sionescu at common-lisp.net Thu Mar 25 09:00:05 2010 From: sionescu at common-lisp.net (Stelian Ionescu) Date: Thu, 25 Mar 2010 05:00:05 -0400 Subject: [iolib-devel] New patches: 24-Mar-2010 Message-ID: commit aa93b0a9fd19fb0327e241e665efeff83b752fcc Author: Stelian Ionescu Date: Thu Mar 25 00:59:49 2010 +0100 Add fast path for EWOULDBLOCK in SIGNAL-SOCKET-ERROR. src/sockets/conditions.lisp | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 86355c3936feddad4fc97b611f930717cf028295 Author: Stelian Ionescu Date: Wed Mar 24 23:20:47 2010 +0100 Remove %WRITE-LINE-TERMINATOR and replace it with eol-writer function stored in the stream. src/streams/gray/classes.lisp | 2 + src/streams/gray/gray-stream-methods.lisp | 47 +++++++++++++++++----------- 2 files changed, 30 insertions(+), 19 deletions(-) commit 7803896dcdb1a0a4d0bcc6485c0e266859b745b7 Author: Stelian Ionescu Date: Wed Mar 24 22:56:12 2010 +0100 Rewrite STREAM-WRITE-STRING to fix bug reported by Andrey Moskvitin and make code clearer. src/streams/gray/gray-stream-methods.lisp | 40 ++++++++++++++++------------- 1 files changed, 22 insertions(+), 18 deletions(-) commit 08c24e3f082ac8355b95f79985e18178ce06aeec Author: Stelian Ionescu Date: Wed Mar 24 21:30:29 2010 +0100 Add and export condition IOLIB.STREAMS:NO-CHARACTERS-TO-UNREAD, use it in %STREAM-UNREAD-CHAR. src/streams/gray/conditions.lisp | 12 +++++++++++- src/streams/gray/gray-stream-methods.lisp | 8 ++++++-- src/streams/gray/pkgdcl.lisp | 1 + 3 files changed, 18 insertions(+), 3 deletions(-) An updated tarball of IOLib's source can be downloaded here: http://common-lisp.net/project/iolib/files/snapshots/iolib-20100324.tar.gz Gitweb URL: http://repo.or.cz/w/iolib.git From sionescu at common-lisp.net Fri Mar 26 09:00:06 2010 From: sionescu at common-lisp.net (Stelian Ionescu) Date: Fri, 26 Mar 2010 05:00:06 -0400 Subject: [iolib-devel] New patches: 25-Mar-2010 Message-ID: commit 4b7233df1929d7329ac52b11726649fe5e56d323 Author: Stelian Ionescu Date: Thu Mar 25 12:58:04 2010 +0100 No initform for slot EOL-WRITER. src/streams/gray/classes.lisp | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) An updated tarball of IOLib's source can be downloaded here: http://common-lisp.net/project/iolib/files/snapshots/iolib-20100325.tar.gz Gitweb URL: http://repo.or.cz/w/iolib.git From sionescu at common-lisp.net Sat Mar 27 09:00:06 2010 From: sionescu at common-lisp.net (Stelian Ionescu) Date: Sat, 27 Mar 2010 05:00:06 -0400 Subject: [iolib-devel] New patches: 26-Mar-2010 Message-ID: commit ebc4e267121cdc9f2587443d6ac08327453fbf12 Author: Stelian Ionescu Date: Sat Mar 27 03:37:27 2010 +0100 Rewrite STREAM-READ-CHAR and STREAM-READ-CHAR-NO-HANG. src/iolib.streams.asd | 5 +- src/streams/gray/buffer.lisp | 3 + src/streams/gray/classes.lisp | 15 +- src/streams/gray/gray-stream-methods.lisp | 445 +++++++---------------------- src/streams/gray/io-helpers.lisp | 281 ++++++++++++++++++ 5 files changed, 398 insertions(+), 351 deletions(-) An updated tarball of IOLib's source can be downloaded here: http://common-lisp.net/project/iolib/files/snapshots/iolib-20100326.tar.gz Gitweb URL: http://repo.or.cz/w/iolib.git From sionescu at cddr.org Sat Mar 27 16:06:27 2010 From: sionescu at cddr.org (Stelian Ionescu) Date: Sat, 27 Mar 2010 17:06:27 +0100 Subject: [iolib-devel] Problem with peek-char In-Reply-To: References: <1269479565.25439.0.camel@blackhole.cddr.org> Message-ID: <1269705987.27477.1.camel@blackhole.cddr.org> On Thu, 2010-03-25 at 12:53 +0300, Andrey Moskvitin wrote: > Hi, > > > > I'm not sure that this is a bug. > > > Yes, I sorted out problem more deeply and concluded that in > stream-read-char > required following changes: > > > diff --git a/src/streams/gray/gray-stream-methods.lisp > b/src/streams/gray/gray-stream-methods.lisp > index 49c2eb1..45a25d1 100644 > --- a/src/streams/gray/gray-stream-methods.lisp > +++ b/src/streams/gray/gray-stream-methods.lisp > @@ -332,7 +332,8 @@ > (return* :eof)))) > (cond ((zerop (iobuf-length ib)) > (iobuf-reset ib) > - (fill-buf-or-eof)) > + (fill-buf-or-eof) > + (setf unread-index (iobuf-start ib))) > ;; Some encodings such as CESU or Java's modified UTF-8 > take > ;; as much as 6 bytes per character. Make sure we have > enough > ;; space to collect read-ahead bytes if required. Since the old code was very hard to read in order to understand what was the bug, I rewrote it. Could you please try again ? -- Stelian Ionescu a.k.a. fe[nl]ix Quidquid latine dictum sit, altum videtur. http://common-lisp.net/project/iolib -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 198 bytes Desc: This is a digitally signed message part URL: From sionescu at common-lisp.net Mon Mar 29 09:00:05 2010 From: sionescu at common-lisp.net (Stelian Ionescu) Date: Mon, 29 Mar 2010 05:00:05 -0400 Subject: [iolib-devel] New patches: 28-Mar-2010 Message-ID: commit 11a7b7999b66cc609254554ad46935c8977a0873 Author: Stelian Ionescu Date: Mon Mar 29 02:01:38 2010 +0200 Re-arrange test clauses in STREAM-READ-CHAR-NO-HANG. src/streams/gray/gray-stream-methods.lisp | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit ce4bfcd246babe67f6aa475ee17800c440d24c06 Author: Stelian Ionescu Date: Mon Mar 29 02:01:17 2010 +0200 Fix bug in STREAM-READ-CHAR-NO-HANG. src/streams/gray/gray-stream-methods.lisp | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) An updated tarball of IOLib's source can be downloaded here: http://common-lisp.net/project/iolib/files/snapshots/iolib-20100328.tar.gz Gitweb URL: http://repo.or.cz/w/iolib.git From sionescu at common-lisp.net Tue Mar 30 09:00:06 2010 From: sionescu at common-lisp.net (Stelian Ionescu) Date: Tue, 30 Mar 2010 05:00:06 -0400 Subject: [iolib-devel] New patches: 29-Mar-2010 Message-ID: commit ed0c7395c260df5744644e4b3fb3de079dde935f Author: Stelian Ionescu Date: Tue Mar 30 03:03:58 2010 +0200 Call DEFAULT-{READ,WRITE}-FN through their function objects. src/streams/gray/classes.lisp | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit afdd62b9d685e32e068ea5b49cb09f42a2b2c982 Author: Stelian Ionescu Date: Tue Mar 30 03:02:17 2010 +0200 Add %READ-ONCE/NO-HANG. src/streams/gray/io-helpers.lisp | 13 +++++++++++-- 1 files changed, 11 insertions(+), 2 deletions(-) An updated tarball of IOLib's source can be downloaded here: http://common-lisp.net/project/iolib/files/snapshots/iolib-20100329.tar.gz Gitweb URL: http://repo.or.cz/w/iolib.git From psilord at cs.wisc.edu Wed Mar 31 03:09:15 2010 From: psilord at cs.wisc.edu (Peter Keller) Date: Tue, 30 Mar 2010 22:09:15 -0500 Subject: [iolib-devel] New patches: 29-Mar-2010 In-Reply-To: References: Message-ID: <20100331030914.GA7147@cs.wisc.edu> Hello, During the recent set of patches, a couple of errors have arisen in IOLib: 1. When connecting to an address upon which no server is listening, connect signals a POLL-ERROR instead of SOCKET-CONNECTION-REFUSED-ERROR. This is unexpected. Here is the backtrace: 0: (IOLIB.MULTIPLEX::PROCESS-POLL-REVENTS 24 5) 1: (WAIT-UNTIL-FD-READY 5 :OUTPUT NIL T) 2: (IOLIB.SOCKETS::CALL-WITH-SOCKET-TO-WAIT-CONNECT # # T) 3: ((SB-PCL::FAST-METHOD CONNECT (INTERNET-SOCKET INET-ADDRESS)) # # # #/IP/127.0.0.1)[:EXTERNAL] 4: [goes into my example codes...] 2. When the server goes away and closes the connection to the client, the client never sees the END-OF-FILE using the stream interface. Thank you. -pete From sionescu at common-lisp.net Wed Mar 31 09:00:09 2010 From: sionescu at common-lisp.net (Stelian Ionescu) Date: Wed, 31 Mar 2010 05:00:09 -0400 Subject: [iolib-devel] New patches: 30-Mar-2010 Message-ID: commit 86ef9c8bffad0271de60569a358e0aa46a6cd391 Author: Stelian Ionescu Date: Tue Mar 30 13:48:35 2010 +0200 Make stream FDs nonblocking by default, various fixes. src/base/pkgdcl.lisp | 4 ++ src/base/types.lisp | 31 ++++++++++++ src/sockets/base-sockets.lisp | 16 +++++- src/sockets/dns/query.lisp | 1 - src/sockets/socket-methods.lisp | 17 +----- src/streams/gray/buffer.lisp | 2 +- src/streams/gray/classes.lisp | 36 +++----------- src/streams/gray/fd-mixin.lisp | 31 +++++------- src/streams/gray/gray-stream-methods.lisp | 59 +++++++++++++--------- src/streams/gray/io-helpers.lisp | 77 +++++++++++++++++++---------- src/streams/gray/pkgdcl.lisp | 11 ---- src/syscalls/ffi-functions-unix.lisp | 13 +++++ src/syscalls/pkgdcl.lisp | 1 + tests/sockets.lisp | 12 +++-- tests/streams.lisp | 1 + 15 files changed, 180 insertions(+), 132 deletions(-) commit 1a389959e334ce12c1d29d6a34296d663ebacdc6 Author: Stelian Ionescu Date: Tue Mar 30 03:53:35 2010 +0200 Fix %READ-ONCE/NO-HANG and %FILL-BUF/NO-HANG. src/streams/gray/io-helpers.lisp | 40 +++++++++++++++++++------------------ 1 files changed, 21 insertions(+), 19 deletions(-) commit 6d63d32fb7f400e93066cb37a139a43dae4721c1 Author: Stelian Ionescu Date: Tue Mar 30 03:51:52 2010 +0200 Remove useless check in MAYBE-REWIND-IOBUF. src/streams/gray/io-helpers.lisp | 20 +++++++++----------- 1 files changed, 9 insertions(+), 11 deletions(-) commit 73c0c0d111df6128b2177d50ed6433f031cede3c Author: Stelian Ionescu Date: Tue Mar 30 03:43:32 2010 +0200 Fix enabling of *SAFETY-CHECKS*. src/base/debug.lisp | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) An updated tarball of IOLib's source can be downloaded here: http://common-lisp.net/project/iolib/files/snapshots/iolib-20100330.tar.gz Gitweb URL: http://repo.or.cz/w/iolib.git