Thanks, I'll take a look at this when I'm less busy than now.
Again, please use the mailing list for patches and questions - see Cc.
Thanks, Edi.
On Fri, Feb 5, 2010 at 11:31 AM, jingtaozf jingtaozf@gmail.com wrote:
Hi Edi; I have modifed the code to fit your request.and the encode name changed from cp936 to gbk. The following is the response.
- There are several new functions and macros which don't have a
documentation string. ==> i have add document to function get-multibyte-mapper,others are referenced with your codes. 2. There are tabs in the files and sometimes the indentation seems wrong. ==> i have removed tabs. 3. There are parts of the code which are commented out. If they aren't used, they shouldn't be in there. ==> yes,i deleted them. 4. There's at least one file (seems like a variant of the ASDF system definition) which shouldn't be in there at all. ==>sorry,but i don't know what you mean? 5. The link in the HTML documentation is wrong. ==>i fixed the url link to gbk. 6. Isn't get-multibyte-mapper the wrong name? You don't get the mapper, do you? ==>yes,this function is borrowed from sbcl's source code,and i have pointed out this in the comment. 7. And the function itself looks like Scheme to me. I think it'd be easier to understand using normal iteration. ==>i have re-write the decode and encode part.but i am not familiar with scheme. :( 8. I don't understand why the encoding factor is 1.5. Is the comment correct or just copied? ==>i don't know how to set the encoding factor,gbk(cp936) has one or two octets.i set it to 1.5 with my estimate. 9. I'm not familiar with CP936. Is it correct that there's only a big-endian version? ==>gbk(cp936) has no endian problem, i borrowed code from your utf16's implemention,now i have fixed it. 10. One of the new files contains DOS line endings. ==> some your source files has DOS line endings(such as ascii.lisp),some use unix line endings. i don't know why and maybe i modified it un-expectly.
Fothermore,this patch file is encoded use utf-8,because my test file contains file which is encoded by gbk format. I also put the test files(with gbk format) to the attatchment,because i am not sure the patch will generate them correctly.
2010-02-04
jingtaozf
发件人: Edi Weitz 发送时间: 2009-10-29 23:08:38 收件人: jingtao xu 抄送: General interest list about flexi-streams 主题: Re: a patch for chineses's cp936(gbk) encoding support.
On Thu, Oct 29, 2009 at 3:17 PM, jingtao xu jingtaozf@gmail.com wrote:
hi,Edi Weitz: Because i want to use drakma as my web development tool,but it use flexi-streams and could not decode chinese's cp936 characters,so i make a patch to flexi-streams.
The sbcl has supported cp936(by files supported by beinghe,which cvs path is:sbcl/src/code/external-formats/enc-cn.lisp,enc-cn-tbl.lisp). i use file enc-cn-tbl.lisp here.
The patches is make by following commands: diff -urN ~/.sbcl/site/flexi-streams-1.0.7/ ~/Downloads/flexi-streams/
flexi-streams-cp936.patch
I send you both the patch files and the patched codes. The test codes is added and passed. The documention is updated.
[I've put the mailing list on Cc where I think we should continue this.] First of all, I'd be happy to include this into the flexi-streams distribution. There are a couple of issues with the patch, though. What I saw from briefly looking at it:
- There are several new functions and macros which don't have a
documentation string. 2. There are tabs in the files and sometimes the indentation seems wrong. 3. There are parts of the code which are commented out. If they aren't used, they shouldn't be in there. 4. There's at least one file (seems like a variant of the ASDF system definition) which shouldn't be in there at all. 5. The link in the HTML documentation is wrong. 6. Isn't get-multibyte-mapper the wrong name? You don't get the mapper, do you? 7. And the function itself looks like Scheme to me. I think it'd be easier to understand using normal iteration. 8. I don't understand why the encoding factor is 1.5. Is the comment correct or just copied? 9. I'm not familiar with CP936. Is it correct that there's only a big-endian version? 10. One of the new files contains DOS line endings. There's probably more. If you could go over these and send a cleaned-up version of the patch, I'll review it. FWIW, here are some guidelines: http://weitz.de/patches.html Thanks, Edi.
Sorry for the long delay. I finally found the time to look at the patch. Unfortunately, it doesn't work for me. If I run the tests, I get an error. I'm attaching a backtrace.
Thanks, Edi.
Condition: No character which corresponds to octet #xAFE4.
Call to ERROR (offset 67) SYSTEM::ESTRING : FLEXI-STREAMS:EXTERNAL-FORMAT-ENCODING-ERROR SYSTEM::EARGS : (:FORMAT-CONTROL "No character which corresponds to octet #x~X." :FORMAT-ARGUMENTS (45028) :EXTERNAL-FORMAT #<FLEXI-STREAMS::FLEXI-GBK-FORMAT (:GBK :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B8E57>)
Catch frame: (FLEXI-STREAMS::RECOVER-FROM-ENCODING-ERROR . RESTART-CASE)
Catch frame: (FLEXI-STREAMS::RECOVER-FROM-ENCODING-ERROR . 1)
Call to FLEXI-STREAMS::RECOVER-FROM-ENCODING-ERROR (offset 382) FLEXI-STREAMS::EXTERNAL-FORMAT : #<FLEXI-STREAMS::FLEXI-GBK-FORMAT (:GBK :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B8E57> FLEXI-STREAMS::FORMAT-CONTROL : "No character which corresponds to octet #x~X." FLEXI-STREAMS::FORMAT-ARGS : (45028) DBG::G : (FLEXI-STREAMS::RECOVER-FROM-ENCODING-ERROR . RESTART-CASE) DBG::G : #<Function 1 subfunction of FLEXI-STREAMS::RECOVER-FROM-ENCODING-ERROR 2194D172> CONDITIONS::*RESTART-CLUSTERS* {Special} : ((#<RESTART USE-VALUE 22A82EAB>) (#<RESTART ASDF:RETRY 22A82E5B> #<RESTART ASDF:ACCEPT 22A82E03>) (#<RESTART ABORT 22A82D9F>) (#<RESTART ABORT 216B0553>))
Call to (METHOD FLEXI-STREAMS::OCTETS-TO-CHAR-CODE (FLEXI-STREAMS::FLEXI-GBK-FORMAT T)) (offset 245) FORMAT : #<FLEXI-STREAMS::FLEXI-GBK-FORMAT (:GBK :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B8E57> FLEXI-STREAMS::READER : #<Closure FLEXI-STREAMS::READER subfunction of (METHOD STREAM:STREAM-READ-CHAR (FLEXI-STREAMS:FLEXI-INPUT-STREAM)) 30FE382>
Binding frame: FLEXI-STREAMS::*CURRENT-UNREADER* : NIL
Call to (METHOD STREAM:STREAM-READ-CHAR (FLEXI-STREAMS:FLEXI-INPUT-STREAM)) (offset 242) STREAM : :DONT-KNOW
Call to (METHOD STREAM:STREAM-READ-LINE (STREAM:FUNDAMENTAL-STREAM)) (offset 66) STREAM : #<FLEXI-STREAMS:FLEXI-INPUT-STREAM 22A8363F>
Call to READ-LINE (offset 105) STREAM : #<FLEXI-STREAMS:FLEXI-INPUT-STREAM 22A8363F> SYSTEM::EOF-ERROR-P : NIL SYSTEM::EOF-VALUE : NIL SYSTEM::RECURSIVE-P : :DONT-KNOW
Call to FLEXI-STREAMS-TEST::COPY-STREAM (offset 112) FLEXI-STREAMS-TEST::STREAM-IN : #STREAM::LATIN-1-FILE-STREAM c:\home\lisp\flexi-streams\test\xjt_gbk_lf.txt FLEXI-STREAMS-TEST::EXTERNAL-FORMAT-IN : #<FLEXI-STREAMS::FLEXI-GBK-FORMAT (:GBK :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B8E57> FLEXI-STREAMS-TEST::STREAM-OUT : #STREAM::LATIN-1-FILE-STREAM C:\Users\edi\AppData\Local\Temp\odd-streams-test\xjt_gbk_lf.txt FLEXI-STREAMS-TEST::EXTERNAL-FORMAT-OUT : #<FLEXI-STREAMS::FLEXI-GBK-FORMAT (:GBK :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B8E57> FLEXI-STREAMS-TEST::IN : #<FLEXI-STREAMS:FLEXI-INPUT-STREAM 22A8363F> FLEXI-STREAMS-TEST::OUT : #<FLEXI-STREAMS:FLEXI-OUTPUT-STREAM 22A835B3> FLEXI-STREAMS-TEST::LINE : NIL
Catch frame: #<Unbound Marker>
Catch frame: #<Unbound Marker>
Call to FLEXI-STREAMS-TEST::COPY-FILE (offset 267) FLEXI-STREAMS-TEST::PATH-IN : #P"c:/home/lisp/flexi-streams/test/xjt_gbk_lf.txt" FLEXI-STREAMS-TEST::EXTERNAL-FORMAT-IN : #<FLEXI-STREAMS::FLEXI-GBK-FORMAT (:GBK :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B8E57> FLEXI-STREAMS-TEST::PATH-OUT : #P"C:/Users/edi/AppData/Local/Temp/odd-streams-test/xjt_gbk_lf.txt" FLEXI-STREAMS-TEST::EXTERNAL-FORMAT-OUT : #<FLEXI-STREAMS::FLEXI-GBK-FORMAT (:GBK :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B8E57> FLEXI-STREAMS-TEST::DIRECTION-OUT : :OUTPUT FLEXI-STREAMS-TEST::DIRECTION-IN : :INPUT DBG::INTERNAL-STREAM : #STREAM::LATIN-1-FILE-STREAM c:\home\lisp\flexi-streams\test\xjt_gbk_lf.txt DELETE : T FLEXI-STREAMS-TEST::IN : #STREAM::LATIN-1-FILE-STREAM c:\home\lisp\flexi-streams\test\xjt_gbk_lf.txt DBG::INTERNAL-STREAM : #STREAM::LATIN-1-FILE-STREAM C:\Users\edi\AppData\Local\Temp\odd-streams-test\xjt_gbk_lf.txt DELETE : T FLEXI-STREAMS-TEST::OUT : #STREAM::LATIN-1-FILE-STREAM C:\Users\edi\AppData\Local\Temp\odd-streams-test\xjt_gbk_lf.txt
Binding frame: FLEXI-STREAMS-TEST::*COPY-FUNCTION* : NIL
Call to FLEXI-STREAMS-TEST::COMPARE-FILES (offset 2620) FLEXI-STREAMS-TEST::VERBOSE : NIL DBG::SHOW-PROGRESS-P {Closing} : 1 DBG::SUCCESSP : T DBG::TESTCOUNT {Closing} : 1513 DBG::|internal-flet-name-for-MAYBE-SHOW-PROGRESS| : #<Closure FLEXI-STREAMS-TEST::MAYBE-SHOW-PROGRESS subfunction of FLEXI-STREAMS-TEST::COMPARE-FILES 30FE4A2> FLEXI-STREAMS-TEST::COMPARE-FILES-ARGS-LIST : ((#1="kafka_utf8_lf.txt" #2=#<FLEXI-STREAMS::FLEXI-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :LF) 229B57BB> #1# #2#) (#1# #2# #3="kafka_utf8_cr.txt" #4=#<FLEXI-STREAMS::FLEXI-CR-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :CR) 229B57FB>) (#1# #2# #5="kafka_utf8_crlf.txt" #6=#<FLEXI-STREAMS::FLEXI-CRLF-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :CRLF) 229B583B>) (#1# #2# #7="kafka_latin1_lf.txt" #8=#<FLEXI-STREAMS::FLEXI-LATIN-1-FORMAT (:ISO-8859-1 :EOL-STYLE :LF) 229B5B6F>) (#1# #2# #9="kafka_latin1_cr.txt" #10=#<FLEXI-STREAMS::FLEXI-CR-LATIN-1-FORMAT (:ISO-8859-1 :EOL-STYLE :CR) 229B5BB7>) (#1# #2# #11="kafka_latin1_crlf.txt" #12=#<FLEXI-STREAMS::FLEXI-CRLF-LATIN-1-FORMAT (:ISO-8859-1 :EOL-STYLE :CRLF) 229B5C03>) (#1# #2# #13="kafka_cp1252_lf.txt" #14=#<FLEXI-STREAMS::FLEXI-8-BIT-FORMAT (:CODE-PAGE :ID 1252 :EOL-STYLE :LF) 229B5C4B>) (#1# #2# #15="kafka_cp1252_cr.txt" #16=#<FLEXI-STREAMS::FLEXI-CR-8-BIT-FORMAT (:CODE-PAGE :ID 1252 :EOL-STYLE :CR) 229B5C93>) (#1# #2# #17="kafka_cp1252_crlf.txt" #18=#<FLEXI-STREAMS::FLEXI-CRLF-8-BIT-FORMAT (:CODE-PAGE :ID 1252 :EOL-STYLE :CRLF) 229B5CDF>) (#3# #4# #1# #2#) (#3# #4# #3# #4#) (#3# #4# #5# #6#) (#3# #4# #7# #8#) (#3# #4# #9# #10#) (#3# #4# #11# #12#) (#3# #4# #13# #14#) (#3# #4# #15# #16#) (#3# #4# #17# #18#) (#5# #6# #1# #2#) (#5# #6# #3# #4#) (#5# #6# #5# #6#) (#5# #6# #7# #8#) (#5# #6# #9# #10#) (#5# #6# #11# #12#) (#5# #6# #13# #14#) (#5# #6# #15# #16#) (#5# #6# #17# #18#) (#7# #8# #1# #2#) (#7# #8# #3# #4#) (#7# #8# #5# #6#) (#7# #8# #7# #8#) (#7# #8# #9# #10#) (#7# #8# #11# #12#) (#7# #8# #13# #14#) (#7# #8# #15# #16#) (#7# #8# #17# #18#) (#9# #10# #1# #2#) (#9# #10# #3# #4#) (#9# #10# #5# #6#) (#9# #10# #7# #8#) (#9# #10# #9# #10#) (#9# #10# #11# #12#) (#9# #10# #13# #14#) (#9# #10# #15# #16#) (#9# #10# #17# #18#) (#11# #12# #1# #2#) (#11# #12# #3# #4#) (#11# #12# #5# #6#) (#11# #12# #7# #8#) (#11# #12# #9# #10#) (#11# #12# #11# #12#) (#11# #12# #13# #14#) (#11# #12# #15# #16#) (#11# #12# #17# #18#) (#13# #14# #1# #2#) (#13# #14# #3# #4#) (#13# #14# #5# #6#) (#13# #14# #7# #8#) (#13# #14# #9# #10#) (#13# #14# #11# #12#) (#13# #14# #13# #14#) (#13# #14# #15# #16#) (#13# #14# #17# #18#) (#15# #16# #1# #2#) (#15# #16# #3# #4#) (#15# #16# #5# #6#) (#15# #16# #7# #8#) (#15# #16# #9# #10#) (#15# #16# #11# #12#) (#15# #16# #13# #14#) (#15# #16# #15# #16#) (#15# #16# #17# #18#) (#17# #18# #1# #2#) (#17# #18# #3# #4#) (#17# #18# #5# #6#) (#17# #18# #7# #8#) (#17# #18# #9# #10#) (#17# #18# #11# #12#) (#17# #18# #13# #14#) (#17# #18# #15# #16#) (#17# #18# #17# #18#) (#19="tilton_utf8_lf.txt" #20=#<FLEXI-STREAMS::FLEXI-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :LF) 229B701B> #19# #20#) (#19# #20# #21="tilton_utf8_cr.txt" #22=#<FLEXI-STREAMS::FLEXI-CR-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :CR) 229B705B>) (#19# #20# #23="tilton_utf8_crlf.txt" #24=#<FLEXI-STREAMS::FLEXI-CRLF-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :CRLF) 229B709F>) (#19# #20# #25="tilton_ascii_lf.txt" #26=#<FLEXI-STREAMS::FLEXI-ASCII-FORMAT (:US-ASCII :EOL-STYLE :LF) 229B70E7>) (#19# #20# #27="tilton_ascii_cr.txt" #28=#<FLEXI-STREAMS::FLEXI-CR-ASCII-FORMAT (:US-ASCII :EOL-STYLE :CR) 229B712F>) (#19# #20# #29="tilton_ascii_crlf.txt" #30=#<FLEXI-STREAMS::FLEXI-CRLF-ASCII-FORMAT (:US-ASCII :EOL-STYLE :CRLF) 229B717B>) (#21# #22# #19# #20#) (#21# #22# #21# #22#) (#21# #22# #23# #24#) (#21# #22# #25# #26#) (#21# #22# #27# #28#) (#21# #22# #29# #30#) (#23# #24# #19# #20#) (#23# #24# #21# #22#) (#23# #24# #23# #24#) (#23# #24# #25# #26#) (#23# #24# #27# #28#) (#23# #24# #29# #30#) (#25# #26# #19# #20#) (#25# #26# #21# #22#) (#25# #26# #23# #24#) (#25# #26# #25# #26#) (#25# #26# #27# #28#) (#25# #26# #29# #30#) (#27# #28# #19# #20#) (#27# #28# #21# #22#) (#27# #28# #23# #24#) (#27# #28# #25# #26#) (#27# #28# #27# #28#) (#27# #28# #29# #30#) (#29# #30# #19# #20#) (#29# #30# #21# #22#) (#29# #30# #23# #24#) (#29# #30# #25# #26#) (#29# #30# #27# #28#) (#29# #30# #29# #30#) (#31="hebrew_utf8_lf.txt" #32=#<FLEXI-STREAMS::FLEXI-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :LF) 229B7A2B> #31# #32#) (#31# #32# #33="hebrew_utf8_cr.txt" #34=#<FLEXI-STREAMS::FLEXI-CR-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :CR) 229B7A6B>) (#31# #32# #35="hebrew_utf8_crlf.txt" #36=#<FLEXI-STREAMS::FLEXI-CRLF-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :CRLF) 229B7AAF>) (#31# #32# #37="hebrew_latin8_lf.txt" #38=#<FLEXI-STREAMS::FLEXI-8-BIT-FORMAT (:ISO-8859-8 :EOL-STYLE :LF) 229B7AFB>) (#31# #32# #39="hebrew_latin8_cr.txt" #40=#<FLEXI-STREAMS::FLEXI-CR-8-BIT-FORMAT (:ISO-8859-8 :EOL-STYLE :CR) 229B7B47>) (#31# #32# #41="hebrew_latin8_crlf.txt" #42=#<FLEXI-STREAMS::FLEXI-CRLF-8-BIT-FORMAT (:ISO-8859-8 :EOL-STYLE :CRLF) 229B7B93>) (#33# #34# #31# #32#) (#33# #34# #33# #34#) (#33# #34# #35# #36#) (#33# #34# #37# #38#) (#33# #34# #39# #40#) (#33# #34# #41# #42#) (#35# #36# #31# #32#) (#35# #36# #33# #34#) (#35# #36# #35# #36#) (#35# #36# #37# #38#) (#35# #36# #39# #40#) (#35# #36# #41# #42#) (#37# #38# #31# #32#) (#37# #38# #33# #34#) (#37# #38# #35# #36#) (#37# #38# #37# #38#) (#37# #38# #39# #40#) (#37# #38# #41# #42#) (#39# #40# #31# #32#) (#39# #40# #33# #34#) (#39# #40# #35# #36#) (#39# #40# #37# #38#) (#39# #40# #39# #40#) (#39# #40# #41# #42#) (#41# #42# #31# #32#) (#41# #42# #33# #34#) (#41# #42# #35# #36#) (#41# #42# #37# #38#) (#41# #42# #39# #40#) (#41# #42# #41# #42#) (#43="russian_utf8_lf.txt" #44=#<FLEXI-STREAMS::FLEXI-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :LF) 229B8443> #43# #44#) (#43# #44# #45="russian_utf8_cr.txt" #46=#<FLEXI-STREAMS::FLEXI-CR-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :CR) 229B8483>) (#43# #44# #47="russian_utf8_crlf.txt" #48=#<FLEXI-STREAMS::FLEXI-CRLF-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :CRLF) 229B84C7>) (#43# #44# #49="russian_koi8r_lf.txt" #50=#<FLEXI-STREAMS::FLEXI-8-BIT-FORMAT (:KOI8-R :EOL-STYLE :LF) 229B8513>) (#43# #44# #51="russian_koi8r_cr.txt" #52=#<FLEXI-STREAMS::FLEXI-CR-8-BIT-FORMAT (:KOI8-R :EOL-STYLE :CR) 229B855F>) (#43# #44# #53="russian_koi8r_crlf.txt" #54=#<FLEXI-STREAMS::FLEXI-CRLF-8-BIT-FORMAT (:KOI8-R :EOL-STYLE :CRLF) 229B85AB>) (#45# #46# #43# #44#) (#45# #46# #45# #46#) (#45# #46# #47# #48#) (#45# #46# #49# #50#) (#45# #46# #51# #52#) (#45# #46# #53# #54#) (#47# #48# #43# #44#) (#47# #48# #45# #46#) (#47# #48# #47# #48#) (#47# #48# #49# #50#) (#47# #48# #51# #52#) (#47# #48# #53# #54#) (#49# #50# #43# #44#) (#49# #50# #45# #46#) (#49# #50# #47# #48#) (#49# #50# #49# #50#) (#49# #50# #51# #52#) (#49# #50# #53# #54#) (#51# #52# #43# #44#) (#51# #52# #45# #46#) (#51# #52# #47# #48#) (#51# #52# #49# #50#) (#51# #52# #51# #52#) (#51# #52# #53# #54#) (#53# #54# #43# #44#) (#53# #54# #45# #46#) (#53# #54# #47# #48#) (#53# #54# #49# #50#) (#53# #54# #51# #52#) (#53# #54# #53# #54#) (#55="xjt_gbk_lf.txt" #56=#<FLEXI-STREAMS::FLEXI-GBK-FORMAT (:GBK :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B8E57> #55# #56#) (#55# #56# #57="xjt_gbk_cr.txt" #58=#<FLEXI-STREAMS::FLEXI-CR-GBK-FORMAT (:GBK :EOL-STYLE :CR :LITTLE-ENDIAN T) 229B8E93>) (#55# #56# #59="xjt_gbk_crlf.txt" #60=#<FLEXI-STREAMS::FLEXI-CRLF-GBK-FORMAT (:GBK :EOL-STYLE :CRLF :LITTLE-ENDIAN T) 229B8ED3>) (#57# #58# #55# #56#) (#57# #58# #57# #58#) (#57# #58# #59# #60#) (#59# #60# #55# #56#) (#59# #60# #57# #58#) (#59# #60# #59# #60#) (#61="unicode_demo_utf8_lf.txt" #62=#<FLEXI-STREAMS::FLEXI-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :LF) 229B9137> #61# #62#) (#61# #62# #63="unicode_demo_utf8_cr.txt" #64=#<FLEXI-STREAMS::FLEXI-CR-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :CR) 229B917F>) (#61# #62# #65="unicode_demo_utf8_crlf.txt" #66=#<FLEXI-STREAMS::FLEXI-CRLF-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :CRLF) 229B91C7>) (#61# #62# #67="unicode_demo_ucs2_lf_le.txt" #68=#<FLEXI-STREAMS::FLEXI-UTF-16-LE-FORMAT (:UTF-16 :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B920F>) (#61# #62# #69="unicode_demo_ucs2_cr_le.txt" #70=#<FLEXI-STREAMS::FLEXI-CR-UTF-16-LE-FORMAT (:UTF-16 :EOL-STYLE :CR :LITTLE-ENDIAN T) 229B9257>) (#61# #62# #71="unicode_demo_ucs2_crlf_le.txt" #72=#<FLEXI-STREAMS::FLEXI-CRLF-UTF-16-LE-FORMAT (:UTF-16 :EOL-STYLE :CRLF :LITTLE-ENDIAN T) 229B92A3>) (#61# #62# #73="unicode_demo_ucs2_lf_be.txt" #74=#<FLEXI-STREAMS::FLEXI-UTF-16-BE-FORMAT (:UTF-16 :EOL-STYLE :LF :LITTLE-ENDIAN NIL) 229B92EB>) (#61# #62# #75="unicode_demo_ucs2_cr_be.txt" #76=#<FLEXI-STREAMS::FLEXI-CR-UTF-16-BE-FORMAT (:UTF-16 :EOL-STYLE :CR :LITTLE-ENDIAN NIL) 229B9333>) (#61# #62# #77="unicode_demo_ucs2_crlf_be.txt" #78=#<FLEXI-STREAMS::FLEXI-CRLF-UTF-16-BE-FORMAT (:UTF-16 :EOL-STYLE :CRLF :LITTLE-ENDIAN NIL) 229B937F>) (#61# #62# #79="unicode_demo_ucs4_lf_le.txt" #80=#<FLEXI-STREAMS::FLEXI-UTF-32-LE-FORMAT (:UTF-32 :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B93C7>) (#61# #62# #81="unicode_demo_ucs4_cr_le.txt" #82=#<FLEXI-STREAMS::FLEXI-CR-UTF-32-LE-FORMAT (:UTF-32 :EOL-STYLE :CR :LITTLE-ENDIAN T) 229B940F>) (#61# #62# #83="unicode_demo_ucs4_crlf_le.txt" #84=#<FLEXI-STREAMS::FLEXI-CRLF-UTF-32-LE-FORMAT (:UTF-32 :EOL-STYLE :CRLF :LITTLE-ENDIAN T) 229B945B>) (#61# #62# #85="unicode_demo_ucs4_lf_be.txt" #86=#<FLEXI-STREAMS::FLEXI-UTF-32-BE-FORMAT (:UTF-32 :EOL-STYLE :LF :LITTLE-ENDIAN NIL) 229B94A3>) (#61# #62# #87="unicode_demo_ucs4_cr_be.txt" #88=#<FLEXI-STREAMS::FLEXI-CR-UTF-32-BE-FORMAT (:UTF-32 :EOL-STYLE :CR :LITTLE-ENDIAN NIL) 229B94EB>) (#61# #62# #89="unicode_demo_ucs4_crlf_be.txt" #90=#<FLEXI-STREAMS::FLEXI-CRLF-UTF-32-BE-FORMAT (:UTF-32 :EOL-STYLE :CRLF :LITTLE-ENDIAN NIL) 229B9537>) (#63# #64# #61# #62#) (#63# #64# #63# #64#) (#63# #64# #65# #66#) (#63# #64# #67# #68#) (#63# #64# #69# #70#) (#63# #64# #71# #72#) (#63# #64# #73# #74#) (#63# #64# #75# #76#) (#63# #64# #77# #78#) (#63# #64# #79# #80#) (#63# #64# #81# #82#) (#63# #64# #83# #84#) (#63# #64# #85# #86#) (#63# #64# #87# #88#) (#63# #64# #89# #90#) (#65# #66# #61# #62#) (#65# #66# #63# #64#) (#65# #66# #65# #66#) (#65# #66# #67# #68#) (#65# #66# #69# #70#) (#65# #66# #71# #72#) (#65# #66# #73# #74#) (#65# #66# #75# #76#) (#65# #66# #77# #78#) (#65# #66# #79# #80#) (#65# #66# #81# #82#) (#65# #66# #83# #84#) (#65# #66# #85# #86#) (#65# #66# #87# #88#) (#65# #66# #89# #90#) (#67# #68# #61# #62#) (#67# #68# #63# #64#) (#67# #68# #65# #66#) (#67# #68# #67# #68#) (#67# #68# #69# #70#) (#67# #68# #71# #72#) (#67# #68# #73# #74#) (#67# #68# #75# #76#) (#67# #68# #77# #78#) (#67# #68# #79# #80#) (#67# #68# #81# #82#) (#67# #68# #83# #84#) (#67# #68# #85# #86#) (#67# #68# #87# #88#) (#67# #68# #89# #90#) (#69# #70# #61# #62#) (#69# #70# #63# #64#) (#69# #70# #65# #66#) (#69# #70# #67# #68#) (#69# #70# #69# #70#) (#69# #70# #71# #72#) (#69# #70# #73# #74#) (#69# #70# #75# #76#) (#69# #70# #77# #78#) (#69# #70# #79# #80#) (#69# #70# #81# #82#) (#69# #70# #83# #84#) (#69# #70# #85# #86#) (#69# #70# #87# #88#) (#69# #70# #89# #90#) (#71# #72# #61# #62#) (#71# #72# #63# #64#) (#71# #72# #65# #66#) (#71# #72# #67# #68#) (#71# #72# #69# #70#) (#71# #72# #71# #72#) (#71# #72# #73# #74#) (#71# #72# #75# #76#) (#71# #72# #77# #78#) (#71# #72# #79# #80#) (#71# #72# #81# #82#) (#71# #72# #83# #84#) (#71# #72# #85# #86#) (#71# #72# #87# #88#) (#71# #72# #89# #90#) (#73# #74# #61# #62#) (#73# #74# #63# #64#) (#73# #74# #65# #66#) (#73# #74# #67# #68#) (#73# #74# #69# #70#) (#73# #74# #71# #72#) (#73# #74# #73# #74#) (#73# #74# #75# #76#) (#73# #74# #77# #78#) (#73# #74# #79# #80#) (#73# #74# #81# #82#) (#73# #74# #83# #84#) (#73# #74# #85# #86#) (#73# #74# #87# #88#) (#73# #74# #89# #90#) (#75# #76# #61# #62#) (#75# #76# #63# #64#) (#75# #76# #65# #66#) (#75# #76# #67# #68#) (#75# #76# #69# #70#) (#75# #76# #71# #72#) (#75# #76# #73# #74#) (#75# #76# #75# #76#) (#75# #76# #77# #78#) (#75# #76# #79# #80#) (#75# #76# #81# #82#) (#75# #76# #83# #84#) (#75# #76# #85# #86#) (#75# #76# #87# #88#) (#75# #76# #89# #90#) (#77# #78# #61# #62#) (#77# #78# #63# #64#) (#77# #78# #65# #66#) (#77# #78# #67# #68#) (#77# #78# #69# #70#) (#77# #78# #71# #72#) (#77# #78# #73# #74#) (#77# #78# #75# #76#) (#77# #78# #77# #78#) (#77# #78# #79# #80#) (#77# #78# #81# #82#) (#77# #78# #83# #84#) (#77# #78# #85# #86#) (#77# #78# #87# #88#) (#77# #78# #89# #90#) (#79# #80# #61# #62#) (#79# #80# #63# #64#) (#79# #80# #65# #66#) (#79# #80# #67# #68#) (#79# #80# #69# #70#) (#79# #80# #71# #72#) (#79# #80# #73# #74#) (#79# #80# #75# #76#) (#79# #80# #77# #78#) (#79# #80# #79# #80#) (#79# #80# #81# #82#) (#79# #80# #83# #84#) (#79# #80# #85# #86#) (#79# #80# #87# #88#) (#79# #80# #89# #90#) (#81# #82# #61# #62#) (#81# #82# #63# #64#) (#81# #82# #65# #66#) (#81# #82# #67# #68#) (#81# #82# #69# #70#) (#81# #82# #71# #72#) (#81# #82# #73# #74#) (#81# #82# #75# #76#) (#81# #82# #77# #78#) (#81# #82# #79# #80#) (#81# #82# #81# #82#) (#81# #82# #83# #84#) (#81# #82# #85# #86#) (#81# #82# #87# #88#) (#81# #82# #89# #90#) (#83# #84# #61# #62#) (#83# #84# #63# #64#) (#83# #84# #65# #66#) (#83# #84# #67# #68#) (#83# #84# #69# #70#) (#83# #84# #71# #72#) (#83# #84# #73# #74#) (#83# #84# #75# #76#) (#83# #84# #77# #78#) (#83# #84# #79# #80#) (#83# #84# #81# #82#) (#83# #84# #83# #84#) (#83# #84# #85# #86#) (#83# #84# #87# #88#) (#83# #84# #89# #90#) (#85# #86# #61# #62#) (#85# #86# #63# #64#) (#85# #86# #65# #66#) (#85# #86# #67# #68#) (#85# #86# #69# #70#) (#85# #86# #71# #72#) (#85# #86# #73# #74#) (#85# #86# #75# #76#) (#85# #86# #77# #78#) (#85# #86# #79# #80#) (#85# #86# #81# #82#) (#85# #86# #83# #84#) (#85# #86# #85# #86#) (#85# #86# #87# #88#) (#85# #86# #89# #90#) (#87# #88# #61# #62#) (#87# #88# #63# #64#) (#87# #88# #65# #66#) (#87# #88# #67# #68#) (#87# #88# #69# #70#) (#87# #88# #71# #72#) (#87# #88# #73# #74#) (#87# #88# #75# #76#) (#87# #88# #77# #78#) (#87# #88# #79# #80#) (#87# #88# #81# #82#) (#87# #88# #83# #84#) (#87# #88# #85# #86#) (#87# #88# #87# #88#) (#87# #88# #89# #90#) (#89# #90# #61# #62#) (#89# #90# #63# #64#) (#89# #90# #65# #66#) (#89# #90# #67# #68#) (#89# #90# #69# #70#) (#89# #90# #71# #72#) (#89# #90# #73# #74#) (#89# #90# #75# #76#) (#89# #90# #77# #78#) (#89# #90# #79# #80#) (#89# #90# #81# #82#) (#89# #90# #83# #84#) (#89# #90# #85# #86#) (#89# #90# #87# #88#) (#89# #90# #89# #90#)) FLEXI-STREAMS-TEST::*COPY-FUNCTION* {Special} : FLEXI-STREAMS-TEST::COPY-STREAM DBG::|tail-| : (FLEXI-STREAMS-TEST::COPY-STREAM*) FLEXI-STREAMS-TEST::PATH-IN : "xjt_gbk_lf.txt" FLEXI-STREAMS-TEST::EXTERNAL-FORMAT-IN : #<FLEXI-STREAMS::FLEXI-GBK-FORMAT (:GBK :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B8E57> FLEXI-STREAMS-TEST::PATH-OUT : "xjt_gbk_lf.txt" FLEXI-STREAMS-TEST::EXTERNAL-FORMAT-OUT : #<FLEXI-STREAMS::FLEXI-GBK-FORMAT (:GBK :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B8E57> DBG::|tail-| : ((#1="xjt_gbk_lf.txt" #2=#<FLEXI-STREAMS::FLEXI-GBK-FORMAT (:GBK :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B8E57> #3="xjt_gbk_cr.txt" #4=#<FLEXI-STREAMS::FLEXI-CR-GBK-FORMAT (:GBK :EOL-STYLE :CR :LITTLE-ENDIAN T) 229B8E93>) (#1# #2# #5="xjt_gbk_crlf.txt" #6=#<FLEXI-STREAMS::FLEXI-CRLF-GBK-FORMAT (:GBK :EOL-STYLE :CRLF :LITTLE-ENDIAN T) 229B8ED3>) (#3# #4# #1# #2#) (#3# #4# #3# #4#) (#3# #4# #5# #6#) (#5# #6# #1# #2#) (#5# #6# #3# #4#) (#5# #6# #5# #6#) (#7="unicode_demo_utf8_lf.txt" #8=#<FLEXI-STREAMS::FLEXI-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :LF) 229B9137> #7# #8#) (#7# #8# #9="unicode_demo_utf8_cr.txt" #10=#<FLEXI-STREAMS::FLEXI-CR-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :CR) 229B917F>) (#7# #8# #11="unicode_demo_utf8_crlf.txt" #12=#<FLEXI-STREAMS::FLEXI-CRLF-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :CRLF) 229B91C7>) (#7# #8# #13="unicode_demo_ucs2_lf_le.txt" #14=#<FLEXI-STREAMS::FLEXI-UTF-16-LE-FORMAT (:UTF-16 :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B920F>) (#7# #8# #15="unicode_demo_ucs2_cr_le.txt" #16=#<FLEXI-STREAMS::FLEXI-CR-UTF-16-LE-FORMAT (:UTF-16 :EOL-STYLE :CR :LITTLE-ENDIAN T) 229B9257>) (#7# #8# #17="unicode_demo_ucs2_crlf_le.txt" #18=#<FLEXI-STREAMS::FLEXI-CRLF-UTF-16-LE-FORMAT (:UTF-16 :EOL-STYLE :CRLF :LITTLE-ENDIAN T) 229B92A3>) (#7# #8# #19="unicode_demo_ucs2_lf_be.txt" #20=#<FLEXI-STREAMS::FLEXI-UTF-16-BE-FORMAT (:UTF-16 :EOL-STYLE :LF :LITTLE-ENDIAN NIL) 229B92EB>) (#7# #8# #21="unicode_demo_ucs2_cr_be.txt" #22=#<FLEXI-STREAMS::FLEXI-CR-UTF-16-BE-FORMAT (:UTF-16 :EOL-STYLE :CR :LITTLE-ENDIAN NIL) 229B9333>) (#7# #8# #23="unicode_demo_ucs2_crlf_be.txt" #24=#<FLEXI-STREAMS::FLEXI-CRLF-UTF-16-BE-FORMAT (:UTF-16 :EOL-STYLE :CRLF :LITTLE-ENDIAN NIL) 229B937F>) (#7# #8# #25="unicode_demo_ucs4_lf_le.txt" #26=#<FLEXI-STREAMS::FLEXI-UTF-32-LE-FORMAT (:UTF-32 :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B93C7>) (#7# #8# #27="unicode_demo_ucs4_cr_le.txt" #28=#<FLEXI-STREAMS::FLEXI-CR-UTF-32-LE-FORMAT (:UTF-32 :EOL-STYLE :CR :LITTLE-ENDIAN T) 229B940F>) (#7# #8# #29="unicode_demo_ucs4_crlf_le.txt" #30=#<FLEXI-STREAMS::FLEXI-CRLF-UTF-32-LE-FORMAT (:UTF-32 :EOL-STYLE :CRLF :LITTLE-ENDIAN T) 229B945B>) (#7# #8# #31="unicode_demo_ucs4_lf_be.txt" #32=#<FLEXI-STREAMS::FLEXI-UTF-32-BE-FORMAT (:UTF-32 :EOL-STYLE :LF :LITTLE-ENDIAN NIL) 229B94A3>) (#7# #8# #33="unicode_demo_ucs4_cr_be.txt" #34=#<FLEXI-STREAMS::FLEXI-CR-UTF-32-BE-FORMAT (:UTF-32 :EOL-STYLE :CR :LITTLE-ENDIAN NIL) 229B94EB>) (#7# #8# #35="unicode_demo_ucs4_crlf_be.txt" #36=#<FLEXI-STREAMS::FLEXI-CRLF-UTF-32-BE-FORMAT (:UTF-32 :EOL-STYLE :CRLF :LITTLE-ENDIAN NIL) 229B9537>) (#9# #10# #7# #8#) (#9# #10# #9# #10#) (#9# #10# #11# #12#) (#9# #10# #13# #14#) (#9# #10# #15# #16#) (#9# #10# #17# #18#) (#9# #10# #19# #20#) (#9# #10# #21# #22#) (#9# #10# #23# #24#) (#9# #10# #25# #26#) (#9# #10# #27# #28#) (#9# #10# #29# #30#) (#9# #10# #31# #32#) (#9# #10# #33# #34#) (#9# #10# #35# #36#) (#11# #12# #7# #8#) (#11# #12# #9# #10#) (#11# #12# #11# #12#) (#11# #12# #13# #14#) (#11# #12# #15# #16#) (#11# #12# #17# #18#) (#11# #12# #19# #20#) (#11# #12# #21# #22#) (#11# #12# #23# #24#) (#11# #12# #25# #26#) (#11# #12# #27# #28#) (#11# #12# #29# #30#) (#11# #12# #31# #32#) (#11# #12# #33# #34#) (#11# #12# #35# #36#) (#13# #14# #7# #8#) (#13# #14# #9# #10#) (#13# #14# #11# #12#) (#13# #14# #13# #14#) (#13# #14# #15# #16#) (#13# #14# #17# #18#) (#13# #14# #19# #20#) (#13# #14# #21# #22#) (#13# #14# #23# #24#) (#13# #14# #25# #26#) (#13# #14# #27# #28#) (#13# #14# #29# #30#) (#13# #14# #31# #32#) (#13# #14# #33# #34#) (#13# #14# #35# #36#) (#15# #16# #7# #8#) (#15# #16# #9# #10#) (#15# #16# #11# #12#) (#15# #16# #13# #14#) (#15# #16# #15# #16#) (#15# #16# #17# #18#) (#15# #16# #19# #20#) (#15# #16# #21# #22#) (#15# #16# #23# #24#) (#15# #16# #25# #26#) (#15# #16# #27# #28#) (#15# #16# #29# #30#) (#15# #16# #31# #32#) (#15# #16# #33# #34#) (#15# #16# #35# #36#) (#17# #18# #7# #8#) (#17# #18# #9# #10#) (#17# #18# #11# #12#) (#17# #18# #13# #14#) (#17# #18# #15# #16#) (#17# #18# #17# #18#) (#17# #18# #19# #20#) (#17# #18# #21# #22#) (#17# #18# #23# #24#) (#17# #18# #25# #26#) (#17# #18# #27# #28#) (#17# #18# #29# #30#) (#17# #18# #31# #32#) (#17# #18# #33# #34#) (#17# #18# #35# #36#) (#19# #20# #7# #8#) (#19# #20# #9# #10#) (#19# #20# #11# #12#) (#19# #20# #13# #14#) (#19# #20# #15# #16#) (#19# #20# #17# #18#) (#19# #20# #19# #20#) (#19# #20# #21# #22#) (#19# #20# #23# #24#) (#19# #20# #25# #26#) (#19# #20# #27# #28#) (#19# #20# #29# #30#) (#19# #20# #31# #32#) (#19# #20# #33# #34#) (#19# #20# #35# #36#) (#21# #22# #7# #8#) (#21# #22# #9# #10#) (#21# #22# #11# #12#) (#21# #22# #13# #14#) (#21# #22# #15# #16#) (#21# #22# #17# #18#) (#21# #22# #19# #20#) (#21# #22# #21# #22#) (#21# #22# #23# #24#) (#21# #22# #25# #26#) (#21# #22# #27# #28#) (#21# #22# #29# #30#) (#21# #22# #31# #32#) (#21# #22# #33# #34#) (#21# #22# #35# #36#) (#23# #24# #7# #8#) (#23# #24# #9# #10#) (#23# #24# #11# #12#) (#23# #24# #13# #14#) (#23# #24# #15# #16#) (#23# #24# #17# #18#) (#23# #24# #19# #20#) (#23# #24# #21# #22#) (#23# #24# #23# #24#) (#23# #24# #25# #26#) (#23# #24# #27# #28#) (#23# #24# #29# #30#) (#23# #24# #31# #32#) (#23# #24# #33# #34#) (#23# #24# #35# #36#) (#25# #26# #7# #8#) (#25# #26# #9# #10#) (#25# #26# #11# #12#) (#25# #26# #13# #14#) (#25# #26# #15# #16#) (#25# #26# #17# #18#) (#25# #26# #19# #20#) (#25# #26# #21# #22#) (#25# #26# #23# #24#) (#25# #26# #25# #26#) (#25# #26# #27# #28#) (#25# #26# #29# #30#) (#25# #26# #31# #32#) (#25# #26# #33# #34#) (#25# #26# #35# #36#) (#27# #28# #7# #8#) (#27# #28# #9# #10#) (#27# #28# #11# #12#) (#27# #28# #13# #14#) (#27# #28# #15# #16#) (#27# #28# #17# #18#) (#27# #28# #19# #20#) (#27# #28# #21# #22#) (#27# #28# #23# #24#) (#27# #28# #25# #26#) (#27# #28# #27# #28#) (#27# #28# #29# #30#) (#27# #28# #31# #32#) (#27# #28# #33# #34#) (#27# #28# #35# #36#) (#29# #30# #7# #8#) (#29# #30# #9# #10#) (#29# #30# #11# #12#) (#29# #30# #13# #14#) (#29# #30# #15# #16#) (#29# #30# #17# #18#) (#29# #30# #19# #20#) (#29# #30# #21# #22#) (#29# #30# #23# #24#) (#29# #30# #25# #26#) (#29# #30# #27# #28#) (#29# #30# #29# #30#) (#29# #30# #31# #32#) (#29# #30# #33# #34#) (#29# #30# #35# #36#) (#31# #32# #7# #8#) (#31# #32# #9# #10#) (#31# #32# #11# #12#) (#31# #32# #13# #14#) (#31# #32# #15# #16#) (#31# #32# #17# #18#) (#31# #32# #19# #20#) (#31# #32# #21# #22#) (#31# #32# #23# #24#) (#31# #32# #25# #26#) (#31# #32# #27# #28#) (#31# #32# #29# #30#) (#31# #32# #31# #32#) (#31# #32# #33# #34#) (#31# #32# #35# #36#) (#33# #34# #7# #8#) (#33# #34# #9# #10#) (#33# #34# #11# #12#) (#33# #34# #13# #14#) (#33# #34# #15# #16#) (#33# #34# #17# #18#) (#33# #34# #19# #20#) (#33# #34# #21# #22#) (#33# #34# #23# #24#) (#33# #34# #25# #26#) (#33# #34# #27# #28#) (#33# #34# #29# #30#) (#33# #34# #31# #32#) (#33# #34# #33# #34#) (#33# #34# #35# #36#) (#35# #36# #7# #8#) (#35# #36# #9# #10#) (#35# #36# #11# #12#) (#35# #36# #13# #14#) (#35# #36# #15# #16#) (#35# #36# #17# #18#) (#35# #36# #19# #20#) (#35# #36# #21# #22#) (#35# #36# #23# #24#) (#35# #36# #25# #26#) (#35# #36# #27# #28#) (#35# #36# #29# #30#) (#35# #36# #31# #32#) (#35# #36# #33# #34#) (#35# #36# #35# #36#)) FLEXI-STREAMS-TEST::PATH-IN : "xjt_gbk_lf.txt" FLEXI-STREAMS-TEST::EXTERNAL-FORMAT-IN : #<FLEXI-STREAMS::FLEXI-GBK-FORMAT (:GBK :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B8E57> FLEXI-STREAMS-TEST::PATH-OUT : "xjt_gbk_lf.txt" FLEXI-STREAMS-TEST::EXTERNAL-FORMAT-OUT : #<FLEXI-STREAMS::FLEXI-GBK-FORMAT (:GBK :EOL-STYLE :LF :LITTLE-ENDIAN T) 229B8E57> FLEXI-STREAMS-TEST::FULL-PATH-IN : #P"c:/home/lisp/flexi-streams/test/xjt_gbk_lf.txt" FLEXI-STREAMS-TEST::FULL-PATH-OUT : #P"C:/Users/edi/AppData/Local/Temp/odd-streams-test/xjt_gbk_lf.txt" FLEXI-STREAMS-TEST::FULL-PATH-ORIG : #P"c:/home/lisp/flexi-streams/test/xjt_gbk_lf.txt" DBG::|dolist-| : (:OUTPUT :IO) FLEXI-STREAMS-TEST::DIRECTION-OUT : :OUTPUT DBG::|dolist-| : (:INPUT :IO) FLEXI-STREAMS-TEST::DIRECTION-IN : :INPUT
Call to FLEXI-STREAMS-TEST:RUN-ALL-TESTS (offset 39) FLEXI-STREAMS-TEST::VERBOSE : NIL FLEXI-STREAMS-TEST::SUCCESSP : T
Call to FUNCALL (offset 25) FUNCTION : FLEXI-STREAMS-TEST:RUN-ALL-TESTS SYSTEM::ARGUMENTS : NIL
Interpreted call to (METHOD ASDF:PERFORM (ASDF:TEST-OP (EQL (ASDF:FIND-SYSTEM (QUOTE FLEXI-STREAMS-SYSTEM::FLEXI-STREAMS))))): FLEXI-STREAMS-SYSTEM::O : #<ASDF:TEST-OP (:FORCE T) 229CD873> FLEXI-STREAMS-SYSTEM::C : #<ASDF:SYSTEM "flexi-streams" 216B1693> #:G3596 : (#<Function (METHOD ASDF:PERFORM (ASDF:TEST-OP ASDF:COMPONENT)) 2178916A> #<Function (METHOD ASDF:PERFORM (ASDF:OPERATION ASDF:MODULE)) 2176F7B2>) #:G3598 : #<ASDF:SYSTEM "flexi-streams" 216B1693> #:G3597 : #<ASDF:TEST-OP (:FORCE T) 229CD873>
Block environment contour: Tag environment contour: Function environment contour Variable environment contour: () Binding frame: CLOS::*NEXT-METHODS* : NIL
Call to CLOS::METHOD-COMBINATION-TEMPLATE (offset 75)
Catch frame: ((SUBFUNCTION 1 ASDF:OPERATE) . RESTART-CASE)
Catch frame: ((SUBFUNCTION 1 ASDF:OPERATE) . 2)
Catch frame: ((SUBFUNCTION 1 ASDF:OPERATE) . 1)
Call to (SUBFUNCTION 1 ASDF:OPERATE) (offset 563) ASDF::OP {Closing} : #<ASDF:TEST-OP (:FORCE T) 229CD873> ASDF:COMPONENT {Closing} : #<ASDF:SYSTEM "flexi-streams" 216B1693> DBG::|tail-| : NIL DBG::G : ((SUBFUNCTION 1 ASDF:OPERATE) . RESTART-CASE) DBG::G : #<Closure 2 subfunction of (SUBFUNCTION 1 ASDF:OPERATE) 30FEAF2> DBG::G : #<Closure 1 subfunction of ASDF:OPERATE 30FEADA> CONDITIONS::*RESTART-CLUSTERS* {Special} : ((#<RESTART ASDF:RETRY 22A82E5B> #<RESTART ASDF:ACCEPT 22A82E03>) (#<RESTART ABORT 22A82D9F>) (#<RESTART ABORT 216B0553>)) ASDF::STEPS {Closed} : ((#1=#<ASDF:TEST-OP (:FORCE T) 229CD873> . #<ASDF:CL-SOURCE-FILE "packages" 216B18E7>) (#1# . #<ASDF:CL-SOURCE-FILE "mapping" 216B1A7F>) (#1# . #<ASDF:CL-SOURCE-FILE "ascii" 216B1C7B>) (#1# . #<ASDF:CL-SOURCE-FILE "koi8-r" 216B1E9B>) (#1# . #<ASDF:CL-SOURCE-FILE "iso-8859" 216B20DF>) (#1# . #<ASDF:CL-SOURCE-FILE "enc-cn-tbl" 216B2347>) (#1# . #<ASDF:CL-SOURCE-FILE "code-pages" 216B25D3>) (#1# . #<ASDF:CL-SOURCE-FILE "specials" 216B2883>) (#1# . #<ASDF:CL-SOURCE-FILE "util" 216B2B57>) (#1# . #<ASDF:CL-SOURCE-FILE "conditions" 216B2E4F>) (#1# . #<ASDF:CL-SOURCE-FILE "external-format" 216B316B>) (#1# . #<ASDF:CL-SOURCE-FILE "length" 216B34AB>) (#1# . #<ASDF:CL-SOURCE-FILE "encode" 216B380F>) (#1# . #<ASDF:CL-SOURCE-FILE "decode" 216B3B97>) (#1# . #<ASDF:CL-SOURCE-FILE "in-memory" 216B3F43>) (#1# . #<ASDF:CL-SOURCE-FILE "stream" 216B4313>) (#1# . #<ASDF:CL-SOURCE-FILE "lw-char-stream" 216B4707>) (#1# . #<ASDF:CL-SOURCE-FILE "output" 216B4B1F>) (#1# . #<ASDF:CL-SOURCE-FILE "input" 216B4F5B>) (#1# . #<ASDF:CL-SOURCE-FILE "io" 216B53BB>) (#1# . #<ASDF:CL-SOURCE-FILE "strings" 216B583F>) (#1# . #<ASDF:SYSTEM "flexi-streams" 216B1693>))
Binding frame: COMPILER::*INSIDE-COMPILATION-UNIT* : NIL
Binding frame: COMPILER::*UNKNOWN-FUNCTIONS* : NIL
Call to COMPILER::DO-COMPILATION-UNIT (offset 80) COMPILER::CONTINUATION : #<Closure 1 subfunction of ASDF:OPERATE 229C9B22> COMPILER::DO-MESSAGES : T COMPILER::SUMMARIZE : NIL
Binding frame: COMPILER::*COMPILATION-UNIT-PATHNAMES* : NIL
Binding frame: COMPILER::*INITIAL-COMPILATION-ENVIRONMENT* : NIL
Call to COMPILER::WITH-COMPILATION-UNIT-INTERNAL (offset 143) COMPILER::CONTINUATION : #<Closure 1 subfunction of ASDF:OPERATE 229C9B22> COMPILER::OVERRIDE : NIL COMPILER::SUMMARIZE : NIL COMPILER::ENVIRONMENT : NIL
Binding frame: ASDF::*VERBOSE-OUT* : NIL
Call to ASDF:OPERATE (offset 287) ASDF::OPERATION-CLASS : ASDF:TEST-OP ASDF:SYSTEM : "flexi-streams" ASDF::ARGS : (:FORCE T) ASDF::VERBOSE : T ASDF:VERSION : NIL ASDF::OP : #<ASDF:TEST-OP (:FORCE T) 229CD873> ASDF::*VERBOSE-OUT* {Special} : #<EDITOR::EDITOR-OUTPUT-STREAM #<EDITOR:BUFFER Background Output> 21F19ADF> ASDF:SYSTEM : #<ASDF:SYSTEM "flexi-streams" 216B1693> ASDF::STEPS {Closing} : ((#1=#<ASDF:TEST-OP (:FORCE T) 229CD873> . #<ASDF:CL-SOURCE-FILE "packages" 216B18E7>) (#1# . #<ASDF:CL-SOURCE-FILE "mapping" 216B1A7F>) (#1# . #<ASDF:CL-SOURCE-FILE "ascii" 216B1C7B>) (#1# . #<ASDF:CL-SOURCE-FILE "koi8-r" 216B1E9B>) (#1# . #<ASDF:CL-SOURCE-FILE "iso-8859" 216B20DF>) (#1# . #<ASDF:CL-SOURCE-FILE "enc-cn-tbl" 216B2347>) (#1# . #<ASDF:CL-SOURCE-FILE "code-pages" 216B25D3>) (#1# . #<ASDF:CL-SOURCE-FILE "specials" 216B2883>) (#1# . #<ASDF:CL-SOURCE-FILE "util" 216B2B57>) (#1# . #<ASDF:CL-SOURCE-FILE "conditions" 216B2E4F>) (#1# . #<ASDF:CL-SOURCE-FILE "external-format" 216B316B>) (#1# . #<ASDF:CL-SOURCE-FILE "length" 216B34AB>) (#1# . #<ASDF:CL-SOURCE-FILE "encode" 216B380F>) (#1# . #<ASDF:CL-SOURCE-FILE "decode" 216B3B97>) (#1# . #<ASDF:CL-SOURCE-FILE "in-memory" 216B3F43>) (#1# . #<ASDF:CL-SOURCE-FILE "stream" 216B4313>) (#1# . #<ASDF:CL-SOURCE-FILE "lw-char-stream" 216B4707>) (#1# . #<ASDF:CL-SOURCE-FILE "output" 216B4B1F>) (#1# . #<ASDF:CL-SOURCE-FILE "input" 216B4F5B>) (#1# . #<ASDF:CL-SOURCE-FILE "io" 216B53BB>) (#1# . #<ASDF:CL-SOURCE-FILE "strings" 216B583F>) (#1# . #<ASDF:SYSTEM "flexi-streams" 216B1693>))
Catch frame: CAPI::ABORT-CALLBACK-CATCH
Binding frame: CAPI::*TOP-LEVEL-INTERFACE* : NIL
Call to (METHOD EDITOR::IN-APPLY-WITH-CURRENT-CONTACT-WINDOW (CAPI:EDITOR-PANE T T)) (offset 53) CAPI::PANE : #<CAPI:COLLECTOR-PANE LISPWORKS-TOOLS::BACKGROUND-OUTPUT-PANE 21F2CC83> FUNCTION : #<Closure CAPI::WITH-RANDOM-TYPEOUT-FUNC subfunction of CAPI::FUNCALL-BACKGROUND-JOB-WITH-TYPEOUT-AUX 229B1692> CAPI::ARGS : (#<EDITOR::EDITOR-OUTPUT-STREAM #<EDITOR:BUFFER Background Output> 21F2BF7B>)
Binding frame: EDITOR::*CURRENT-CONTACT-WINDOW* : NIL
Call to EDITOR::APPLY-WITH-CURRENT-CONTACT-WINDOW (offset 57) EDITOR::WINDOW : #<EDITOR::WM-WINDOW "Background Output" 216B68AF> FUNCTION : #<Closure CAPI::WITH-RANDOM-TYPEOUT-FUNC subfunction of CAPI::FUNCALL-BACKGROUND-JOB-WITH-TYPEOUT-AUX 229B1692> EDITOR::ARGS : (#<EDITOR::EDITOR-OUTPUT-STREAM #<EDITOR:BUFFER Background Output> 21F2BF7B>)
Catch frame: #<Unbound Marker>
Call to CAPI::INTERNAL-DO-WITH-RANDOM-TYPEOUT (offset 101) CAPI::FUNC : #<Closure CAPI::WITH-RANDOM-TYPEOUT-FUNC subfunction of CAPI::FUNCALL-BACKGROUND-JOB-WITH-TYPEOUT-AUX 229B1692> STREAM : #<EDITOR::EDITOR-OUTPUT-STREAM #<EDITOR:BUFFER Background Output> 21F2BF7B> CAPI::PANE : #<CAPI:LISTENER-PANE CAPI:EDITOR-PANE 21F24E2F> CAPI:COLLECTOR-PANE : #<CAPI:COLLECTOR-PANE LISPWORKS-TOOLS::BACKGROUND-OUTPUT-PANE 21F2CC83> CAPI::ALREADY-MAPPED : NIL
Binding frame: *QUERY-IO* : #<Synonym stream to *TERMINAL-IO*>
Binding frame: *STANDARD-INPUT* : #<Synonym stream to *TERMINAL-IO*>
Binding frame: *TRACE-OUTPUT* : #<Synonym stream to *TERMINAL-IO*>
Binding frame: *ERROR-OUTPUT* : #<Synonym stream to *TERMINAL-IO*>
Binding frame: *STANDARD-OUTPUT* : #<Synonym stream to *TERMINAL-IO*>
Catch frame: #:|progv-cathcer49881|
Call to CAPI::BIND-STANDARD-STREAMS-AND-EXECUTE (offset 227) STREAM : #<EDITOR::EDITOR-OUTPUT-STREAM #<EDITOR:BUFFER Background Output> 21F2BF7B> CAPI::FUNC-ARGS : (CAPI::INTERNAL-DO-WITH-RANDOM-TYPEOUT #<Closure CAPI::WITH-RANDOM-TYPEOUT-FUNC subfunction of CAPI::FUNCALL-BACKGROUND-JOB-WITH-TYPEOUT-AUX 229B1692> #<EDITOR::EDITOR-OUTPUT-STREAM #<EDITOR:BUFFER Background Output> 21F2BF7B> #<CAPI:LISTENER-PANE CAPI:EDITOR-PANE 21F24E2F> #<CAPI:COLLECTOR-PANE LISPWORKS-TOOLS::BACKGROUND-OUTPUT-PANE 21F2CC83> NIL)
Catch frame: (MP::BACKGROUND-EXECUTE-LOOP . RESTART-CASE)
Catch frame: (MP::BACKGROUND-EXECUTE-LOOP . 1)
Catch frame: MP::ABORT-JOB
Catch frame: #<Unbound Marker>
Binding frame: *PACKAGE* : #<The COMMON-LISP-USER package, 32/64 internal, 0/4 external>
Call to MP::BACKGROUND-EXECUTE-LOOP (offset 751)
Catch frame: MP::PROCESS-TAG
Catch frame: (MP::PROCESS-SG-FUNCTION . 1)
Catch frame: (MP::PROCESS-SG-FUNCTION . 1)
Binding frame: MP:*CURRENT-PROCESS* : NIL
Binding frame: MP::*ACTIONS-AFTER-SLEEPING* : NIL
Binding frame: MP::*ACTIONS-BEFORE-SLEEPING* : NIL
Binding frame: SYSTEM::*READER-STATE* : #<SYSTEM::READER-STATE In 0 out 0 2177015F>
Binding frame: *PACKAGE* : #<The COMMON-LISP-USER package, 32/64 internal, 0/4 external>
Binding frame: WIN32::*PROCESS-DC* : NIL
Binding frame: WIN32::*DDE-THREAD-INSTANCE* : NIL
Binding frame: EDITOR::*CURRENT-BUFFER* : NIL
Binding frame: EDITOR::*CURRENT-WINDOW* : NIL
Binding frame: EDITOR::*EDITOR-STATE* : NIL
Binding frame: EDITOR::*EDITOR-INPUT-STYLE* : #S(EDITOR:EDITOR-INPUT-STYLE :KEY-BINDINGS #<EDITOR::KEY-TABLE #<EQUALP Hash Table{344} 2066CBAB> 2 342> :DELETE-SELECTION-MODE NIL :LOGICAL-CHARACTERS #<EQUALP Hash Table{22} 2063A23B> :EXECUTE-MODE #<EDITOR::MODE-OBJECT "Execute" 2070A86B> :ECHO-MODE #<EDITOR::MODE-OBJECT "Echo Area" 2070ACCF> :PLIST NIL :INTERRUPT-KEYS (#S(SYSTEM::GESTURE-SPEC :DATA 103 :MODIFIERS 2) #S(SYSTEM::GESTURE-SPEC :DATA 71 :MODIFIERS 2)) :STYLE :EMACS :POINT-ALWAYS-VISIBLE T :USE-FACE-TO-FULL-WIDTH-P T)
Binding frame: CAPI::*USE-ACCELERATORS* : T
Binding frame: CAPI-WIN32-LIB::*ALT-IS-META-KEY* : T
Catch frame: #:|progv-cathcer236969|
Call to MP::PROCESS-SG-FUNCTION (offset 509) MP::STACK-ARG : 0 MP::SYMBOLS : NIL VALUES : NIL
Call to SYSTEM::%%FIRST-CALL-TO-STACK (offset 40)
SYSTEM::%%FIRST-CALL-TO-STACK
Generation 0: Total Size 1781K, Allocated 331K, Free 1441K Segment 2008DB80: Total Size 507K, Allocated 201K, Free 302K minimum free space 64K, Awaiting promotion = 0K, sweeps before promotion =10 Segment 22A11B70: Total Size 1273K, Allocated 129K, Free 1139K minimum free space 0K, Awaiting promotion = 40K, sweeps before promotion =2 Generation 1: Total Size 11445K, Allocated 10747K, Free 677K Segment 21941B70: Total Size 2112K, Allocated 2065K, Free 42K minimum free space 0K, Awaiting promotion = 649K, sweeps before promotion =4 Segment 22251B70: Total Size 7936K, Allocated 7513K, Free 418K minimum free space 0K, Awaiting promotion = 0K, sweeps before promotion =4 Segment 2070CB18: Total Size 68K, Allocated 48K, Free 15K minimum free space 3K, Awaiting promotion = 31K, sweeps before promotion =4 Segment 21621B70: Total Size 1088K, Allocated 998K, Free 85K minimum free space 0K, Awaiting promotion = 591K, sweeps before promotion =4 Segment 200517E0: Total Size 240K, Allocated 121K, Free 115K minimum free space 0K, static Generation 2: Total Size 9348K, Allocated 5757K, Free 3578K Segment 21B51B70: Total Size 7168K, Allocated 3585K, Free 3578K minimum free space 0K, Awaiting promotion = 0K, sweeps before promotion =4 Segment 21731B70: Total Size 2112K, Allocated 2107K, Free 0K minimum free space 0K, Awaiting promotion = 0K, sweeps before promotion =4 Segment 20E6CB18: Total Size 68K, Allocated 64K, Free 0K minimum free space 117K, Awaiting promotion = 0K, sweeps before promotion =4 Generation 3: Total Size 21451K, Allocated 21311K, Free 128K Segment 2071DB90: Total Size 7483K, Allocated 7479K, Free 0K minimum free space 0K, Awaiting promotion = 0K, sweeps before promotion =10 Segment 20E7DB90: Total Size 7823K, Allocated 7691K, Free 128K minimum free space 0K, Awaiting promotion = 0K, sweeps before promotion =10 Segment 2010CB18: Total Size 6144K, Allocated 6139K, Free 0K minimum free space 3K, Awaiting promotion = 0K, sweeps before promotion =10
Total Size 44352K, Allocated 38147K, Free 5825K
2010/2/5 Edi Weitz edi@agharta.de:
Thanks, I'll take a look at this when I'm less busy than now.
Again, please use the mailing list for patches and questions - see Cc.
Thanks, Edi.
On Fri, Feb 5, 2010 at 11:31 AM, jingtaozf jingtaozf@gmail.com wrote:
Hi Edi; I have modifed the code to fit your request.and the encode name changed from cp936 to gbk. The following is the response.
- There are several new functions and macros which don't have a
documentation string. ==> i have add document to function get-multibyte-mapper,others are referenced with your codes. 2. There are tabs in the files and sometimes the indentation seems wrong. ==> i have removed tabs. 3. There are parts of the code which are commented out. If they aren't used, they shouldn't be in there. ==> yes,i deleted them. 4. There's at least one file (seems like a variant of the ASDF system definition) which shouldn't be in there at all. ==>sorry,but i don't know what you mean? 5. The link in the HTML documentation is wrong. ==>i fixed the url link to gbk. 6. Isn't get-multibyte-mapper the wrong name? You don't get the mapper, do you? ==>yes,this function is borrowed from sbcl's source code,and i have pointed out this in the comment. 7. And the function itself looks like Scheme to me. I think it'd be easier to understand using normal iteration. ==>i have re-write the decode and encode part.but i am not familiar with scheme. :( 8. I don't understand why the encoding factor is 1.5. Is the comment correct or just copied? ==>i don't know how to set the encoding factor,gbk(cp936) has one or two octets.i set it to 1.5 with my estimate. 9. I'm not familiar with CP936. Is it correct that there's only a big-endian version? ==>gbk(cp936) has no endian problem, i borrowed code from your utf16's implemention,now i have fixed it. 10. One of the new files contains DOS line endings. ==> some your source files has DOS line endings(such as ascii.lisp),some use unix line endings. i don't know why and maybe i modified it un-expectly.
Fothermore,this patch file is encoded use utf-8,because my test file contains file which is encoded by gbk format. I also put the test files(with gbk format) to the attatchment,because i am not sure the patch will generate them correctly.
2010-02-04
jingtaozf
发件人: Edi Weitz 发送时间: 2009-10-29 23:08:38 收件人: jingtao xu 抄送: General interest list about flexi-streams 主题: Re: a patch for chineses's cp936(gbk) encoding support.
On Thu, Oct 29, 2009 at 3:17 PM, jingtao xu jingtaozf@gmail.com wrote:
hi,Edi Weitz: Because i want to use drakma as my web development tool,but it use flexi-streams and could not decode chinese's cp936 characters,so i make a patch to flexi-streams.
The sbcl has supported cp936(by files supported by beinghe,which cvs path is:sbcl/src/code/external-formats/enc-cn.lisp,enc-cn-tbl.lisp). i use file enc-cn-tbl.lisp here.
The patches is make by following commands: diff -urN ~/.sbcl/site/flexi-streams-1.0.7/ ~/Downloads/flexi-streams/
flexi-streams-cp936.patch
I send you both the patch files and the patched codes. The test codes is added and passed. The documention is updated.
[I've put the mailing list on Cc where I think we should continue this.] First of all, I'd be happy to include this into the flexi-streams distribution. There are a couple of issues with the patch, though. What I saw from briefly looking at it:
- There are several new functions and macros which don't have a
documentation string. 2. There are tabs in the files and sometimes the indentation seems wrong. 3. There are parts of the code which are commented out. If they aren't used, they shouldn't be in there. 4. There's at least one file (seems like a variant of the ASDF system definition) which shouldn't be in there at all. 5. The link in the HTML documentation is wrong. 6. Isn't get-multibyte-mapper the wrong name? You don't get the mapper, do you? 7. And the function itself looks like Scheme to me. I think it'd be easier to understand using normal iteration. 8. I don't understand why the encoding factor is 1.5. Is the comment correct or just copied? 9. I'm not familiar with CP936. Is it correct that there's only a big-endian version? 10. One of the new files contains DOS line endings. There's probably more. If you could go over these and send a cleaned-up version of the patch, I'll review it. FWIW, here are some guidelines: http://weitz.de/patches.html Thanks, Edi.
flexi-streams-devel@common-lisp.net