$ 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))
       {