Use "(...)" when cutting a multi-line status message in the log window
Thanks to Salvador for suggesting...
--- a/mcabber/src/hooks.c Sat Jan 07 12:17:49 2006 +0100
+++ b/mcabber/src/hooks.c Sat Jan 07 13:59:17 2006 +0100
@@ -178,7 +178,7 @@
int st_in_buf;
enum imstatus oldstat;
char *bn = NULL;
- char *logsmsg, *p;
+ char *logsmsg;
const char *rn = (resname ? resname : "");
st_in_buf = settings_opt_get_int("show_status_in_buffer");
@@ -200,8 +200,7 @@
}
logsmsg = g_strdup(status_msg ? status_msg : "");
- if ((p = strchr(logsmsg, '\n')) != NULL)
- *p = 0;
+ replace_nl_with_dots(logsmsg);
oldstat = roster_getstatus(jid, resname);
scr_LogPrint(LPRINT_LOGNORM, "Buddy status has changed: [%c>%c] %s %s",
--- a/mcabber/src/jabglue.c Sat Jan 07 12:17:49 2006 +0100
+++ b/mcabber/src/jabglue.c Sat Jan 07 13:59:17 2006 +0100
@@ -1387,8 +1387,7 @@
if (msg_noutf8) {
buf = g_strdup_printf("<%s> said: %s", from, msg_noutf8);
scr_WriteIncomingMessage(r, buf, 0, HBB_PREFIX_INFO);
- msg = strchr(buf, '\n');
- if (msg) *msg = 0;
+ replace_nl_with_dots(buf);
scr_LogPrint(LPRINT_LOGNORM, buf);
g_free(buf);
g_free(msg_noutf8);
--- a/mcabber/src/utils.c Sat Jan 07 12:17:49 2006 +0100
+++ b/mcabber/src/utils.c Sat Jan 07 13:59:17 2006 +0100
@@ -446,4 +446,17 @@
g_free(arglst);
}
+// replace_nl_with_dots(bufstr)
+// Replace '\n' with "(...)" (or with a NUL if the string is too short)
+void replace_nl_with_dots(char *bufstr)
+{
+ char *p = strchr(bufstr, '\n');
+ if (p) {
+ if (strlen(p) >= 5)
+ strcpy(p, "(...)");
+ else
+ *p = 0;
+ }
+}
+
/* vim: set expandtab cindent cinoptions=>2\:2(0: For Vim users... */
--- a/mcabber/src/utils.h Sat Jan 07 12:17:49 2006 +0100
+++ b/mcabber/src/utils.h Sat Jan 07 13:59:17 2006 +0100
@@ -27,6 +27,8 @@
char **split_arg(const char *arg, unsigned int n, int dontstriplast);
void free_arg_lst(char **arglst);
+void replace_nl_with_dots(char *bufstr);
+
#endif
/* vim: set expandtab cindent cinoptions=>2\:2(0: For Vim users... */