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

Diff of /lbbs/src/init.c

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

Revision 1.7 by sysadm, Thu Mar 17 10:48:46 2005 UTC Revision 1.19 by sysadm, Tue May 13 07:30:10 2025 UTC
# Line 1  Line 1 
1  /***************************************************************************  /***************************************************************************
2                            init.c  -  description                                                    init.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   ***************************************************************************/   ***************************************************************************/
16    
17    #include "init.h"
18    #include "database.h"
19  #include "bbs.h"  #include "bbs.h"
20  #include "common.h"  #include "common.h"
21    #include "log.h"
22  #include "io.h"  #include "io.h"
23  #include <unistd.h>  #include <string.h>
24    #include <stdlib.h>
25  #include <signal.h>  #include <signal.h>
26  #include <sys/param.h>  #include <sys/param.h>
27  #include <sys/types.h>  #include <sys/types.h>
28  #include <sys/stat.h>  #include <sys/stat.h>
29    #include <unistd.h>
30    
31  void  int init_daemon(void)
 init_daemon (void)  
32  {  {
33    int pid;          int pid;
   int i;  
34    
35    if (pid = fork ())          pid = fork();
36      exit (0);  
37    else if (pid < 0)          if (pid != 0) // Parent or error
38      exit (1);          {
39                    return pid;
40            }
41    
42    setsid ();          // Child process
43            setsid();
44    
45    if (pid = fork ())          pid = fork();
     exit (0);  
   else if (pid < 0)  
     exit (1);  
46    
47    for (i = 0; i < NOFILE; ++i)          if (pid != 0) // Parent or error
48      close (i);          {
49    chdir (app_home_dir);                  return pid;
50    umask (0);          }
51    
52    signal (SIGCHLD, SIG_IGN);          // Child process
53            umask(022);
54    
55    return;          return 0;
56  }  }
57    
58  int  int load_conf(const char *conf_file)
 load_conf (const char *conf_file)  
59  {  {
60    char temp[256];          char temp[256];
61    
62    // Load configuration          // Load configuration
63    char c_name[256];          char c_name[256];
64    FILE *fin;          FILE *fin;
65    
66    if ((fin = fopen (conf_file, "r")) == NULL)          if ((fin = fopen(conf_file, "r")) == NULL)
67      {          {
68        log_error ("Open %s failed", conf_file);                  log_error("Open %s failed", conf_file);
69        return -1;                  return -1;
70      }          }
71    
72    while (fscanf (fin, "%s", c_name) != EOF)          while (fscanf(fin, "%s", c_name) != EOF)
73      {          {
74        if (c_name[0] == '#')                  if (c_name[0] == '#')
75        {                  {
76          fgets(temp, 256, fin);                          fgets(temp, 256, fin);
77          continue;                          continue;
78        }                  }
79        fscanf (fin, "%*c");                  fscanf(fin, "%*c");
80        if (strcmp (c_name, "bbs_id") == 0)                  if (strcmp(c_name, "bbs_id") == 0)
81          {                  {
82            fscanf (fin, "%s", BBS_id);                          fscanf(fin, "%s", BBS_id);
83          }                  }
84        if (strcmp (c_name, "bbs_name") == 0)                  if (strcmp(c_name, "bbs_name") == 0)
85          {                  {
86            fscanf (fin, "%s", BBS_name);                          fscanf(fin, "%s", BBS_name);
87          }                  }
88        if (strcmp (c_name, "bbs_server") == 0)                  if (strcmp(c_name, "bbs_server") == 0)
89          {                  {
90            fscanf (fin, "%s", BBS_server);                          fscanf(fin, "%s", BBS_server);
91          }                  }
92        if (strcmp (c_name, "bbs_address") == 0)                  if (strcmp(c_name, "bbs_address") == 0)
93          {                  {
94            fscanf (fin, "%s", BBS_address);                          fscanf(fin, "%s", BBS_address);
95          }                  }
96        if (strcmp (c_name, "bbs_port") == 0)                  if (strcmp(c_name, "bbs_port") == 0)
97          {                  {
98            fscanf (fin, "%ud", &BBS_port);                          fscanf(fin, "%hu", &BBS_port);
99                    }
100                    if (strcmp(c_name, "bbs_max_client") == 0)
101                    {
102                            fscanf(fin, "%d", &BBS_max_client);
103                    }
104                    if (strcmp(c_name, "bbs_max_user") == 0)
105                    {
106                            fscanf(fin, "%d", &BBS_max_user);
107                    }
108                    if (strcmp(c_name, "bbs_start_dt") == 0)
109                    {
110                            int y = 0, m = 0, d = 0;
111                            fscanf(fin, "%d-%d-%d", &y, &m, &d);
112                            snprintf(BBS_start_dt, sizeof(BBS_start_dt), "%4d年%2d月%2d日", y, m, d);
113                    }
114                    if (strcmp(c_name, "db_host") == 0)
115                    {
116                            fscanf(fin, "%s", DB_host);
117                    }
118                    if (strcmp(c_name, "db_username") == 0)
119                    {
120                            fscanf(fin, "%s", DB_username);
121                    }
122                    if (strcmp(c_name, "db_password") == 0)
123                    {
124                            fscanf(fin, "%s", DB_password);
125                    }
126                    if (strcmp(c_name, "db_database") == 0)
127                    {
128                            fscanf(fin, "%s", DB_database);
129                    }
130                    if (strcmp(c_name, "db_timezone") == 0)
131                    {
132                            fscanf(fin, "%s", DB_timezone);
133                    }
134          }          }
       if (strcmp (c_name, "bbs_max_client") == 0)  
         {  
           fscanf (fin, "%d", &BBS_max_client);  
         }  
       if (strcmp (c_name, "bbs_max_user") == 0)  
         {  
           fscanf (fin, "%d", &BBS_max_user);  
         }  
       if (strcmp (c_name, "bbs_start_dt") == 0)  
         {  
           int y = 0, m = 0, d = 0;  
           fscanf (fin, "%d-%d-%d", &y, &m, &d);  
           sprintf (BBS_start_dt, "%4d年%2d月%2d日",y,m,d);  
         }  
       if (strcmp (c_name, "db_host") == 0)  
         {  
           fscanf (fin, "%s", DB_host);  
         }  
       if (strcmp (c_name, "db_username") == 0)  
         {  
           fscanf (fin, "%s", DB_username);  
         }  
       if (strcmp (c_name, "db_password") == 0)  
         {  
           fscanf (fin, "%s", DB_password);  
         }  
       if (strcmp (c_name, "db_database") == 0)  
         {  
           fscanf (fin, "%s", DB_database);  
         }  
     }  
135    
136    fclose (fin);          fclose(fin);
137      
138    return 0;          return 0;
139  }  }


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

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