Mercurial > hg
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); |