[cl-irc-ticket] [cl-irc] #2: external format guessing for incoming messages

cl-irc cl-irc-devel at common-lisp.net
Wed Apr 12 18:05:09 UTC 2006


#2: external format guessing for incoming messages
-------------------------+--------------------------------------------------
 Reporter:  afuchs       |       Owner:  somebody
     Type:  enhancement  |      Status:  new     
 Priority:  major        |   Milestone:          
Component:  chat         |     Version:          
 Keywords:               |   Has_patch:  1       
-------------------------+--------------------------------------------------
 (reposted from mail to cl-irc-devel)
 Hi,

 the following patch is a proof-of-concept implementation of external
 format guessing for incoming messages (and customizable external
 formats for outgoing messages, defaulting conservatively to latin-1).

 With that patch, cl-irc now opens a binary stream to the server, and
 opens flexi-streams on top of that. The outgoing part is pretty
 straightforward; the incoming part not so much (:

 Reading works like this:

  * We read a line of latin-1 chars
  * We try to decode their code-chars (latin1 is a 1:1 translation to
    code-chars, and where it isn't, I hope flexistreams takes care of
    that (-:) using the list of external-formats in
    *default-incoming-external-formats*.
  * When we find a decoding that doesn't throw a error, we build a
    message from that.

 Positive side effect: cl-irc should now work on windows because the
 external format allows specification of eol convention. Negative side
 effect: I didn't get parsing to work without #\Return, so this patch
 appends a #\Return character to the raw message.

 Which brings me to the todo list:

  * DCC connections probably don't work. I don't care about dcc, so I
    won't fix them (:
  * The parser should work without #\Return.
  * reading latin1 and decoding from the char codes is ... ugly. But
    it's probably less ugly than doing our own buffering. Maybe
    somebody wants to investigate that. (:

-- 
Ticket URL: <http://trac.common-lisp.net/cl-irc/ticket/2>
cl-irc <http://common-lisp.net/project/cl-irc>
cl-irc


More information about the Cl-irc-ticket mailing list