[bknr-cvs] edi changed trunk/thirdparty/chunga/

BKNR Commits bknr at bknr.net
Mon Feb 9 14:50:22 UTC 2009


Revision: 4212
Author: edi
URL: http://bknr.net/trac/changeset/4212

Conditions

U   trunk/thirdparty/chunga/CHANGELOG.txt
U   trunk/thirdparty/chunga/chunga.asd
U   trunk/thirdparty/chunga/doc/index.html
U   trunk/thirdparty/chunga/packages.lisp
U   trunk/thirdparty/chunga/read.lisp
U   trunk/thirdparty/chunga/streams.lisp

Modified: trunk/thirdparty/chunga/CHANGELOG.txt
===================================================================
--- trunk/thirdparty/chunga/CHANGELOG.txt	2009-02-09 14:16:22 UTC (rev 4211)
+++ trunk/thirdparty/chunga/CHANGELOG.txt	2009-02-09 14:50:22 UTC (rev 4212)
@@ -1,6 +1,7 @@
 Version 1.0.0
 2009-02-10
 Switched to binary streams underneath and got rid of FLEXI-STREAMS dependency
+Added conditions
 Exported (an improved version of) AS-KEYWORD
 Added WITH-CHARACTER-STREAM-SEMANTICS
 

Modified: trunk/thirdparty/chunga/chunga.asd
===================================================================
--- trunk/thirdparty/chunga/chunga.asd	2009-02-09 14:16:22 UTC (rev 4211)
+++ trunk/thirdparty/chunga/chunga.asd	2009-02-09 14:50:22 UTC (rev 4212)
@@ -35,6 +35,7 @@
                (:file "specials")
                (:file "util")
                (:file "known-words")
+               (:file "conditions")
                (:file "read")
                (:file "streams")
                (:file "input")

Modified: trunk/thirdparty/chunga/doc/index.html
===================================================================
--- trunk/thirdparty/chunga/doc/index.html	2009-02-09 14:16:22 UTC (rev 4211)
+++ trunk/thirdparty/chunga/doc/index.html	2009-02-09 14:50:22 UTC (rev 4212)
@@ -72,6 +72,11 @@
         </ol>
       <li><a href="#conditions">Conditions</a>
         <ol>
+          <li><a href="#chunga-condition"><code>chunga-condition</code></a>
+          <li><a href="#chunga-error"><code>chunga-error</code></a>
+          <li><a href="#chunga-warning"><code>chunga-warning</code></a>
+          <li><a href="#syntax-error"><code>syntax-error</code></a>
+          <li><a href="#parameter-error"><code>parameter-error</code></a>
           <li><a href="#input-chunking-body-corrupted"><code>input-chunking-body-corrupted</code></a>
           <li><a href="#input-chunking-unexpected-end-of-file"><code>input-chunking-unexpected-end-of-file</code></a>
         </ol>
@@ -342,9 +347,69 @@
 
 <h4><a name="conditions" class=none>Conditions</a></h4>
 
-Here are two conditions which might be signaled if something bad
-happens while reading from a chunked stream:
+Here are conditions which might be signalled if something bad happens
+with a chunked stream.
 
