--- lbbs/src/screen.c 2025/05/17 06:14:22 1.56 +++ lbbs/src/screen.c 2025/05/17 11:30:09 1.58 @@ -298,7 +298,7 @@ int display_file_ex(const char *filename input_ok = 1; switch (ch) { - case KEY_NULL: + // case KEY_NULL: case KEY_TIMEOUT: goto cleanup; case KEY_HOME: @@ -395,7 +395,6 @@ int display_file_ex(const char *filename clrline(begin_line, SCREEN_ROWS); break; default: - log_std("Input: %d\n", ch); input_ok = 0; break; } @@ -432,13 +431,13 @@ cleanup: return ch; } -int show_top(char *status) +int show_top(const char *status) { + char status_f[21]; int truncate; int status_len; int section_name_len; int len; - char status_f[21]; strncpy(status_f, status, sizeof(status_f) - 1); status_f[sizeof(status_f) - 1] = '\0'; @@ -458,32 +457,47 @@ int show_top(char *status) moveto(1, 0); clrtoeol(); - prints("\033[1;44;33m%s \033[37m%*s%*s\033[33m ÌÖÂÛÇø [%s]\033[m", - status_f, (39 - status_len), BBS_name, (30 - section_name_len), "", BBS_current_section_name); + prints("\033[1;44;33m%s\033[37m%*s%*s\033[33m ÌÖÂÛÇø [%s]\033[m", + status_f, 32, BBS_name, 26, "", BBS_current_section_name); iflush(); return 0; } -int show_bottom(char *msg) +int show_bottom(const char *msg) { char str_time[LINE_BUFFER_LEN]; - char space[LINE_BUFFER_LEN]; time_t time_online; struct tm *tm_online; + char msg_f[21]; + int truncate; + int msg_len; + int len; + int len_username; get_time_str(str_time, sizeof(str_time)); - str_space(space, 34 - (int)strnlen(BBS_username, sizeof(BBS_username))); + + strncpy(msg_f, msg, sizeof(msg_f) - 1); + msg_f[sizeof(msg_f) - 1] = '\0'; + + len = split_line(msg_f, 20, &truncate, &msg_len); + if (truncate) + { + log_error("Status string is truncated\n"); + msg_f[len] = '\0'; + } + + len_username = (int)strnlen(BBS_username, sizeof(BBS_username)); time_online = time(0) - BBS_login_tm; tm_online = gmtime(&time_online); moveto(SCREEN_ROWS, 0); clrtoeol(); - prints("\033[1;44;33m[\033[36m%s\033[33m]%sÕʺÅ[\033[36m%s\033[33m]" + prints("\033[1;44;33m[\033[36m%s\033[33m]%*s%*sÕʺÅ[\033[36m%s\033[33m]" "[\033[36m%1d\033[33m:\033[36m%2d\033[33m:\033[36m%2d\033[33m]\033[m", - str_time, space, BBS_username, tm_online->tm_mday - 1, - tm_online->tm_hour, tm_online->tm_min); + str_time, 21, msg_f, 13 - len_username, "", BBS_username, + tm_online->tm_mday - 1, tm_online->tm_hour, tm_online->tm_min); iflush(); return 0;