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

Diff of /lbbs/src/common.c

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

Revision 1.12 by sysadm, Fri May 2 03:32:19 2025 UTC Revision 1.21 by sysadm, Fri May 16 14:09:31 2025 UTC
# Line 1  Line 1 
1  /***************************************************************************  /***************************************************************************
2                                                    common.c  -  description                                                    common.c  -  description
3                                                           -------------------                                                           -------------------
4          begin                : Mon Oct 18 2004          Copyright            : (C) 2004-2025 by Leaflet
5          copyright            : (C) 2004 by Leaflet          Email                : leaflet@leafok.com
         email                : leaflet@leafok.com  
6   ***************************************************************************/   ***************************************************************************/
7    
8  /***************************************************************************  /***************************************************************************
9   *                                                                         *   *                                                                         *
10   *   This program is free software; you can redistribute it and/or modify  *   *   This program is free software; you can redistribute it and/or modify  *
11   *   it under the terms of the GNU General Public License as published by  *   *   it under the terms of the GNU General Public License as published by  *
12   *   the Free Software Foundation; either version 2 of the License, or     *   *   the Free Software Foundation; either version 3 of the License, or     *
13   *   (at your option) any later version.                                   *   *   (at your option) any later version.                                   *
14   *                                                                         *   *                                                                         *
15   ***************************************************************************/   ***************************************************************************/
# Line 21  Line 20 
20  #include <string.h>  #include <string.h>
21  #include <time.h>  #include <time.h>
22  #include <sys/types.h>  #include <sys/types.h>
 #include <sys/wait.h>  
23    
24  // Version information  // Version information
25  char app_version[256] = "LBBS-devel version 1.0";  char app_version[256] = "LBBS-devel version 1.0";
26    
27  // Global declaration for enviroment  // File loader
28  char app_home_dir[256];  const char *data_files_load_startup[] = {
29  char app_temp_dir[256];          DATA_WELCOME,
30            DATA_REGISTER,
31            DATA_GOODBYE,
32            DATA_LICENSE,
33            DATA_COPYRIGHT,
34            DATA_LOGIN_ERROR,
35            DATA_ACTIVE_BOARD,
36            DATA_READ_HELP,
37            VAR_BBS_TOP
38    };
39    int data_files_load_startup_count = 9; // Count of data_files_load_startup[]
40    
41    const char *data_files_load_timeval[] = {
42            VAR_BBS_TOP
43    };
44    int data_files_load_timeval_count = 1; // Count of data_files_load_timeval[]
45    
46  // Global declaration for sockets  // Global declaration for sockets
47  int socket_server;  int socket_server;
# Line 39  int port_server; Line 52  int port_server;
52  int port_client;  int port_client;
53    
54  // Global declaration for system  // Global declaration for system
55  int SYS_exit;  volatile int SYS_server_exit = 0;
56  int SYS_child_process_count;  volatile int SYS_child_process_count = 0;
57    volatile int SYS_child_exit = 0;
58    volatile int SYS_menu_reload = 0;
59    volatile int SYS_data_file_reload = 0;
60    
61  // Common function  // Common function
62  const char *str_space(char *string, int length)  const char *str_space(char *string, int length)
# Line 54  const char *str_space(char *string, int Line 70  const char *str_space(char *string, int
70          return string;          return string;
71  }  }
72    
73  const char *get_time_str(char *string, size_t length)  const char *get_time_str(char *s, size_t len)
74  {  {
75          char week[20];          time_t curtime = time(NULL);
         char buffer[LINE_BUFFER_LEN];  
         time_t curtime;  
76          struct tm *loctime;          struct tm *loctime;
   
         curtime = time(NULL);  
77          loctime = localtime(&curtime);          loctime = localtime(&curtime);
78    
79          strftime(buffer, sizeof(buffer), "%Y年%m月%d日%H:%M:%S ", loctime);          size_t j = strftime(s, len, "%Y年%m月%d日%H:%M:%S ", loctime);
80    
81            if (j == 0)
82            {
83                    return NULL;
84            }
85    
86          switch (loctime->tm_wday)          switch (loctime->tm_wday)
87          {          {
88          case 0:          case 0:
89                  strncpy(week, "星期天", sizeof(week));                  strncat(s, "星期天", len - j);
90                  break;                  break;
91          case 1:          case 1:
92                  strncpy(week, "星期一", sizeof(week));                  strncat(s, "星期一", len - j);
93                  break;                  break;
94          case 2:          case 2:
95                  strncpy(week, "星期二", sizeof(week));                  strncat(s, "星期二", len - j);
96                  break;                  break;
97          case 3:          case 3:
98                  strncpy(week, "星期三", sizeof(week));                  strncat(s, "星期三", len - j);
99                  break;                  break;
100          case 4:          case 4:
101                  strncpy(week, "星期四", sizeof(week));                  strncat(s, "星期四", len - j);
102                  break;                  break;
103          case 5:          case 5:
104                  strncpy(week, "星期五", sizeof(week));                  strncat(s, "星期五", len - j);
105                  break;                  break;
106          case 6:          case 6:
107                  strncpy(week, "星期六", sizeof(week));                  strncat(s, "星期六", len - j);
108                  break;                  break;
109          }          }
         strncat(buffer, week, sizeof(week));  
110    
111          strncpy(string, buffer, length);          return s;
112    }
113    
114          return string;  void sig_hup_handler(int i)
115    {
116            SYS_menu_reload = 1;
117            SYS_data_file_reload = 1;
118  }  }
119    
120  void reload_bbs_menu(int i)  void sig_term_handler(int i)
121  {  {
122          if (reload_menu(&bbs_menu) < 0)          SYS_server_exit = 1;
                 log_error("Reload menu failed\n");  
         else  
                 log_std("Reload menu successfully\n");  
123  }  }
124    
125  void system_exit(int i)  void sig_chld_handler(int i)
126  {  {
127          SYS_exit = 1;          SYS_child_exit = 1;
128  }  }
129    
130  void child_exit(int i)  const char *ip_mask(char *s, int level, char mask)
131  {  {
132          int pid;          char *p = s;
133    
134          pid = wait(0);          if (level <= 0)
135            {
136                    return s;
137            }
138            if (level > 4)
139            {
140                    level = 4;
141            }
142    
143          if (pid > 0)          for (int i = 0; i < 4 - level; i++)
144          {          {
145                  SYS_child_process_count--;                  p = strchr(p, '.');
146                  log_std("Child process (%d) exited\n", pid);                  if (p == NULL)
147                    {
148                            return s;
149                    }
150                    p++;
151          }          }
152    
153            for (int i = 0; i < level; i++)
154            {
155                    *p = mask;
156                    p++;
157                    if (i < level - 1)
158                    {
159                            *p = '.';
160                            p++;
161                    }
162            }
163            *p = '\0';
164    
165            return s;
166  }  }


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

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