/[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.24 by sysadm, Mon Mar 21 17:08:21 2005 UTC Revision 1.35 by sysadm, Sun May 4 14:54:55 2025 UTC
# Line 1  Line 1 
1  /***************************************************************************  /***************************************************************************
2                            bbs_main.c  -  description                                                    bbs_main.c  -  description
3                               -------------------                                                           -------------------
4      begin                : Mon Oct 18 2004          begin                : Mon Oct 18 2004
5      copyright            : (C) 2004 by Leaflet          copyright            : (C) 2004 by Leaflet
6      email                : leaflet@leafok.com          email                : leaflet@leafok.com
7   ***************************************************************************/   ***************************************************************************/
8    
9  /***************************************************************************  /***************************************************************************
# Line 15  Line 15 
15   *                                                                         *   *                                                                         *
16   ***************************************************************************/   ***************************************************************************/
17    
18    #include "bbs_main.h"
19  #include "bbs.h"  #include "bbs.h"
20    #include "welcome.h"
21    #include "login.h"
22    #include "user_priv.h"
23  #include "common.h"  #include "common.h"
24    #include "database.h"
25    #include "log.h"
26  #include "io.h"  #include "io.h"
27    #include "screen.h"
28  #include "menu.h"  #include "menu.h"
29  #include "bbs_cmd.h"  #include "bbs_cmd.h"
 #include <time.h>  
 #include <fcntl.h>  
30  #include <unistd.h>  #include <unistd.h>
31    #include <time.h>
32  #include <string.h>  #include <string.h>
33    
34  int  int bbs_info()
 bbs_main ()  
35  {  {
36    char temp[256];          prints("»¶Ó­¹âÁÙ \033[1;33m%s \033[32m[%s]  \033[37m( %s )\r\n",
37    int ret;                     BBS_name, BBS_server, app_version);
   
   set_input_echo (0);  
   
   bbs_info ();  
   
   //Welcome  
   bbs_welcome ();  
   
   //Login  
   ret = bbs_login ();  
   if (ret < 0)  
     return -1;  
   clearscr ();  
   
   //BBS Top 10  
   strcpy (temp, app_home_dir);  
   strcat (temp, "data/bbs_top.txt");  
   display_file_ex (temp, 1, 1);  
   
   //Main  
   bbs_center ();  
38    
39    //Logout          iflush();
   bbs_exit ();  
40    
41    return 0;          return 0;
42  }  }
43    
44  int  int bbs_exit()
 bbs_info ()  
45  {  {
46    prints ("»¶Ó­¹âÁÙ \033[1;33m%s \033[32m[%s]  \033[37m( %s )\r\n",          display_file_ex(DATA_GOODBYE, 1, 0);
           BBS_name, BBS_server, app_version);  
47    
48    iflush ();          sleep(1);
49    
50    return 0;          return 0;
51  }  }
52    
53  int  int bbs_center()
 bbs_exit ()  
54  {  {
55    char temp[256];          int ch, redraw;
56            time_t t_last_action;
57    
58    strcpy (temp, app_home_dir);          BBS_last_access_tm = t_last_action = time(0);
   strcat (temp, "data/goodbye.txt");  
   display_file_ex (temp, 1, 0);  
59    
60    sleep (1);          clearscr();
61    
62    return 0;          show_top("");
63  }          show_active_board();
64            show_bottom("");
65  int          display_menu(get_menu(&bbs_menu, "TOPMENU"));
 bbs_center ()  
 {  
   int ch, result;  
   char action[MAX_MENUACTION_LENGTH];  
   time_t t_last_action;  
   fd_set inputs, testfds;  
   struct timeval timeout;  
   
   FD_ZERO (&inputs);  
   FD_SET (0, &inputs);  
   
   t_last_action = time (0);  
   
   clearscr ();  
   
   show_top ("");  
   show_active_board ();  
   show_bottom ("");  
   display_menu (get_menu (&bbs_menu, "TOPMENU"));  
   
   while (1)  
     {  
       testfds = inputs;  
       timeout.tv_sec = 0;  
       timeout.tv_usec = 100000;  
   
       result = select (FD_SETSIZE, &testfds, (fd_set *) NULL,  
                        (fd_set *) NULL, &timeout);  
66    
67        switch (result)          while (!SYS_exit)
68          {          {
69          case 0:                  ch = igetch(0);
70            break;  
71          case -1:                  if (time(0) - t_last_action >= 10)
72            log_error ("select() error!\n");                  {
73            break;                          t_last_action = time(0);
74          default:                          show_active_board();
75            if (FD_ISSET (0, &testfds))                          show_bottom("");
76              {                  }
               ch = igetch ();  
77    
78                switch (ch)                  switch (ch)
79                  {                  {
80                  case KEY_NULL:                  case KEY_NULL:
81                    return 0;                          return 0;
82                    case KEY_TIMEOUT:
83                            if (time(0) - BBS_last_access_tm >= MAX_DELAY_TIME)
84                            {
85                                    return -1;
86                            }
87                            continue;
88                  default:                  default:
89                    strcpy (action, menu_control (&bbs_menu, ch));                          redraw = 1;
90                    switch (get_cmd_value (action))                          switch (menu_control(&bbs_menu, ch))
91                      {                          {
92                      case EXITBBS:                          case EXITBBS:
93                        return 0;                                  return 0;
94                      case BBSNET:                          case REDRAW:
95                        bbs_net ();                                  break;
96                        clearscr ();                          case NOREDRAW:
97                        show_top ("");                          case UNKNOWN_CMD:
98                        show_active_board ();                          default:
99                        show_bottom ("");                                  redraw = 0;
100                        display_current_menu (&bbs_menu);                                  break;
101                        break;                          }
102                      case UNKNOWN_CMD:                          if (redraw)
103                        break;                          {
104                      }                                  clearscr();
105                                    show_top("");
106                                    show_active_board();
107                                    show_bottom("");
108                                    display_current_menu(&bbs_menu);
109                            }
110                  }                  }
111              }                  BBS_last_access_tm = time(0);
           break;  
112          }          }
113        if (time (0) - t_last_action >= 10)  
114            return 0;
115    }
116    
117    int bbs_main()
118    {
119            int ret;
120    
121            set_input_echo(0);
122    
123            bbs_info();
124    
125            // Welcome
126            bbs_welcome();
127    
128            // Login
129            ret = bbs_login();
130            if (ret < 0)
131                    return -1;
132            log_std("User \"%s\"(%ld) login from %s:%d\n",
133                            BBS_username, BBS_priv.uid, hostaddr_client, port_client);
134            clearscr();
135    
136            // BBS Top 10
137            display_file_ex("./var/bbs_top.txt", 1, 1);
138    
139            // Main
140            bbs_center();
141    
142            // Logout
143            bbs_exit();
144            log_std("User logout\n");
145    
146            MYSQL *db = db_open();
147            if (db == NULL)
148          {          {
149            t_last_action = time (0);                  return -1;
           show_active_board ();  
           show_bottom ("");  
150          }          }
     }  
151    
152    return 0;          user_online_del(db);
153    
154            mysql_close(db);
155    
156            return 0;
157  }  }


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

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