cli.h
上传用户:allwinjm
上传日期:2021-08-29
资源大小:99k
文件大小:3k
源码类别:

Internet/IE编程

开发平台:

Unix_Linux

  1. /************************************************************************ 
  2.  * RSTP library - Rapid Spanning Tree (802.1t, 802.1w) 
  3.  * Copyright (C) 2001-2003 Optical Access 
  4.  * Author: Alex Rozin 
  5.  * 
  6.  * This file is part of RSTP library. 
  7.  * 
  8.  * RSTP library is free software; you can redistribute it and/or modify it 
  9.  * under the terms of the GNU Lesser General Public License as published by the 
  10.  * Free Software Foundation; version 2.1 
  11.  * 
  12.  * RSTP library is distributed in the hope that it will be useful, but 
  13.  * WITHOUT ANY WARRANTY; without even the implied warranty of 
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser 
  15.  * General Public License for more details. 
  16.  * 
  17.  * You should have received a copy of the GNU Lesser General Public License 
  18.  * along with RSTP library; see the file COPYING.  If not, write to the Free 
  19.  * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 
  20.  * 02111-1307, USA. 
  21.  **********************************************************************/
  22. #ifndef _CLI_API__
  23. #define _CLI_API__
  24. #define MAX_CLI_BUFF 80
  25. #define MAXPARAMNUM     6
  26. #define MAXPARAMLEN     40
  27. #define MAX_CLI_PROMT 24
  28. #define MAX_SELECTOR 12
  29. typedef int CLI_CMD_CLBK (int argc, char** argv);
  30. typedef enum {
  31.   CMD_PAR_NUMBER,
  32.   CMD_PAR_STRING,
  33.   CMD_PAR_BOOL_YN,
  34.   CMD_PAR_ENUM,
  35. } CMD_PARAM_TYPE_T;
  36. typedef struct cmd_par_number_limits_s {
  37.   unsigned long min;
  38.   unsigned long max;
  39. } CMD_PAR_LIMITS;
  40. typedef struct cmd_par_string_selector_s {
  41.   char* string_value;
  42.   char* string_help;
  43. } CMD_PAR_SELECTOR;
  44. typedef struct cmd_par_dscr_s {
  45.   char* param_help;
  46.   CMD_PARAM_TYPE_T param_type;
  47.   CMD_PAR_LIMITS number_limits;
  48.   CMD_PAR_SELECTOR string_selector[MAX_SELECTOR];
  49.   char* default_value;
  50. } CMD_PAR_DSCR_T;
  51. typedef struct cmd_dscr_s {
  52.   char* cmd_name;
  53.   char* cmd_help;
  54.   CMD_PAR_DSCR_T param[MAXPARAMNUM];
  55.   CLI_CMD_CLBK* clbk;
  56. } CMD_DSCR_T;
  57. #define THE_COMMAND(x, y) {x, y, {
  58. #define PARAM_NUMBER(x,zmin,zmax,def) {x,CMD_PAR_NUMBER, {zmin, zmax}, {}, def},
  59. #define PARAM_STRING(x, def) {x,CMD_PAR_STRING, {},           {}, def},
  60. #define PARAM_ENUM(x)  {x,CMD_PAR_ENUM,   {},           {
  61. #define PARAM_ENUM_SEL(x, y) {x, y},
  62. #define PARAM_ENUM_DEFAULT(def) }, def},
  63. #define PARAM_BOOL(x,yesd,nod,def) {x, CMD_PAR_ENUM,  {}, {{"y",yesd},{"n",nod}},def}
  64. #define THE_FUNC(x) }, &x}, 
  65. #define END_OF_LANG {NULL,NULL}
  66. char *get_prompt (void); /* this function not from the lib ! */
  67. void cli_debug_dump_args (char* title, int argc, char** argv);
  68. void cli_register_language (const CMD_DSCR_T* cmd_list);
  69. void usage (void);
  70. int cli_execute_command (const char* line);
  71. #ifdef OLD_READLINE
  72. void rl_read_cli (void);
  73. #else
  74. void rl_read_cli (char *);
  75. #endif
  76. void rl_init (void);
  77. void rl_shutdown (void);
  78. char* UT_sprint_time_stamp (void);
  79. #endif /* _CLI_API__ */