about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--chat.h1
-rw-r--r--term.c2
-rw-r--r--ui.c9
3 files changed, 7 insertions, 5 deletions
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];