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

Annotation of /lbbs/src/common.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.36 - (hide annotations)
Wed Jul 2 04:17:33 2025 UTC (8 months, 2 weeks ago) by sysadm
Branch: MAIN
Changes since 1.35: +2 -2 lines
Content type: text/x-csrc
Support UTF8 instead of GBK

1 sysadm 1.1 /***************************************************************************
2 sysadm 1.9 common.c - description
3     -------------------
4 sysadm 1.15 Copyright : (C) 2004-2025 by Leaflet
5     Email : leaflet@leafok.com
6 sysadm 1.1 ***************************************************************************/
7    
8     /***************************************************************************
9     * *
10     * 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 *
12 sysadm 1.15 * the Free Software Foundation; either version 3 of the License, or *
13 sysadm 1.1 * (at your option) any later version. *
14     * *
15     ***************************************************************************/
16    
17 sysadm 1.11 #include "common.h"
18     #include "log.h"
19 sysadm 1.6 #include "menu.h"
20 sysadm 1.34 #include <signal.h>
21 sysadm 1.11 #include <string.h>
22 sysadm 1.3 #include <time.h>
23 sysadm 1.7 #include <sys/types.h>
24 sysadm 1.3
25 sysadm 1.21 // File loader
26     const char *data_files_load_startup[] = {
27     DATA_WELCOME,
28     DATA_REGISTER,
29     DATA_GOODBYE,
30     DATA_LICENSE,
31     DATA_COPYRIGHT,
32     DATA_LOGIN_ERROR,
33     DATA_ACTIVE_BOARD,
34     DATA_READ_HELP,
35 sysadm 1.22 VAR_BBS_TOP};
36 sysadm 1.21 int data_files_load_startup_count = 9; // Count of data_files_load_startup[]
37    
38 sysadm 1.9 // Global declaration for sockets
39 sysadm 1.29 int socket_server[2];
40 sysadm 1.1 int socket_client;
41 sysadm 1.29 char hostaddr_client[IP_ADDR_LEN];
42 sysadm 1.1 int port_client;
43    
44 sysadm 1.28 // SSHv2
45     int SSH_v2 = 0;
46 sysadm 1.29 ssh_bind sshbind;
47 sysadm 1.28 ssh_session SSH_session;
48     ssh_channel SSH_channel;
49    
50 sysadm 1.9 // Global declaration for system
51 sysadm 1.17 volatile int SYS_server_exit = 0;
52     volatile int SYS_child_process_count = 0;
53 sysadm 1.18 volatile int SYS_child_exit = 0;
54 sysadm 1.26 volatile int SYS_conf_reload = 0;
55 sysadm 1.7
56 sysadm 1.22 static const char *weekday[] = {
57 sysadm 1.36 "天", "一", "二", "三", "四", "五", "六"};
58 sysadm 1.22
59 sysadm 1.9 // Common function
60 sysadm 1.14 const char *get_time_str(char *s, size_t len)
61 sysadm 1.3 {
62 sysadm 1.23 time_t curtime;
63     struct tm local_tm;
64 sysadm 1.9
65 sysadm 1.23 time(&curtime);
66     localtime_r(&curtime, &local_tm);
67 sysadm 1.36 size_t j = strftime(s, len, "%b %d %H:%M 星期", &local_tm);
68 sysadm 1.14
69 sysadm 1.23 if (j == 0 || j + strlen(weekday[local_tm.tm_wday]) + 1 > len)
70 sysadm 1.14 {
71     return NULL;
72     }
73 sysadm 1.9
74 sysadm 1.23 strncat(s, weekday[local_tm.tm_wday], len - 1 - j);
75 sysadm 1.5
76 sysadm 1.14 return s;
77 sysadm 1.3 }
78 sysadm 1.6
79 sysadm 1.17 void sig_hup_handler(int i)
80 sysadm 1.6 {
81 sysadm 1.26 SYS_conf_reload = 1;
82 sysadm 1.7 }
83    
84 sysadm 1.17 void sig_term_handler(int i)
85 sysadm 1.7 {
86 sysadm 1.17 SYS_server_exit = 1;
87 sysadm 1.7 }
88    
89 sysadm 1.17 void sig_chld_handler(int i)
90 sysadm 1.7 {
91 sysadm 1.18 SYS_child_exit = 1;
92 sysadm 1.6 }
93 sysadm 1.16
94 sysadm 1.21 const char *ip_mask(char *s, int level, char mask)
95 sysadm 1.16 {
96 sysadm 1.21 char *p = s;
97 sysadm 1.16
98     if (level <= 0)
99     {
100     return s;
101     }
102     if (level > 4)
103     {
104     level = 4;
105     }
106    
107     for (int i = 0; i < 4 - level; i++)
108     {
109     p = strchr(p, '.');
110     if (p == NULL)
111     {
112     return s;
113     }
114     p++;
115     }
116    
117     for (int i = 0; i < level; i++)
118     {
119     *p = mask;
120     p++;
121     if (i < level - 1)
122     {
123     *p = '.';
124     p++;
125     }
126     }
127     *p = '\0';
128    
129     return s;
130     }

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