$ git clone http://tcclient.ion.nu/tc_client.git
commit 7caafed23702de3e6278d3c67386d3de6c04edd9
Author: Alicia <...>
Date: Wed Feb 24 15:15:14 2016 +0100
Handle multi-line messages.
diff --git a/ChangeLog b/ChangeLog
index 232de80..17357c8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,5 @@
0.38:
+Handle multi-line messages.
Makefile: added missing sourcefiles for the tarball target.
tc_client-gtk: if HOME is not set use "." instead.
tc_client-gtk: windows compat: don't try to run empty commands.
diff --git a/client.c b/client.c
index c01cfb1..5ee1c22 100644
--- a/client.c
+++ b/client.c
@@ -754,9 +754,21 @@ int main(int argc, char** argv)
size_t len;
char* msg=fromnumlist(amfin->items[3].string.string, &len);
const char* color=(showcolor?resolvecolor(amfin->items[4].string.string):"0");
- printf("%s \x1b[%sm%s: ", timestamp(), color, amfin->items[5].string.string);
- fwrite(msg, len, 1, stdout);
- printf("\x1b[0m\n");
+ char* line=msg;
+ while(line)
+ {
+ // Handle multi-line messages
+ char* nextline=0;
+ unsigned int linelen;
+ for(linelen=0; linelen<len; ++linelen)
+ {
+ if(line[linelen]=='\r' || line[linelen]=='\n'){nextline=&line[linelen+1]; break;}
+ }
+ printf("%s \x1b[%sm%s: ", timestamp(), color, amfin->items[5].string.string);
+ fwrite(line, linelen, 1, stdout);
+ printf("\x1b[0m\n");
+ line=nextline;
+ }
char* response=0;
if(len==18 && !strncmp(msg, "/userinfo $request", 18))
{