+<!-- Entry for CHUNGA-CONDITION -->
+
+<p><br>[Condition]
+<br><a class=none name="chunga-condition"><b>chunga-condition</b></a>
+
+<blockquote><br>
+All conditions signalled by Chunga are of this type.  This is a subtype of <a href="http://www.lispworks.com/documentation/HyperSpec/Body/e_cnd.htm"><code>CONDITION</code></a>.
+</blockquote>
+
+<!-- End of entry for CHUNGA-CONDITION -->
+
+<!-- Entry for CHUNGA-ERROR -->
+
+<p><br>[Error]
+<br><a class=none name="chunga-error"><b>chunga-error</b></a>
+
+<blockquote><br>
+All errors signalled by Chunga are of this type.  This is a subtype of <a href="#chunga-condition"><code>CHUNGA-CONDITION</code></a> and of
+<a href="http://www.lispworks.com/documentation/HyperSpec/Body/e_stm_er.htm"><code>STREAM-ERROR</code></a>,
+so <a href="http://www.lispworks.com/documentation/HyperSpec/Body/f_stm_er.htm"><code>STREAM-ERROR-STREAM</code></a>
+can be used to access the offending stream.
+</blockquote>
+
+<!-- End of entry for CHUNGA-ERROR -->
+
+<!-- Entry for CHUNGA-WARNING -->
+
+<p><br>[Warning]
+<br><a class=none name="chunga-warning"><b>chunga-warning</b></a>
+
+<blockquote><br>
+All warnings signalled by Chunga are of this type.  This is a subtype of <a href="#chunga-condition"><code>CHUNGA-CONDITION</code></a> and of <a href="http://www.lispworks.com/documentation/HyperSpec/Body/e_warnin.htm"><code>WARNING</code></a>.
+</blockquote>
+
+<!-- End of entry for CHUNGA-WARNING -->
+
+<!-- Entry for SYNTAX-ERROR -->
+
+<p><br>[Error]
+<br><a class=none name="syntax-error"><b>syntax-error</b></a>
+
+<blockquote><br> An error of this type is signalled if Chunga
+encounters wrong or unknown syntax when reading data.  This is a
+subtype of <a href="#chunga-error"><code>CHUNGA-ERROR</code></a>.
+</blockquote>
+
+<!-- End of entry for SYNTAX-ERROR -->
+
+<!-- Entry for PARAMETER-ERROR -->
+
+<p><br>[Error]
+<br><a class=none name="parameter-error"><b>parameter-error</b></a>
+
+<blockquote><br> An error of this type is signalled if a function was
+called with inconsistent or illegal parameters.  This is a subtype
+of <a href="#chunga-error"><code>CHUNGA-ERROR</code></a>.
+</blockquote>
+
+<!-- End of entry for PARAMETER-ERROR -->
+
 <!-- Entry for INPUT-CHUNKING-BODY-CORRUPTED -->
 
 <p><br>[Condition type]<br><a class=none name='input-chunking-body-corrupted'><b>input-chunking-body-corrupted</b></a>
@@ -353,11 +418,7 @@
 A condition of this type is signaled if an
 unexpected character (octet) is read while reading from a
 <a href="#stream">chunked stream</a> with input chunking enabled. This is a subtype of
-<a
-href="http://www.lispworks.com/documentation/HyperSpec/Body/e_stm_er.htm"><code>STREAM-ERROR</code></a>,
-so <a
-href="http://www.lispworks.com/documentation/HyperSpec/Body/f_stm_er.htm"><code>STREAM-ERROR-STREAM</code></a>
-can be used to access the offending stream.
+<a href="#chunga-error"><code>CHUNGA-ERROR</code></a>.
 
 </blockquote>
 
@@ -372,11 +433,7 @@
 A condition of this type is signaled if we
 reach an unexpected EOF on a <a href="#stream">chunked stream</a> with input chunking
 enabled.  This is a subtype of
-<a
-href="http://www.lispworks.com/documentation/HyperSpec/Body/e_stm_er.htm"><code>STREAM-ERROR</code></a>,
-so <a
-href="http://www.lispworks.com/documentation/HyperSpec/Body/f_stm_er.htm"><code>STREAM-ERROR-STREAM</code></a>
-can be used to access the offending stream.
+<a href="#chunga-error"><code>CHUNGA-ERROR</code></a>.
 
 </blockquote>
 

Modified: trunk/thirdparty/chunga/packages.lisp
===================================================================
--- trunk/thirdparty/chunga/packages.lisp	2009-02-09 14:16:22 UTC (rev 4211)
+++ trunk/thirdparty/chunga/packages.lisp	2009-02-09 14:50:22 UTC (rev 4212)
@@ -39,6 +39,8 @@
            :assert-char
            :as-keyword
            :as-capitalized-string
+           :chunga-error
+           :chunga-warning
            :chunked-input-stream
            :chunked-input-stream-extensions
            :chunked-input-stream-trailers
@@ -58,6 +60,7 @@
            :read-name-value-pairs
            :read-token
            :skip-whitespace
+           :syntax-error
            :trim-whitespace
            :with-character-stream-semantics))
            

Modified: trunk/thirdparty/chunga/read.lisp
===================================================================
--- trunk/thirdparty/chunga/read.lisp	2009-02-09 14:16:22 UTC (rev 4211)
+++ trunk/thirdparty/chunga/read.lisp	2009-02-09 14:50:22 UTC (rev 4212)
@@ -29,17 +29,23 @@
 
 (in-package :chunga)
 
