--- libaitcli/inc/aitcli.h 2010/06/07 11:54:00 1.2.2.7 +++ libaitcli/inc/aitcli.h 2010/06/07 13:47:42 1.2.2.9 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitcli.h,v 1.2.2.7 2010/06/07 11:54:00 misho Exp $ +* $Id: aitcli.h,v 1.2.2.9 2010/06/07 13:47:42 misho Exp $ * *************************************************************************/ #ifndef __AITCLI_H @@ -166,7 +166,7 @@ typedef struct { /* Commands structure for CLI */ -typedef int (*cmd_func_t)(/*linebuffer_t **/ void * __restrict buffer, int idx, char ** __restrict argv); +typedef int (*cmd_func_t)(/*linebuffer_t **/ void * __restrict buffer, int idx, char ** __restrict args); struct tagCommand { int cmd_level; @@ -178,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; @@ -200,6 +202,7 @@ typedef struct { bindkey_t *line_keys; + int line_level; commands_t line_cmds; int line_in; @@ -215,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 */ /* @@ -234,11 +249,12 @@ int cli_BindKey(bindkey_t * __restrict key, linebuffer * @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 *csInfo, const char *csHelp, const char **anComp); /* * cli_delCommand() Delete command from CLI session * @buffer = CLI buffer @@ -256,11 +272,13 @@ cli_delCommand(linebuffer_t * __restrict buffer, const * @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 *csInfo, const char *csHelp, const char **anComp); /*