--- lbbs/src/screen.c 2025/05/17 05:56:17 1.55 +++ lbbs/src/screen.c 2025/05/17 06:46:23 1.57 @@ -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,53 +431,57 @@ cleanup: return ch; } -int show_top(char *status) +int show_top(const char *status) { int truncate; int status_len; int section_name_len; int len; + char status_f[21]; - len = split_line(status, 20, &truncate, &status_len); + strncpy(status_f, status, sizeof(status_f) - 1); + status_f[sizeof(status_f) - 1] = '\0'; + + len = split_line(status_f, 20, &truncate, &status_len); if (truncate) { - status[len] = '\0'; + log_error("Status string is truncated\n"); + status_f[len] = '\0'; } len = split_line(BBS_current_section_name, 20, &truncate, §ion_name_len); if (truncate) { - status[len] = '\0'; + log_error("Section name is truncated\n"); } moveto(1, 0); clrtoeol(); prints("\033[1;44;33m%s \033[37m%*s%*s\033[33m ÌÖÂÛÇø [%s]\033[m", - status, (39 - status_len), BBS_name, (30 - section_name_len), "", BBS_current_section_name); + status_f, (39 - status_len), BBS_name, (30 - section_name_len), "", 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; + int len_username = (int)strnlen(BBS_username, sizeof(BBS_username)); get_time_str(str_time, sizeof(str_time)); - str_space(space, 34 - (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ÕʺÅ[\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, 34 - len_username, "", BBS_username, + tm_online->tm_mday - 1, tm_online->tm_hour, tm_online->tm_min); iflush(); return 0;