-(defun signal-unexpected-chars (last-char expected-chars)
+(defun signal-unexpected-chars (stream last-char expected-chars)
   "Signals an error that LAST-CHAR was read although one of
-EXPECTED-CHARS was expected.  \(Note that EXPECTED-CHARS,
-despites its name, can also be a single character instead of a
-list).  Uses *CURRENT-ERROR-MESSAGE* if it's not NIL, or calls
-*CURRENT-ERROR-FUNCTION* otherwise."
+EXPECTED-CHARS was expected.  \(Note that EXPECTED-CHARS, despites its
+name, can also be a single character instead of a list).  Calls
+*CURRENT-ERROR-FUNCTION* if it's not NIL, or uses
+*CURRENT-ERROR-MESSAGE* otherwise."
   (cond (*current-error-function*
          (funcall *current-error-function* last-char expected-chars))
-        (*current-error-message*
-         (error "~@[~A~%~]~:[End of file~;Read character ~:*~S~], but expected ~:[a member of ~S~;~S~]."
-                *current-error-message* last-char (atom expected-chars) expected-chars))))
+        (t
+         (error 'syntax-error
+                :stream stream
+                :format-control "~@[~A~%~]~:[End of file~;Read character ~:*~S~], ~
+but expected ~:[a member of ~S~;~S~]."
+                :format-arguments (list *current-error-message*
+                                        last-char
+                                        (atom expected-chars)
+                                        expected-chars)))))
 
 (defun charp (char)
   "Returns true if the Lisp character CHAR is a CHAR according to RFC 2616."
@@ -73,7 +79,7 @@
 character EXPECTED-CHAR.  Signals an error otherwise."
   (let ((char (read-char* stream)))
     (unless (and char (char= char expected-char))
-      (signal-unexpected-chars char expected-char))
+      (signal-unexpected-chars stream char expected-char))
     char))
 
 (defun assert-crlf (stream)
@@ -170,7 +176,10 @@
 Returns NIL if LINE consists solely of whitespace."
                (unless (zerop (length (trim-whitespace line)))
                  (let ((colon-pos (or (position #\: line :test #'char=)
-                                      (error "Couldn't find colon in header line ~S." line))))
+                                      (error 'syntax-error
+                                             :stream stream
+                                             :format-control "Couldn't find colon in header line ~S."
+                                             :format-arguments (list line)))))
                    (cons (as-keyword (subseq line 0 colon-pos))
                          (trim-whitespace (subseq line (1+ colon-pos)))))))
              (add-header (pair)
@@ -231,7 +240,7 @@
                (#\Return (assert-char stream #\Linefeed)
                          (let ((char (read-char* stream)))
                            (unless (whitespacep char)
-                             (signal-unexpected-chars char '(#\Space #\Tab)))))
+                             (signal-unexpected-chars stream char '(#\Space #\Tab)))))
                (otherwise (write-char char out))))))
 
 (defun read-cookie-value (stream &key name separators)

Modified: trunk/thirdparty/chunga/streams.lisp
===================================================================
--- trunk/thirdparty/chunga/streams.lisp	2009-02-09 14:16:22 UTC (rev 4211)
+++ trunk/thirdparty/chunga/streams.lisp	2009-02-09 14:50:22 UTC (rev 4212)
@@ -110,40 +110,16 @@
            (close real-stream :abort abort))
           (t nil))))
 
-(define-condition input-chunking-unexpected-end-of-file (stream-error)
-  ()
-  (:documentation "A condition of this type is signaled if we
-reach an unexpected EOF on a chunked stream with input chunking
-enabled.  This is a subtype of STREAM-ERROR, so
-STREAM-ERROR-STREAM can be used to access the offending
-stream."))
-
-(define-condition input-chunking-body-corrupted (stream-error)
-  ((last-char :initarg :last-char
-              :documentation "The \(unexpected) character which was read.")
-   (expected-chars :initarg :expected-chars
-                   :documentation "The characters which were
-expected.  A list of characters or one single character."))
-  (:report (lambda (condition stream)
-             (with-slots (last-char expected-chars)
-                 condition
-               (format stream "Chunked stream ~S seems to be corrupted.
-Read character ~S, but expected ~:[a member of ~S~;~S~]."
-                       (stream-error-stream condition)
-                       last-char (atom expected-chars) expected-chars))))
-  (:documentation "A condition of this type is signaled if an
-unexpected character \(octet) is read while reading from a
-chunked stream with input chunking enabled. This is a subtype of
-STREAM-ERROR, so STREAM-ERROR-STREAM can be used to access the
-offending stream."))
-
 (defun make-chunked-stream (stream)
   "Creates and returns a chunked stream \(a stream of type
 CHUNKED-STREAM) which wraps STREAM.  STREAM must be an open
 binary stream."
   (unless (and (streamp stream)
                (open-stream-p stream))
-    (error "~S should have been an open stream." stream))
+    (error 'parameter-error
+           :stream stream
+           :format-control "~S should have been an open stream."
+           :format-arguments (list stream)))
   (make-instance ;; actual type depends on STREAM
                  (cond ((and (input-stream-p stream)
                              (output-stream-p stream))





More information about the Bknr-cvs mailing list