--- lbbs/src/common.c 2025/05/11 01:54:00 1.18 +++ lbbs/src/common.c 2025/06/04 14:01:29 1.27 @@ -14,6 +14,8 @@ * * ***************************************************************************/ +#define _POSIX_C_SOURCE 200112L + #include "common.h" #include "log.h" #include "menu.h" @@ -21,8 +23,22 @@ #include #include -// Version information -char app_version[256] = "LBBS-devel version 1.0"; +// File loader +const char *data_files_load_startup[] = { + DATA_WELCOME, + DATA_REGISTER, + DATA_GOODBYE, + DATA_LICENSE, + DATA_COPYRIGHT, + DATA_LOGIN_ERROR, + DATA_ACTIVE_BOARD, + DATA_READ_HELP, + VAR_BBS_TOP}; +int data_files_load_startup_count = 9; // Count of data_files_load_startup[] + +const char *data_files_load_timeval[] = { + VAR_BBS_TOP}; +int data_files_load_timeval_count = 1; // Count of data_files_load_timeval[] // Global declaration for sockets int socket_server; @@ -36,64 +52,38 @@ int port_client; volatile int SYS_server_exit = 0; volatile int SYS_child_process_count = 0; volatile int SYS_child_exit = 0; -volatile int SYS_menu_reload = 0; +volatile int SYS_conf_reload = 0; +volatile int SYS_data_file_reload = 0; +volatile int SYS_section_list_reload = 0; -// Common function -const char *str_space(char *string, int length) -{ - int i; - for (i = 0; i < length; i++) - { - string[i] = ' '; - } - string[length] = '\0'; - return string; -} +static const char *weekday[] = { + "天", "一", "二", "三", "四", "五", "六"}; +// Common function const char *get_time_str(char *s, size_t len) { - time_t curtime = time(NULL); - struct tm *loctime; - loctime = localtime(&curtime); + time_t curtime; + struct tm local_tm; - size_t j = strftime(s, len, "%Y年%m月%d日%H:%M:%S ", loctime); + time(&curtime); + localtime_r(&curtime, &local_tm); + size_t j = strftime(s, len, "%b %d %H:%M 星期", &local_tm); - if (j == 0) + if (j == 0 || j + strlen(weekday[local_tm.tm_wday]) + 1 > len) { return NULL; } - switch (loctime->tm_wday) - { - case 0: - strncat(s, "星期天", len - j); - break; - case 1: - strncat(s, "星期一", len - j); - break; - case 2: - strncat(s, "星期二", len - j); - break; - case 3: - strncat(s, "星期三", len - j); - break; - case 4: - strncat(s, "星期四", len - j); - break; - case 5: - strncat(s, "星期五", len - j); - break; - case 6: - strncat(s, "星期六", len - j); - break; - } + strncat(s, weekday[local_tm.tm_wday], len - 1 - j); return s; } void sig_hup_handler(int i) { - SYS_menu_reload = 1; + SYS_conf_reload = 1; + SYS_data_file_reload = 1; + SYS_section_list_reload = 1; } void sig_term_handler(int i) @@ -106,9 +96,9 @@ void sig_chld_handler(int i) SYS_child_exit = 1; } -const char * ip_mask(char * s, int level, char mask) +const char *ip_mask(char *s, int level, char mask) { - char * p = s; + char *p = s; if (level <= 0) {