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

Diff of /lbbs/src/menu.c

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

Revision 1.33 by sysadm, Thu May 8 15:24:59 2025 UTC Revision 1.38 by sysadm, Tue May 13 07:28:51 2025 UTC
# Line 17  Line 17 
17  #include "bbs.h"  #include "bbs.h"
18  #include "bbs_cmd.h"  #include "bbs_cmd.h"
19  #include "user_priv.h"  #include "user_priv.h"
 #include "reg_ex.h"  
20  #include "bbs_cmd.h"  #include "bbs_cmd.h"
21  #include "menu.h"  #include "menu.h"
22  #include "log.h"  #include "log.h"
# Line 522  int load_menu(MENU_SET *p_menu_set, cons Line 521  int load_menu(MENU_SET *p_menu_set, cons
521                                  {                                  {
522                                          fin_line++;                                          fin_line++;
523    
524                                          memcpy(temp, buffer, sizeof(temp)); // Duplicate line for strtok_r                                          strncpy(temp, buffer, sizeof(temp)); // Duplicate line for strtok_r
525                                          p = strtok_r(temp, MENU_CONF_DELIM_WITH_SPACE, &saveptr);                                          p = strtok_r(temp, MENU_CONF_DELIM_WITH_SPACE, &saveptr);
526                                          if (p != NULL && *p == '%') // END of menu screen                                          if (p != NULL && *p == '%') // END of menu screen
527                                          {                                          {
# Line 588  int display_menu(MENU *p_menu) Line 587  int display_menu(MENU *p_menu)
587                  return -1;                  return -1;
588          }          }
589    
590            if (p_menu->item_cur_pos > 0 &&
591                    checkpriv(&BBS_priv, 0, p_menu->items[p_menu->item_cur_pos]->priv) != 0 &&
592                    checklevel(&BBS_priv, p_menu->items[p_menu->item_cur_pos]->level) != 0)
593            {
594                    menu_selectable = 1;
595            }
596    
597          if (p_menu->title.show)          if (p_menu->title.show)
598          {          {
599                  show_top(p_menu->title.text);                  show_top(p_menu->title.text);
# Line 674  int menu_control(MENU_SET *p_menu_set, i Line 680  int menu_control(MENU_SET *p_menu_set, i
680          switch (key)          switch (key)
681          {          {
682          case CR:          case CR:
                 igetch(1); // Cleanup remaining '\n' in the buffer  
683          case KEY_RIGHT:          case KEY_RIGHT:
684                  if (p_menu->items[p_menu->item_cur_pos]->submenu)                  if (p_menu->items[p_menu->item_cur_pos]->submenu)
685                  {                  {
# Line 690  int menu_control(MENU_SET *p_menu_set, i Line 695  int menu_control(MENU_SET *p_menu_set, i
695                          {                          {
696                                  return menu_control(p_menu_set, KEY_LEFT);                                  return menu_control(p_menu_set, KEY_LEFT);
697                          }                          }
                         break;  
698                  }                  }
699                  else                  else
700                  {                  {
701                          return (exec_cmd(p_menu->items[p_menu->item_cur_pos]->action,                          return (exec_cmd(p_menu->items[p_menu->item_cur_pos]->action,
702                                                           p_menu->items[p_menu->item_cur_pos]->name));                                                           p_menu->items[p_menu->item_cur_pos]->name));
703                  }                  }
704                    break;
705          case KEY_LEFT:          case KEY_LEFT:
706                  if (p_menu_set->menu_select_depth > 0)                  if (p_menu_set->menu_select_depth > 0)
707                  {                  {
# Line 705  int menu_control(MENU_SET *p_menu_set, i Line 710  int menu_control(MENU_SET *p_menu_set, i
710                          {                          {
711                                  return menu_control(p_menu_set, KEY_LEFT);                                  return menu_control(p_menu_set, KEY_LEFT);
712                          }                          }
                         break;  
713                  }                  }
714                  else                  else
715                  {                  {
716                          display_menu_cursor(p_menu, 0);                          display_menu_cursor(p_menu, 0);
717                          p_menu->item_cur_pos = p_menu->item_count - 1;                          p_menu->item_cur_pos = p_menu->item_count - 1;
718                          while (!p_menu->items[p_menu->item_cur_pos]->display ||                          while (p_menu->item_cur_pos >= 0 && (!p_menu->items[p_menu->item_cur_pos]->display ||
719                                     p_menu->items[p_menu->item_cur_pos]->priv != 0 ||                                                                                                   p_menu->items[p_menu->item_cur_pos]->priv != 0 ||
720                                     p_menu->items[p_menu->item_cur_pos]->level != 0)                                                                                                   p_menu->items[p_menu->item_cur_pos]->level != 0))
721                          {                          {
722                                  p_menu->item_cur_pos--;                                  p_menu->item_cur_pos--;
723                          }                          }
724                          display_menu_cursor(p_menu, 1);                          display_menu_cursor(p_menu, 1);
                         break;  
725                  }                  }
726                    break;
727          case KEY_UP:          case KEY_UP:
728                  display_menu_cursor(p_menu, 0);                  display_menu_cursor(p_menu, 0);
729                  do                  do
# Line 759  int menu_control(MENU_SET *p_menu_set, i Line 763  int menu_control(MENU_SET *p_menu_set, i
763                                  }                                  }
764                          }                          }
765                  }                  }
766                    break;
767          }          }
768    
769          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