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_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)) {