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

Diff of /lbbs/src/bbs_cmd.c

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

Revision 1.5 by sysadm, Sat May 7 09:28:12 2005 UTC Revision 1.27 by sysadm, Fri Nov 7 13:56:11 2025 UTC
# Line 1  Line 1 
1  /***************************************************************************  /* SPDX-License-Identifier: GPL-3.0-or-later */
2                            bbs_cmd.c  -  description  /*
3                               -------------------   * bbs_cmd
4      begin                : Wed Mar 16 2005   *   - manager of menu command handler
5      copyright            : (C) 2005 by Leaflet   *
6      email                : leaflet@leafok.com   * Copyright (C) 2004-2025  Leaflet <leaflet@leafok.com>
7   ***************************************************************************/   */
   
 /***************************************************************************  
  *                                                                         *  
  *   This program is free software; you can redistribute it and/or modify  *  
  *   it under the terms of the GNU General Public License as published by  *  
  *   the Free Software Foundation; either version 2 of the License, or     *  
  *   (at your option) any later version.                                   *  
  *                                                                         *  
  ***************************************************************************/  
8    
9  #include "bbs_cmd.h"  #include "bbs_cmd.h"
10    #include "data_file_mgr.h"
11  #include "menu_proc.h"  #include "menu_proc.h"
12    #include "trie_dict.h"
13    #include <string.h>
14    
15  BBS_CMD bbs_cmd_list[MAX_CMD_ID] = {  static const BBS_CMD bbs_cmd_list[] = {
16    {"RunMBEM", exec_mbem},          {"LIST_SECTION", list_section},
17    {"EXITBBS", exitbbs},          {"RunMBEM", exec_mbem},
18    {"LICENSE", license},          {"EXITBBS", exit_bbs},
19    {"COPYRIGHT", copyright},          {"LICENSE", license},
20    {"RELOADMENU", notify_reload_menu}          {"COPYRIGHT", copyright},
21            {"VERSION", version},
22            {"RELOADCONF", reload_bbs_conf},
23            {"DATAMGR", data_file_mgr},
24            {"SHUTDOWN", shutdown_bbs},
25            {"M_FAVOR_SECTION", favor_section_filter},
26            {"VIEW_EX_ARTICLE", view_ex_article},
27            {"LIST_EX_SECTION", list_ex_section},
28            {"TOP10", show_top10_menu},
29            {"LOCATE_ARTICLE", locate_article},
30            {"FAVOR_TOPIC", favor_topic},
31            {"LIST_USER", list_user},
32            {"LIST_ONLINE_USER", list_online_user},
33            {"EDIT_INTRO", edit_intro},
34  };  };
35    
36  int  static const int bbs_cmd_count = sizeof(bbs_cmd_list) / sizeof(BBS_CMD);
37  exec_cmd (const char *cmd, const char *param)  
38    static TRIE_NODE *p_bbs_cmd_dict;
39    
40    int load_cmd()
41  {  {
42    int i;          if (p_bbs_cmd_dict != NULL)
43            {
44                    return -1;
45            }
46    
47            p_bbs_cmd_dict = trie_dict_create();
48    
49            if (p_bbs_cmd_dict == NULL)
50            {
51                    return -2;
52            }
53    
54            for (int i = 0; i < bbs_cmd_count; i++)
55            {
56                    if (trie_dict_set(p_bbs_cmd_dict, bbs_cmd_list[i].cmd, (int64_t)i) != 1)
57                    {
58                            return -3;
59                    }
60            }
61    
62            return 0;
63    }
64    
65    void unload_cmd()
66    {
67            trie_dict_destroy(p_bbs_cmd_dict);
68            p_bbs_cmd_dict = NULL;
69    }
70    
71    bbs_cmd_handler get_cmd_handler(const char *cmd)
72    {
73            int64_t i;
74    
75            if (p_bbs_cmd_dict == NULL)
76            {
77                    return NULL;
78            }
79    
80    for (i = 0; i < MAX_CMD_ID && bbs_cmd_list[i].p_handle != 0; i++)          if (trie_dict_get(p_bbs_cmd_dict, cmd, &i) != 1)
     {  
       if (strcmp (cmd, bbs_cmd_list[i].cmd) == 0)  
81          {          {
82            return ((*(bbs_cmd_list[i].p_handle))(param));                  return NULL;
83          }          }
     }  
84    
85    return UNKNOWN_CMD;          return (bbs_cmd_list[i].handler);
86  }  }


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

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