freenode/#shirakumo - IRC Chatlog
Search
21:53:57
Shinmera
Its generic def-*-to-base64-* expander can't deal with the stream/stream case either
21:59:27
Shinmera
gross :/ https://github.com/Shinmera/iclendar/blob/master/serializer.lisp#L99-L125
21:59:27
Colleen
github.com/Shinmera/iclenda... Website (HTML), Title: iclendar/serializer.lisp at master · Shinmera/iclendar · GitHub
22:01:21
mood
Meanwhile, I've got a little process talking to a ManiaPlanet server's RPC endpoint, and it's working :)
22:02:14
Shinmera
the icalendar format has some interesting properties relating to streams -- essentially you can never know if you've read the entirety of an icalendar chunk until the stream ends, making it impossible for multiple payloads in the same stream, despite the RFC indicating that this is a possible future endeavour.
22:04:01
Shinmera
The reason this is is due to the line folding it does: a line has to be a max of 77 bytes long (75 payload + CRLF). If the content is longer than that, you need to wrap it and begin the next line with a space. However, this means that... without seeing the next line, you don't know if it's a continuation of the current one or not, essentially making it impossible to end the last line without EOF.
22:04:58
Shinmera
You can hack it to make it work by saying "if the line is just END:VCALENDAR I can disregard continuations" but that's essentially not conforming :^)
22:06:01
Shinmera
Probably some poor sap implemented this travesty in C with a 75 (why 75) char buffer
22:06:24
Shinmera
and now things need to be "backwards compatible" (read: ruined for all future generations)
22:07:43
Colleen
tools.ietf.org/html/rfc7529 Website (HTML), Title: RFC 7529 - Non-Gregorian Recurrence Rules in the Internet Calendaring and Scheduling Core Object Spec
22:09:50
Shinmera
Also I forgot this choice bit: Actual line feeds in data items are encoded as a backslash followed by the letter n or N
22:18:02
Shinmera
Anyway, thanks to gray streams I can pretty transparently represent this dumb ass encoding scheme