/[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.43 by sysadm, Thu May 15 09:15:52 2025 UTC Revision 1.46 by sysadm, Sun May 18 06:57:56 2025 UTC
# Line 663  int load_menu(MENU_SET *p_menu_set, cons Line 663  int load_menu(MENU_SET *p_menu_set, cons
663          }          }
664          fclose(fin);          fclose(fin);
665    
         // Set menu_item->action_menu_id of each menu item pointing to a submenu to the menu_id of the corresponding submenu  
666          for (menu_item_id = 0; menu_item_id < p_menu_set->menu_item_count; menu_item_id++)          for (menu_item_id = 0; menu_item_id < p_menu_set->menu_item_count; menu_item_id++)
667          {          {
668                  p_menu_item = get_menu_item_by_id(p_menu_set, menu_item_id);                  p_menu_item = get_menu_item_by_id(p_menu_set, menu_item_id);
669                  if (p_menu_item->submenu == 1 && strcmp(p_menu_item->action, "..") != 0)  
670                    // Set menu_item->action_cmd_handler of each menu item pointing to bbs_cmd
671                    if (p_menu_item->submenu == 0)
672                    {
673                            if ((p_menu_item->action_cmd_handler = get_cmd_handler(p_menu_item->action)) == NULL)
674                            {
675                                    log_error("Undefined menu action cmd handler [%s]\n", p_menu_item->action);
676                                    return -1;
677                            }
678                    }
679                    // Set menu_item->action_menu_id of each menu item pointing to a submenu to the menu_id of the corresponding submenu
680                    else if (strcmp(p_menu_item->action, "..") != 0)
681                  {                  {
682                          if (trie_dict_get(p_menu_set->p_menu_name_dict, p_menu_item->action, (int64_t *)&menu_id) != 1)                          if (trie_dict_get(p_menu_set->p_menu_name_dict, p_menu_item->action, (int64_t *)&menu_id) != 1)
683                          {                          {
# Line 880  int menu_control(MENU_SET *p_menu_set, i Line 890  int menu_control(MENU_SET *p_menu_set, i
890                  }                  }
891                  else                  else
892                  {                  {
893                          return (exec_cmd(p_menu_item->action, p_menu_item->name));                          return ((*(p_menu_item->action_cmd_handler))((void *)(p_menu_item->name)));
894                  }                  }
895                  break;                  break;
896          case KEY_LEFT:          case KEY_LEFT:
# Line 1063  int unload_menu(MENU_SET *p_menu_set) Line 1073  int unload_menu(MENU_SET *p_menu_set)
1073  int load_menu_shm(MENU_SET *p_menu_set)  int load_menu_shm(MENU_SET *p_menu_set)
1074  {  {
1075          // Mount shared memory          // Mount shared memory
1076          if (p_menu_set->p_reserved != NULL)          if (p_menu_set->p_reserved == NULL)
1077          {          {
1078                  log_error("Menu is already loaded\n");                  p_menu_set->p_reserved = shmat(p_menu_set->shmid, NULL, SHM_RDONLY);
1079                  return -1;                  if (p_menu_set->p_reserved == (void *)-1)
1080                    {
1081                            log_error("shmat() error (%d)\n", errno);
1082                            return -1;
1083                    }
1084          }          }
1085    
         p_menu_set->p_reserved = shmat(p_menu_set->shmid, NULL, SHM_RDONLY);  
         if (p_menu_set->p_reserved == (void *)-1)  
         {  
                 log_error("shmat() error (%d)\n", errno);  
                 return -2;  
         }  
1086          p_menu_set->p_menu_pool = p_menu_set->p_reserved + MENU_SET_RESERVED_LENGTH;          p_menu_set->p_menu_pool = p_menu_set->p_reserved + MENU_SET_RESERVED_LENGTH;
1087          p_menu_set->p_menu_item_pool = p_menu_set->p_menu_pool + sizeof(MENU) * MAX_MENUS;          p_menu_set->p_menu_item_pool = p_menu_set->p_menu_pool + sizeof(MENU) * MAX_MENUS;
1088          p_menu_set->p_menu_screen_pool = p_menu_set->p_menu_item_pool + sizeof(MENU_ITEM) * MAX_MENUITEMS;          p_menu_set->p_menu_screen_pool = p_menu_set->p_menu_item_pool + sizeof(MENU_ITEM) * MAX_MENUITEMS;


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

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