Add clock auto-update, configurable CTCP VERSION rent tagline, status bar margin fix

This commit is contained in:
2026-05-02 12:22:31 +02:00
parent 96c48b0aa9
commit e11ba65538
+20 -4
View File
@@ -80,6 +80,7 @@ static char query_target[64] = "";
static int translate_public = 0; /* /trans toggle: echo translations to channel */ static int translate_public = 0; /* /trans toggle: echo translations to channel */
static int translate_enabled = 1; /* master toggle for translation */ static int translate_enabled = 1; /* master toggle for translation */
static int irc_colors = 1; /* display IRC colour codes as ANSI */ 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 */ /* Track nicks who sent us private messages */
#define MAX_PM_NICKS 32 #define MAX_PM_NICKS 32
@@ -188,6 +189,8 @@ static void ai_config_load(void)
} }
else if (strcmp(line, "irc_colors") == 0) else if (strcmp(line, "irc_colors") == 0)
irc_colors = atoi(eq); irc_colors = atoi(eq);
else if (strcmp(line, "rent") == 0)
snprintf(rent_msg, sizeof(rent_msg), "%s", eq);
} }
fclose(f); fclose(f);
@@ -540,11 +543,12 @@ static void draw_statusbar(void)
tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min); tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min);
size_t bar_len = strlen(bar); size_t bar_len = strlen(bar);
size_t rhs_len = strlen(rhs); size_t rhs_len = strlen(rhs);
if (bar_len + rhs_len < (size_t)term_cols) { if (bar_len + rhs_len + 1 < (size_t)term_cols) {
size_t pad = term_cols - rhs_len; size_t pad = term_cols - rhs_len - 1;
while (bar_len < pad) while (bar_len < pad)
bar[bar_len++] = ' '; bar[bar_len++] = ' ';
memcpy(bar + pad, rhs, rhs_len); memcpy(bar + pad, rhs, rhs_len);
bar[pad + rhs_len] = ' ';
bar[term_cols] = '\0'; bar[term_cols] = '\0';
} }
@@ -1060,9 +1064,9 @@ static void handle_line(char *line)
uname(&ut); uname(&ut);
irc_send_raw("NOTICE %s :\x01VERSION " irc_send_raw("NOTICE %s :\x01VERSION "
"Holck's Mirk, OS: %s %s %s" "Holck's Mirk, OS: %s %s %s"
" :: This space available for rent\x01", " :: %s\x01",
sender, ut.sysname, sender, ut.sysname,
ut.release, ut.machine); ut.release, ut.machine, rent_msg);
wprintf(WL_STATUS, "* CTCP VERSION from %s\n", sender); wprintf(WL_STATUS, "* CTCP VERSION from %s\n", sender);
} else if (strncmp(text, "\x01" "ACTION ", 8) == 0) { } else if (strncmp(text, "\x01" "ACTION ", 8) == 0) {
/* /me action */ /* /me action */
@@ -1810,6 +1814,18 @@ int main(int argc, char *argv[])
die("select"); 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 */ /* Check translation results */
for (int ti = 0; ti < translate_count; ) { for (int ti = 0; ti < translate_count; ) {
if (FD_ISSET(translate_pending[ti].fd, &fds)) { if (FD_ISSET(translate_pending[ti].fd, &fds)) {