# HG changeset patch # User mikael # Date 1115451190 0 # Node ID c289e3c39c48743a159da53adf7fa566b2ac1f92 # Parent 58eb8ad9ef747362f48d28e6396553d4ab7ac2ab [/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) diff -r 58eb8ad9ef74 -r c289e3c39c48 mcabber/src/hbuf.c --- 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 diff -r 58eb8ad9ef74 -r c289e3c39c48 mcabber/src/histolog.c --- 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; diff -r 58eb8ad9ef74 -r c289e3c39c48 mcabber/src/screen.c --- 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); }