# HG changeset patch # User Mikael Berthe # Date 1141580923 -3600 # Node ID 1aff92625bdbfb2f5ce42d25fd5a24684f1850e3 # Parent 264375fe7159c4d904d080142999fa481a0d9b68 Expand tabs when receiving a message diff -r 264375fe7159 -r 1aff92625bdb mcabber/src/screen.c --- a/mcabber/src/screen.c Sun Mar 05 16:54:01 2006 +0100 +++ b/mcabber/src/screen.c Sun Mar 05 18:48:43 2006 +0100 @@ -987,12 +987,38 @@ void scr_WriteIncomingMessage(const char *jidfrom, const char *text, time_t timestamp, guint prefix) { + char *p, *xtext; + guint8 n =0; + if (!(prefix & ~HBB_PREFIX_NOFLAG)) prefix |= HBB_PREFIX_IN; - // FIXME expand tabs / filter out special chars... - scr_WriteMessage(jidfrom, text, timestamp, prefix); + + xtext = (char*)text; + + // Expand tabs + for (p=xtext; *p; p++) + if (*p == '\t') n++; + if (n) { + char *q; + xtext = g_new(char, strlen(text) + 1 + 8*n); + p = (char*)text; + q = xtext; + do { + if (*p == '\t') { + do { *q++ = ' '; } while ((q-xtext)%8); + } else { + *q++ = *p; + } + } while (*p++); + } + + // FIXME Filter out special chars... + scr_WriteMessage(jidfrom, xtext, timestamp, prefix); update_panels(); doupdate(); + + if (xtext != (char*)text) + g_free(xtext); } void scr_WriteOutgoingMessage(const char *jidto, const char *text)