From e11ba65538933394f7920773ccf27e7f9bb0229b Mon Sep 17 00:00:00 2001 From: Anders Holck Date: Sat, 2 May 2026 12:22:31 +0200 Subject: [PATCH] Add clock auto-update, configurable CTCP VERSION rent tagline, status bar margin fix --- main.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index b60ed82..be1d215 100644 --- a/main.c +++ b/main.c @@ -80,6 +80,7 @@ static char query_target[64] = ""; static int translate_public = 0; /* /trans toggle: echo translations to channel */ static int translate_enabled = 1; /* master toggle for translation */ static int irc_colors = 1; /* display IRC colour codes as ANSI */ +static char rent_msg[256] = "This space available for rent"; /* Track nicks who sent us private messages */ #define MAX_PM_NICKS 32 @@ -188,6 +189,8 @@ static void ai_config_load(void) } else if (strcmp(line, "irc_colors") == 0) irc_colors = atoi(eq); + else if (strcmp(line, "rent") == 0) + snprintf(rent_msg, sizeof(rent_msg), "%s", eq); } fclose(f); @@ -540,11 +543,12 @@ static void draw_statusbar(void) tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min); size_t bar_len = strlen(bar); size_t rhs_len = strlen(rhs); - if (bar_len + rhs_len < (size_t)term_cols) { - size_t pad = term_cols - rhs_len; + if (bar_len + rhs_len + 1 < (size_t)term_cols) { + size_t pad = term_cols - rhs_len - 1; while (bar_len < pad) bar[bar_len++] = ' '; memcpy(bar + pad, rhs, rhs_len); + bar[pad + rhs_len] = ' '; bar[term_cols] = '\0'; } @@ -1060,9 +1064,9 @@ static void handle_line(char *line) uname(&ut); irc_send_raw("NOTICE %s :\x01VERSION " "Holck's Mirk, OS: %s %s %s" - " :: This space available for rent\x01", + " :: %s\x01", sender, ut.sysname, - ut.release, ut.machine); + ut.release, ut.machine, rent_msg); wprintf(WL_STATUS, "* CTCP VERSION from %s\n", sender); } else if (strncmp(text, "\x01" "ACTION ", 8) == 0) { /* /me action */ @@ -1810,6 +1814,18 @@ int main(int argc, char *argv[]) die("select"); } + /* Redraw status bar every minute for clock update */ + { + static int last_min = -1; + time_t now = time(NULL); + int cur_min = localtime(&now)->tm_min; + if (cur_min != last_min) { + last_min = cur_min; + draw_statusbar(); + redraw_input(input_line, input_len, input_pos); + } + } + /* Check translation results */ for (int ti = 0; ti < translate_count; ) { if (FD_ISSET(translate_pending[ti].fd, &fds)) {