r5292: *** empty log message ***
[xmlutils.git] / pxml1.cl
index 3142ec6f0969450f82314cc735d2e6c7d290b452..4849fb255a782363e2d5b08c117b4e00eacb8a58 100644 (file)
--- a/pxml1.cl
+++ b/pxml1.cl
 ;; version) or write to the Free Software Foundation, Inc., 59 Temple Place,
 ;; Suite 330, Boston, MA  02111-1307  USA
 ;;
-;; $Id: pxml1.cl,v 1.1 2002/10/15 12:23:03 kevin Exp $
-
-;; Change Log 
+;; Change Log
 ;;
 ;; 10/14/00 add namespace support; xml-error fix
 
 (in-package :net.xml.parser)
 
-(pxml-dribble-bug-hook "$Id: pxml1.cl,v 1.1 2002/10/15 12:23:03 kevin Exp $")
+(pxml-dribble-bug-hook "$Id: pxml1.cl,v 1.4 2003/07/11 18:02:41 kevin Exp $")
 
 (defparameter *collectors* (list nil nil nil nil nil nil nil nil))
 
 (defun put-back-collector (col)
   (declare (optimize (speed 3) (safety 1)))
-  (mp::without-scheduling
+  (without-scheduling
     (do ((cols *collectors* (cdr cols)))
        ((null cols)
         ; toss it away
@@ -85,7 +83,7 @@
 (defun get-tokenbuf ()
   (declare (optimize (speed 3) (safety 1)))
   (let (buf)
-    (mp::without-scheduling
+    (without-scheduling
       (do* ((bufs *tokenbufs* (cdr bufs))
            (this (car bufs) (car bufs)))
          ((null bufs))
 
 (defun put-back-tokenbuf (buf)
   (declare (optimize (speed 3) (safety 1)))
-  (mp::without-scheduling
+  (without-scheduling
     (do ((bufs *tokenbufs* (cdr bufs)))
        ((null bufs)
         ; toss it away
 (defun get-collector ()
   (declare (optimize (speed 3) (safety 1)))
   (let (col)
-    (mp::without-scheduling
+    (without-scheduling
       (do* ((cols *collectors* (cdr cols))
            (this (car cols) (car cols)))
          ((null cols))
     (if* (and from-stream (eq tmp-char #\return)) then #\newline else tmp-char)))
 
 (defun unicode-check (p tokenbuf)
+  #-allegro (return-from unicode-check t)
+  #+allegro
   (declare (ignorable tokenbuf) (optimize (speed 3) (safety 1)))
   ;; need no-OO check because external format support isn't completely done yet
+  #+allegro
   (when (not (typep p 'string-input-simple-stream))
-    #+(version>= 6 0 pre-final 1)
+    #+allegro
     (let ((format (ignore-errors (excl:sniff-for-unicode p))))
       (if* (eq format (find-external-format :unicode))
         then
              (setf (stream-external-format p) format)
         else
              (setf (stream-external-format p) (find-external-format :utf8))))
-    #-(version>= 6 0 pre-final 1)
+    #-allegro
     (let* ((c (read-char p nil)) c2
           (c-code (if c (char-code c) nil)))
       (if* (eq #xFF c-code) then
              (if* (eq #xFE c-code) then
                      (format t "set unicode~%")
                      (setf (stream-external-format p)
-                       (find-external-format #+(version>= 6 0 pre-final 1) :unicode
-                                             #-(version>= 6 0 pre-final 1) :fat-little))
+                       (find-external-format
+                        #+allegro :unicode
+                        #-allegro :fat-little))
                 else
                      (xml-error "stream has incomplete Unicode marker"))
         else (setf (stream-external-format p)
     (xml-error "XML declaration tag does not include correct 'encoding' or 'standalone' attribute"))
   (when (and (fourth val) (string= "standalone" (symbol-name (fourth val))))
     (if* (equal (fifth val) "yes") then
-          (setf (iostruct-standalonep tokenbuf) t)
+           (setf (iostruct-standalonep tokenbuf) t)
      elseif (not (equal (fifth val) "no")) then
            (xml-error "XML declaration tag does not include correct 'standalone' attribute value")))
   (dotimes (i (length (third val)))
                 (not (member c '(#\. #\_ #\- #\:)))
                 )
        (xml-error "XML declaration tag does not include correct 'version' attribute value"))))
-  (when (and (fourth val) (eql :encoding (fourth val)))
-    (dotimes (i (length (fifth val)))
-      (let ((c (schar (fifth val) i)))
-       (when (and (not (alpha-char-p c))
-                  (if* (> i 0) then
-                          (and (not (digit-char-p c))
-                               (not (member c '(#\. #\_ #\-))))
-                     else t))
-         (xml-error "XML declaration tag does not include correct 'encoding' attribute value")))))
-  )
+  (if* (and (fourth val) (eql :encoding (fourth val)))
+     then (dotimes (i (length (fifth val)))
+           (let ((c (schar (fifth val) i)))
+             (when (and (not (alpha-char-p c))
+                        (if* (> i 0) then
+                                (and (not (digit-char-p c))
+                                     (not (member c '(#\. #\_ #\-))))
+                           else t))
+               (xml-error "XML declaration tag does not include correct 'encoding' attribute value"))))
+         ;; jkf 3/26/02 
+         ;; if we have a stream we're reading from set its external-format
+         ;; to the encoding
+         ;; note - tokenbuf is really an iostruct, not a tokenbuf
+     #+allegro
+         (if* (tokenbuf-stream (iostruct-tokenbuf tokenbuf))
+            then (setf (stream-external-format 
+                        (tokenbuf-stream (iostruct-tokenbuf tokenbuf)))
+                   (find-external-format (fifth val))))
+                        
+    
+         ))
 
 (defun xml-error (text)
   (declare (optimize (speed 3) (safety 1)))