/[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.20 by sysadm, Sat Mar 19 15:54:13 2005 UTC Revision 1.30 by sysadm, Thu Jun 23 16:43:21 2005 UTC
# Line 19  Line 19 
19  #include "common.h"  #include "common.h"
20  #include "io.h"  #include "io.h"
21  #include "menu.h"  #include "menu.h"
22    #include "bbs_cmd.h"
23  #include <time.h>  #include <time.h>
 #include <fcntl.h>  
 #include <unistd.h>  
24  #include <string.h>  #include <string.h>
25    
26  int  int
# Line 41  bbs_main () Line 40  bbs_main ()
40    ret = bbs_login ();    ret = bbs_login ();
41    if (ret < 0)    if (ret < 0)
42      return -1;      return -1;
43      log_std ("User \"%s\"(%ld) login from %s:%d\n",
44               BBS_username, BBS_priv.uid, hostaddr_client, port_client);
45    clearscr ();    clearscr ();
46    
47    //BBS Top 10    //BBS Top 10
# Line 53  bbs_main () Line 54  bbs_main ()
54    
55    //Logout    //Logout
56    bbs_exit ();    bbs_exit ();
57      log_std ("User logout\n");
58    
59    return 0;    return 0;
60  }  }
# Line 85  bbs_exit () Line 87  bbs_exit ()
87  int  int
88  bbs_center ()  bbs_center ()
89  {  {
90    int ch, result;    int ch, result, redraw;
91    char action[MAX_MENUACTION_LENGTH];    char temp[256];
92    time_t t_last_action;    time_t t_last_action;
   fd_set inputs, testfds;  
   struct timeval timeout;  
   
   FD_ZERO (&inputs);  
   FD_SET (0, &inputs);  
93    
94    t_last_action = time (0);    BBS_last_access_tm = t_last_action = time (0);
95    
96    clearscr ();    clearscr ();
97    
98    show_top ("");    show_top ("");
99    show_active_board ();    show_active_board ();
   display_menu (get_menu (&bbs_menu, "TOPMENU"));  
100    show_bottom ("");    show_bottom ("");
101      display_menu (get_menu (&bbs_menu, "TOPMENU"));
102    
103    while (1)    while (!SYS_exit)
104      {      {
105        testfds = inputs;        ch = igetch ();
       timeout.tv_sec = 0;  
       timeout.tv_usec = 100000;  
106    
107        result = select (FD_SETSIZE, &testfds, (fd_set *) NULL,        if (time (0) - t_last_action >= 10)
108                         (fd_set *) NULL, &timeout);          {
109              t_last_action = time (0);
110              show_active_board ();
111              show_bottom ("");
112            }
113    
114        switch (result)        switch (ch)
115          {          {
116          case 0:          case KEY_NULL:
117            break;            return 0;
118          case -1:          case KEY_TIMEOUT:
119            log_error ("select() error!\n");            if (time (0) - BBS_last_access_tm >= MAX_DELAY_TIME)
120            break;              {
121                  return -1;
122                }
123              continue;
124          default:          default:
125            if (FD_ISSET (0, &testfds))            redraw = 1;
126              switch (menu_control (&bbs_menu, ch))
127              {              {
128                ch = igetch ();              case EXITBBS:
129                  return 0;
130                switch (ch)              case REDRAW:
131                  {                break;
132                  case 0:              case NOREDRAW:
133                    return 0;              case UNKNOWN_CMD:
134                  default:              default:
135                    strcpy (action, menu_control (&bbs_menu, ch));                redraw = 0;
136  log_std ("**%s\n", action);                break;
137                    if (strcmp (action, "EXITBBS") == 0)              }
138                      return 0;            if (redraw)
139  log_std ("%d\n", strcmp (action, "EXITBBS"));              {
140                  }                clearscr ();
141                  show_top ("");
142                  show_active_board ();
143                  show_bottom ("");
144                  display_current_menu (&bbs_menu);
145              }              }
           break;  
         }  
       if (time (0) - t_last_action >= 10)  
         {  
           t_last_action = time (0);  
           show_active_board ();  
146          }          }
147          BBS_last_access_tm = time (0);
148      }      }
149    
150    return 0;    return 0;


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

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