[pg-cvs] CVS update: pg/sysdep.lisp

Peter Van Eynde pvaneynde at common-lisp.net
Wed May 4 20:51:38 UTC 2005

Update of /project/pg/cvsroot/pg
In directory common-lisp.net:/tmp/cvs-serv24597

Modified Files:
Log Message:
possible sbcl unicode fix
Date: Wed May  4 22:51:36 2005
Author: pvaneynde

Index: pg/sysdep.lisp
diff -u pg/sysdep.lisp:1.6 pg/sysdep.lisp:1.7
--- pg/sysdep.lisp:1.6	Wed Aug 11 15:27:48 2004
+++ pg/sysdep.lisp	Wed May  4 22:51:35 2005
@@ -306,6 +306,15 @@
 (defvar *pg-client-encoding*)
+#+(and :sbcl :sb-unicode)
+(defun sbcl-ext-form-from-client-encoding (encoding)
+  (cond
+   ((string= encoding "SQL_ASCII") :ascii)
+   ((string= encoding  "LATIN1") :latin1)
+   ((string= encoding "LATIN9") :latin9)
+   ((string= encoding "UNICODE") :utf8)
+   (t (error "unkown encoding ~A" encoding))))
 (defun convert-string-to-bytes (string &optional (encoding *pg-client-encoding*))
   (declare (type string string))
   (%sysdep "convert string to bytes"
@@ -313,6 +322,8 @@
      (ext:convert-string-to-bytes string encoding)
      #+(and acl ics)
      (excl:string-to-octets string :external-format encoding)
+     #+(and :sbcl :sb-unicode)
+     (sb-ext:string-to-octets string :external-format (sbcl-ext-form-from-client-encoding encoding))
      #+(or cmu sbcl gcl ecl)
      (let ((octets (make-array (length string) :element-type '(unsigned-byte 8))))
        (map-into octets #'char-code string))))
@@ -324,10 +335,12 @@
     (ext:convert-string-from-bytes bytes encoding)
     #+(and acl ics)
     (ext:octets-to-string bytes :external-format encoding)
+    #+(and :sbcl :sb-unicode)
+    (sb-ext:octets-to-string bytes :external-format encoding)
     ;; for implementations that have no support for character
     ;; encoding, we assume that the encoding is an octet-for-octet
     ;; encoding, and convert directly
-    #+(or cmu sbcl gcl ecl)
+    #+(or cmu (and sbcl (not :sb-unicode)) gcl ecl)
     (let ((string (make-string (length bytes))))
       (map-into string #'code-char bytes))))

More information about the Pg-cvs mailing list