/[LeafOK_CVS]/lbbs/src/bbs_main.c
ViewVC logotype

Diff of /lbbs/src/bbs_main.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.103 by sysadm, Sat Nov 8 08:21:31 2025 UTC Revision 1.111 by sysadm, Thu Nov 20 09:02:46 2025 UTC
# Line 6  Line 6 
6   * Copyright (C) 2004-2025  Leaflet <leaflet@leafok.com>   * Copyright (C) 2004-2025  Leaflet <leaflet@leafok.com>
7   */   */
8    
9    #ifdef HAVE_CONFIG_H
10    #include "config.h"
11    #endif
12    
13  #include "article_favor.h"  #include "article_favor.h"
14  #include "article_view_log.h"  #include "article_view_log.h"
15  #include "bbs.h"  #include "bbs.h"
# Line 26  Line 30 
30  #include "trie_dict.h"  #include "trie_dict.h"
31  #include "user_list.h"  #include "user_list.h"
32  #include "user_priv.h"  #include "user_priv.h"
33    #include <ctype.h>
34  #include <errno.h>  #include <errno.h>
35  #include <signal.h>  #include <signal.h>
36  #include <stdlib.h>  #include <stdlib.h>
# Line 33  Line 38 
38  #include <time.h>  #include <time.h>
39  #include <unistd.h>  #include <unistd.h>
40    
41    static void child_proc_sig_usr1_handler(int i)
42    {
43            // Restart log
44            if (log_restart() < 0)
45            {
46                    log_error("Restart logging failed\n");
47            }
48    }
49    
50  int bbs_info()  int bbs_info()
51  {  {
52          prints("欢迎光临 \033[1;33m%s \033[32m[%s]  \033[37m( %s )\033[m\r\n",          prints("\r\n欢迎光临 \033[1;33m%s \033[32m[%s] \033[37m(%s)\033[m\r\n",
53                     BBS_name, BBS_server, APP_INFO);                     BBS_name, BBS_server, APP_INFO);
54    
55          return iflush();          return iflush();
# Line 80  int bbs_welcome(void) Line 94  int bbs_welcome(void)
94                     "\033[32m目前上站人数 [\033[36m%d/%d\033[32m] "                     "\033[32m目前上站人数 [\033[36m%d/%d\033[32m] "
95                     "匿名游客[\033[36m%d\033[32m] "                     "匿名游客[\033[36m%d\033[32m] "
96                     "注册用户数[\033[36m%d/%d\033[32m]\r\n"                     "注册用户数[\033[36m%d/%d\033[32m]\r\n"
97                     "从 [\033[36m%s\033[32m] 起,累计访问人次:[\033[36m%d\033[32m]\033[m\r\n",                     "从 [\033[36m%s\033[32m] 起,累计访问人次: [\033[36m%d\033[32m]\033[m\r\n",
98                     BBS_name, u_online, BBS_max_client, u_anonymous, u_total,                     BBS_name, u_online, BBS_max_client, u_anonymous, u_total,
99                     BBS_max_user_count, BBS_start_dt, u_login_count);                     BBS_max_user_count, BBS_start_dt, u_login_count);
100    
# Line 205  int bbs_charset_select() Line 219  int bbs_charset_select()
219          int ch;          int ch;
220    
221          snprintf(msg, sizeof(msg),          snprintf(msg, sizeof(msg),
222                           "\rChoose character set in 3 seconds [UTF-8, GBK]: [U/g]");                           "\rChoose character set in 5 seconds, (U)UTF-8, (G)GBK [U]: ");
223    
224          while (!SYS_server_exit)          while (!SYS_server_exit)
225          {          {
226                  ch = press_any_key_ex(msg, 3);                  ch = press_any_key_ex(msg, 5);
227                  switch (toupper(ch))                  switch (toupper(ch))
228                  {                  {
229                  case KEY_NULL:                  case KEY_NULL:
# Line 233  int bbs_charset_select() Line 247  int bbs_charset_select()
247          }          }
248    
249          snprintf(msg, sizeof(msg),          snprintf(msg, sizeof(msg),
250                           "\rChoose wide-character display in 3 seconds [Fixed, Dynamic]: [F/d]");                           "\r请在5秒内选择宽字符显示规则, (V)变宽, (F)定宽? [V]: ");
251    
252          while (!SYS_server_exit)          while (!SYS_server_exit)
253          {          {
254                  ch = press_any_key_ex(msg, 3);                  ch = press_any_key_ex(msg, 5);
255                  switch (toupper(ch))                  switch (toupper(ch))
256                  {                  {
257                  case KEY_NULL:                  case KEY_NULL:
258                          return -1;                          return -1;
259                  case KEY_TIMEOUT:                  case KEY_TIMEOUT:
260                  case CR:                  case CR:
261                    case 'V':
262                            UTF8_fixed_width = 0;
263                            break;
264                  case 'F':                  case 'F':
265                          UTF8_fixed_width = 1;                          UTF8_fixed_width = 1;
266                          break;                          break;
                 case 'D':  
                         UTF8_fixed_width = 0;  
                         break;  
267                  default:                  default:
268                          continue;                          continue;
269                  }                  }
# Line 278  int bbs_main() Line 292  int bbs_main()
292                  log_error("set signal action of SIGCHLD error: %d\n", errno);                  log_error("set signal action of SIGCHLD error: %d\n", errno);
293                  goto cleanup;                  goto cleanup;
294          }          }
295            act.sa_handler = child_proc_sig_usr1_handler;
296            if (sigaction(SIGUSR1, &act, NULL) == -1)
297            {
298                    log_error("set signal action of SIGUSR1 error: %d\n", errno);
299                    goto cleanup;
300            }
301    
302          // Set data pools in shared memory readonly          // Set data pools in shared memory readonly
303          if (set_trie_dict_shm_readonly() < 0)          if (set_trie_dict_shm_readonly() < 0)
# Line 292  int bbs_main() Line 312  int bbs_main()
312          {          {
313                  goto cleanup;                  goto cleanup;
314          }          }
315    #ifdef HAVE_SYSTEM_V
316          if (set_user_list_pool_shm_readonly() < 0)          if (set_user_list_pool_shm_readonly() < 0)
317          {          {
318                  goto cleanup;                  goto cleanup;
319          }          }
320    #endif
321    
322          // Load menu in shared memory          // Load menu in shared memory
323          if (set_menu_shm_readonly(&bbs_menu) < 0)          if (set_menu_shm_readonly(&bbs_menu) < 0)
# Line 313  int bbs_main() Line 335  int bbs_main()
335          set_input_echo(0);          set_input_echo(0);
336    
337          // Set user charset          // Set user charset
338          bbs_charset_select();          if (bbs_charset_select() < 0)
339            {
340                    goto cleanup;
341            }
342    
343          // System info          // System info
344          if (bbs_info() < 0)          if (bbs_info() < 0)


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1