Diff for /libaitcli/inc/aitcli.h between versions 1.2.2.1 and 1.2.2.9

version 1.2.2.1, 2010/06/04 12:08:32 version 1.2.2.9, 2010/06/07 13:47:42
Line 10 Line 10
 #define __AITCLI_H  #define __AITCLI_H
   
   
   #include <termios.h>
   #include <sys/queue.h>
   
   
   #define STRSIZ          256
   
 /* Key definitions */  /* Key definitions */
   
 #define K_F1            "\x1b\x4f\x50"  #define K_F1            "\x1b\x4f\x50"
Line 158  typedef struct { Line 164  typedef struct {
 } bindkey_t;  } bindkey_t;
   
   
   /* Commands structure for CLI */
   
   typedef int (*cmd_func_t)(/*linebuffer_t **/ void * __restrict buffer, int idx, char ** __restrict args);
   struct tagCommand {
           int                     cmd_level;
   
           int                     cmd_len;
           char                    cmd_name[STRSIZ];
   
           char                    cmd_info[STRSIZ];
           char                    cmd_help[STRSIZ];
   
           cmd_func_t              cmd_func;
   
           char                    **cmd_comp;
   
           SLIST_ENTRY(tagCommand) cmd_next;
   };
   typedef SLIST_HEAD(slCommandHead, tagCommand) commands_t;
   
   
 /* Main structure, Buffer for CLI work with thread models ;-) special designed by M.Punov */  /* Main structure, Buffer for CLI work with thread models ;-) special designed by M.Punov */
   
 typedef struct {  typedef struct {
Line 175  typedef struct { Line 202  typedef struct {
   
         bindkey_t               *line_keys;          bindkey_t               *line_keys;
   
           int                     line_level;
           commands_t              line_cmds;
   
         int                     line_in;          int                     line_in;
         int                     line_out;          int                     line_out;
 } linebuffer_t;  } linebuffer_t;
   
 /* Commands structure for CLI */  
   
 typedef int (*cmd_func_t)(linebuffer_t * __restrict buffer, int argc, char ** __restrict argv);  
 typedef struct {  
         int                     cmd_level;  
   
         int                     cmd_min;  
         int                     cmd_len;  
         char                    cmd_name[STRSIZ];  
   
         char                    cmd_info[STRSIZ];  
         char                    cmd_help[STRSIZ];  
   
         cmd_func_t              *cmd_func;  
 } commands_t;  
   
   
 /* Error support functions */  /* Error support functions */
   
 // cli_GetErrno() Get error code of last operation  // cli_GetErrno() Get error code of last operation
Line 204  inline int cli_GetErrno(); Line 218  inline int cli_GetErrno();
 inline const char *cli_GetError();  inline const char *cli_GetError();
   
   
   /* CLI Helper functions */
   
   /*
    * cli_Cmd_Unsupported() Builtin helper function for unsupported commands
    * @buffer = CLI buffer
    * @idx = Selected command ID
    * @args = Parsed arguments array
    * return: RETCODE_OK ok
   */
   int cli_Cmd_Unsupported(void * __restrict buffer, int idx, char ** __restrict args);
   
   
 /* CLI Functions */  /* CLI Functions */
   
 /*  /*
 * cliExec() Execute CLI main loop * cli_BindKey() Bind function to key
 * @cmdList = Commands list * @key = key structure
 * @csPrompt = Prompt text * @buffer = CLI buffer
 * return: -1 error, 0 = exit w/^+D, 1 done. * return: RETCODE_ERR error, RETCODE_OK ok, >0 bind at position
 */  */
int cliExec(cliCommands_t *cmdList, const char *csPrompt);int cli_BindKey(bindkey_t * __restrict key, linebuffer_t * __restrict buffer);
 
 
 /*  /*
 * cliNetExec() Execute net CLI main loop * cli_addCommand() Add command to CLI session
 * @cmdList = Commands list * @buffer = CLI buffer
 * @csPrompt = Prompt text * @csCmd = Command name
 * @sock = client socket * @cliLevel = Level in CLI, -1 unprivi(view from all), 0 main config, 1 sub config ...
 * @term = stdin termios * @funcCmd = Callback function when user call command
 * @win = window size of tty * @csInfo = Inline information for command
 * return: -1 error, 0 = exit w/^+D, 1 done. * @csHelp = Help line when call help
  * @anComp = Completion array terminated with NULL element, -1 complete commands, NULL nothing
  * return: RETCODE_ERR error, RETCODE_OK ok
 */  */
int cliNetExec(cliCommands_t *cmdList, const char *csPrompt, int sock, struct termios *term, struct winsize *win);int
 cli_addCommand(linebuffer_t * __restrict buffer, const char *csCmd, int cliLevel, cmd_func_t funcCmd, 
                 const char *csInfo, const char *csHelp, const char **anComp);
 /*
  * cli_delCommand() Delete command from CLI session
  * @buffer = CLI buffer
  * @csCmd = Command name
  * @cliLevel = Level in CLI, -1 unprivi(view from all), 0 main config, 1 sub config ...
  * return: RETCODE_ERR error, RETCODE_OK ok
 */
 int
 cli_delCommand(linebuffer_t * __restrict buffer, const char *csCmd, int cliLevel);
 /*
  * cli_updCommand() Update command in CLI session
  * @buffer = CLI buffer
  * @csCmd = Command name
  * @cliLevel = Level in CLI, -1 unprivi(view from all), 0 main config, 1 sub config ...
  * @funcCmd = Callback function when user call command
  * @csInfo = Inline information for command
  * @csHelp = Help line when call help
  * @anComp = Completion array terminated with NULL element, -1 complete commands, NULL nothing,
  *              update only if funcCmd is not NULL
  * return: RETCODE_ERR error, RETCODE_OK ok
 */
 int
 cli_updCommand(linebuffer_t * __restrict buffer, const char *csCmd, int cliLevel, cmd_func_t funcCmd, 
                 const char *csInfo, const char *csHelp, const char **anComp);
   
   
/* CLI Helper functions *//*
  * cli_addHistory() Add line to history
  * @buffer = CLI buffer
  * @str = Add custom text or if NULL use readed line from CLI buffer
  * return: RETCODE_ERR error, RETCODE_OK ok
 */
 int cli_addHistory(linebuffer_t * __restrict buffer, const char * __restrict str);
 /*
  * cli_saveHistory() Save history to file
  * @buffer = CLI buffer
  * @histfile = History filename, if NULL will be use default name
  * @lines = Maximum history lines to save
  * return: RETCODE_ERR error, RETCODE_OK ok
 */
 int cli_saveHistory(linebuffer_t * __restrict buffer, const char *histfile, int lines);
 /*
  * cli_loadHistory() Load history from file
  * @buffer = CLI buffer
  * @histfile = History filename, if NULL will be use default name
  * return: RETCODE_ERR error, RETCODE_OK ok
 */
 int cli_loadHistory(linebuffer_t * __restrict buffer, const char *histfile);
 /*
  * cli_resetHistory() Reset history search in CLI session
  * @buffer = CLI buffer
  * return: none
 */
 inline void cli_resetHistory(linebuffer_t * __restrict buffer);
   
 /*  /*
 * cli_Cmd_Unsupported() Builtin helper function for unsupported commands * cli_freeLine() Clear entire line
 * @cmds = Commands list * @buffer = CLI buffer
 * @idx = Selected command ID * return: RETCODE_ERR error, RETCODE_OK ok
 * @out = Output handle 
 * @args = Parsed arguments array 
 * return: -1 error, 0 = ok, 1 exit from Cli! 
 */  */
int cli_Cmd_Unsupported(void *cmds, int idx, FILE *out, char ** __restrict args);inline int cli_freeLine(linebuffer_t * __restrict buffer);
 /*  /*
 * cli_Cmd_Help() Builtin helper function for Help screen * cli_setPrompt() Set new prompt for CLI session
 * @cmds = Commands list * @buffer = CLI buffer
 * @idx = Selected command ID * @prompt = new text for prompt or if NULL disable prompt
 * @out = Output handle * return: none
 * @args = Parsed arguments array 
 * return: -1 error, 0 = ok 
 */  */
int cli_Cmd_Help(void *cmds, int idx, FILE *out, char ** __restrict args);inline void cli_setPrompt(linebuffer_t * __restrict buffer, const char *prompt);
 /*  /*
 * cli_Cmd_Exit() Builtin helper function for Exit from Cli * cli_Printf() Send message to CLI session
 * @cmds = Commands list * @buffer = CLI buffer
 * @idx = Selected command ID * @fmt = printf format string
 * @out = Output handle * @... = arguments defined in fmt
 * @args = Parsed arguments array * return: none
 * return: 1 exit from Cli! 
 */  */
int cli_Cmd_Exit(void *cmds, int idx, FILE *out, char ** __restrict args);inline void cli_Printf(linebuffer_t * __restrict buffer, char *fmt, ...);
   
   /*
    * cliEnd() Clear data, Free resources and close CLI session
    * @buffer = CLI buffer
    * return: RETCODE_ERR error, RETCODE_OK ok
   */
   void cliEnd(linebuffer_t * __restrict buffer);
   /*
    * cliInit() Start CLI session, allocate memory for resources and bind keys
    * @fin = Input device handle
    * @fout = Output device handle
    * @prompt = text for prompt, if NULL disable prompt
    * return: NULL if error or !=NULL CLI buffer
   */
   linebuffer_t *cliInit(int fin, int fout, const char *prompt);
   
 /*  /*
 * cli_Register_Commands - Declare helper function for register and export Commands variable * cliReadLine() Read line from opened CLI session
  * @buffer = CLI buffer
  * return: NULL if error or !=NULL readed line, must be free after use!
 */  */
#define CLI_REGISTER_COMMANDS(CMDS)        \char *cliReadLine(linebuffer_t * __restrict buffer);
        extern commands_t CMDS[];/*
  * cliLoop() CLI main loop
  * @buffer = CLI buffer
  * @csHistFile = History file name
  * return: RETCODE_ERR error, RETCODE_OK ok
 */
 int cliLoop(linebuffer_t * __restrict buffer, const char *csHistFile);
 
 /*
  * cliLoop() CLI main loop
  * @buffer = CLI buffer
  * @csHistFile = History file name
  * return: RETCODE_ERR error, RETCODE_OK ok
 */
 int cliLoop(linebuffer_t * __restrict buffer, const char *csHistFile);
 /*
  * cliNetLoop() CLI network main loop binded to socket
  * @buffer = CLI buffer
  * @csHistFile = History file name
  * @sock = client socket
  * @term = stdin termios
  * @win = window size of tty
  * return: RETCODE_ERR error, RETCODE_OK ok
 */
 int cliNetLoop(linebuffer_t * __restrict buffer, const char *csHistFile, int sock, 
                 struct termios *term, struct winsize *win);
 
 
 
 /*  /*
  * cli_Make_Comp_Commands - Declare helper function for Commands completion arguments   * cli_Make_Comp_Commands - Declare helper function for Commands completion arguments
 */  */

Removed from v.1.2.2.1  
changed lines
  Added in v.1.2.2.9


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>