[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