diff --git a/chat.h b/chat.h index eaecb50..1deb693 100644 --- a/chat.h +++ b/chat.h @@ -30,6 +30,7 @@ #define err(...) do { uiHide(); err(__VA_ARGS__); } while (0) #define errx(...) do { uiHide(); errx(__VA_ARGS__); } while (0) +typedef unsigned uint; typedef unsigned char byte; struct { diff --git a/term.c b/term.c index 2be9c16..75380ea 100644 --- a/term.c +++ b/term.c @@ -51,7 +51,7 @@ void termMode(enum TermMode mode, bool set) { enum { Esc = '\33' }; enum TermEvent termEvent(char ch) { - static int state = 0; + static uint state = 0; switch (T(state, ch)) { case T(0, Esc): state = 1; return 0; case T(1, '['): state = 2; return 0; diff --git a/ui.c b/ui.c index 9ffe8ad..e437ef9 100644 --- a/ui.c +++ b/ui.c @@ -68,8 +68,9 @@ static short pair8(short pair) { struct View { struct Tag tag; WINDOW *log; - int scroll, unread; + int scroll; bool hot, mark; + uint unread; struct View *prev; struct View *next; }; @@ -227,7 +228,7 @@ static void uiTitle(const struct View *view) { int unread; char *str; int len = asprintf( - &str, "%s%n (%d)", view->tag.name, &unread, view->unread + &str, "%s%n (%u)", view->tag.name, &unread, view->unread ); if (len < 0) err(EX_OSERR, "asprintf"); if (!view->unread) str[unread] = '\0'; @@ -244,7 +245,7 @@ static void uiStatus(void) { int unread; wchar_t *str; int len = aswprintf( - &str, L"%c %d %s %n(\3%02d%d\3) ", + &str, L"%c %d %s %n(\3%02d%u\3) ", (view == ui.view ? IRCReverse : IRCReset), num, view->tag.name, &unread, (view->hot ? IRCYellow : IRCDefault), view->unread @@ -274,7 +275,7 @@ static void viewRemove(struct View *view) { views.tags[view->tag.id] = NULL; } -static const int LogLines = 256; +static const int LogLines = 512; static struct View *viewTag(struct Tag tag) { struct View *view = views.tags[tag.id];