--- libaitcli/inc/aitcli.h 2010/06/04 16:16:17 1.2.2.4 +++ libaitcli/inc/aitcli.h 2010/06/07 13:47:42 1.2.2.9 @@ -3,13 +3,17 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitcli.h,v 1.2.2.4 2010/06/04 16:16:17 misho Exp $ +* $Id: aitcli.h,v 1.2.2.9 2010/06/07 13:47:42 misho Exp $ * *************************************************************************/ #ifndef __AITCLI_H #define __AITCLI_H +#include +#include + + #define STRSIZ 256 /* Key definitions */ @@ -162,11 +166,10 @@ typedef struct { /* Commands structure for CLI */ -typedef int (*cmd_func_t)(/*linebuffer_t **/ void * __restrict buffer, int argc, char ** __restrict argv); +typedef int (*cmd_func_t)(/*linebuffer_t **/ void * __restrict buffer, int idx, char ** __restrict args); struct tagCommand { int cmd_level; - int cmd_min; int cmd_len; char cmd_name[STRSIZ]; @@ -175,6 +178,8 @@ struct tagCommand { cmd_func_t cmd_func; + char **cmd_comp; + SLIST_ENTRY(tagCommand) cmd_next; }; typedef SLIST_HEAD(slCommandHead, tagCommand) commands_t; @@ -197,6 +202,7 @@ typedef struct { bindkey_t *line_keys; + int line_level; commands_t line_cmds; int line_in; @@ -212,6 +218,18 @@ inline int cli_GetErrno(); 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 */ /* @@ -222,7 +240,48 @@ inline const char *cli_GetError(); */ int cli_BindKey(bindkey_t * __restrict key, linebuffer_t * __restrict buffer); + /* + * cli_addCommand() Add command to 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 + * return: RETCODE_ERR error, RETCODE_OK ok +*/ +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_addHistory() Add line to history * @buffer = CLI buffer * @str = Add custom text or if NULL use readed line from CLI buffer @@ -322,42 +381,7 @@ int cliNetLoop(linebuffer_t * __restrict buffer, const struct termios *term, struct winsize *win); -/* CLI Helper functions */ -/* - * cli_Cmd_Unsupported() Builtin helper function for unsupported commands - * @cmds = Commands list - * @idx = Selected command ID - * @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); -/* - * cli_Cmd_Help() Builtin helper function for Help screen - * @cmds = Commands list - * @idx = Selected command ID - * @out = Output handle - * @args = Parsed arguments array - * return: -1 error, 0 = ok -*/ -int cli_Cmd_Help(void *cmds, int idx, FILE *out, char ** __restrict args); -/* - * cli_Cmd_Exit() Builtin helper function for Exit from Cli - * @cmds = Commands list - * @idx = Selected command ID - * @out = Output handle - * @args = Parsed arguments array - * return: 1 exit from Cli! -*/ -int cli_Cmd_Exit(void *cmds, int idx, FILE *out, char ** __restrict args); - - -/* - * cli_Register_Commands - Declare helper function for register and export Commands variable -*/ -#define CLI_REGISTER_COMMANDS(CMDS) \ - extern commands_t CMDS[]; /* * cli_Make_Comp_Commands - Declare helper function for Commands completion arguments */