comparison mcabber/src/screen.c @ 725:1aff92625bdb

Expand tabs when receiving a message
author Mikael Berthe <mikael@lilotux.net>
date Sun, 05 Mar 2006 18:48:43 +0100
parents 264375fe7159
children 51be2bc1a820
comparison
equal deleted inserted replaced
724:264375fe7159 725:1aff92625bdb
985 985
986 // If prefix is NULL, HBB_PREFIX_IN is supposed. 986 // If prefix is NULL, HBB_PREFIX_IN is supposed.
987 void scr_WriteIncomingMessage(const char *jidfrom, const char *text, 987 void scr_WriteIncomingMessage(const char *jidfrom, const char *text,
988 time_t timestamp, guint prefix) 988 time_t timestamp, guint prefix)
989 { 989 {
990 char *p, *xtext;
991 guint8 n =0;
992
990 if (!(prefix & ~HBB_PREFIX_NOFLAG)) 993 if (!(prefix & ~HBB_PREFIX_NOFLAG))
991 prefix |= HBB_PREFIX_IN; 994 prefix |= HBB_PREFIX_IN;
992 // FIXME expand tabs / filter out special chars... 995
993 scr_WriteMessage(jidfrom, text, timestamp, prefix); 996 xtext = (char*)text;
997
998 // Expand tabs
999 for (p=xtext; *p; p++)
1000 if (*p == '\t') n++;
1001 if (n) {
1002 char *q;
1003 xtext = g_new(char, strlen(text) + 1 + 8*n);
1004 p = (char*)text;
1005 q = xtext;
1006 do {
1007 if (*p == '\t') {
1008 do { *q++ = ' '; } while ((q-xtext)%8);
1009 } else {
1010 *q++ = *p;
1011 }
1012 } while (*p++);
1013 }
1014
1015 // FIXME Filter out special chars...
1016 scr_WriteMessage(jidfrom, xtext, timestamp, prefix);
994 update_panels(); 1017 update_panels();
995 doupdate(); 1018 doupdate();
1019
1020 if (xtext != (char*)text)
1021 g_free(xtext);
996 } 1022 }
997 1023
998 void scr_WriteOutgoingMessage(const char *jidto, const char *text) 1024 void scr_WriteOutgoingMessage(const char *jidto, const char *text)
999 { 1025 {
1000 scr_WriteMessage(jidto, text, 0, HBB_PREFIX_OUT); 1026 scr_WriteMessage(jidto, text, 0, HBB_PREFIX_OUT);