[/trunk] Changeset 209 by mikael
* screen.c: display prefixes "*<*" or "*>*" when both info and in/out prefixes
are requested.
* hbuf.c: set HBB_PREFIX_INFO prefix when a line is too long to fit in an
hbuf block
* histolog.c: display a message when reading a big history file (because it
can hang the ui for a while)
--- a/mcabber/src/hbuf.c Sat May 07 06:34:47 2005 +0000
+++ b/mcabber/src/hbuf.c Sat May 07 07:33:10 2005 +0000
@@ -78,6 +78,7 @@
if (strlen(text) >= HBB_BLOCKSIZE) {
// Too long
text = "[ERR:LINE_TOO_LONG]";
+ hbuf_block_elt->prefix.flags |= HBB_PREFIX_INFO;
}
if (hbuf_block_elt->ptr + strlen(text) >= hbuf_block_elt->ptr_end_alloc) {
// Too long for the current allocated bloc, we need another one
--- a/mcabber/src/histolog.c Sat May 07 06:34:47 2005 +0000
+++ b/mcabber/src/histolog.c Sat May 07 07:33:10 2005 +0000
@@ -113,6 +113,7 @@
guint prefix_flags;
guint len;
FILE *fp;
+ struct stat bufstat;
guint err = 0;
if (!FileLoadLogs) return;
@@ -129,6 +130,13 @@
g_free(filename);
if (!fp) { g_free(data); return; }
+ // If file is large (> 512 here), display a message to inform the user
+ // (it can take a while...)
+ if (!fstat(fileno(fp), &bufstat)) {
+ if (bufstat.st_size > 524288)
+ scr_LogPrint("Reading <%s> history file...", jid);
+ }
+
/* See write_histo_line() for line format... */
while (!feof(fp)) {
if (fgets(data, HBB_BLOCKSIZE+24, fp) == NULL) break;
@@ -161,12 +169,13 @@
continue;
}
- // FIXME This will fail when a message is too big
+ // XXX This will fail when a message is too big
while (len--) {
if (fgets(tail, HBB_BLOCKSIZE+24 - (tail-data), fp) == NULL) break;
while (*tail) tail++;
}
+ // Remove last CR
if ((tail > data+18) && (*(tail-1) == '\n'))
*(tail-1) = 0;
--- a/mcabber/src/screen.c Sat May 07 06:34:47 2005 +0000
+++ b/mcabber/src/screen.c Sat May 07 07:33:10 2005 +0000
@@ -295,12 +295,17 @@
strftime(date, 35, "%m-%d %H:%M", localtime(&line->timestamp));
} else
strcpy(date, " ");
- if (line->flags & HBB_PREFIX_IN)
+ if (line->flags & HBB_PREFIX_INFO) {
+ char dir = '*';
+ if (line->flags & HBB_PREFIX_IN)
+ dir = '<';
+ else if (line->flags & HBB_PREFIX_OUT)
+ dir = '>';
+ wprintw(win_entry->win, "%.11s *%c* ", date, dir);
+ } else if (line->flags & HBB_PREFIX_IN)
wprintw(win_entry->win, "%.11s <== ", date);
else if (line->flags & HBB_PREFIX_OUT)
wprintw(win_entry->win, "%.11s --> ", date);
- else if (line->flags & HBB_PREFIX_INFO)
- wprintw(win_entry->win, "%.11s *** ", date);
else {
wprintw(win_entry->win, "%.11s ", date);
}