--- libaitcli/src/aitcli.c 2010/06/07 16:16:12 1.2.2.12 +++ libaitcli/src/aitcli.c 2010/06/07 23:38:39 1.2.2.13 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitcli.c,v 1.2.2.12 2010/06/07 16:16:12 misho Exp $ +* $Id: aitcli.c,v 1.2.2.13 2010/06/07 23:38:39 misho Exp $ * *************************************************************************/ #include "global.h" @@ -400,11 +400,10 @@ bufComp(int idx, void * __restrict buffer) strlcat(szLine, cmd->cmd_name, STRSIZ); } - printf("i=%d j=%d c=%p name=%s comp=%p\n", i, j, c, c->cmd_name, c->cmd_comp); - if (i > 1 && j == 1 && c && c->cmd_comp) { - /* we are on argument of command and has complition callback */ - printf("ima comp!\n"); - goto endcomp; + if (i > 1 && c) { + /* we are on argument of command and has complition info */ + j++; // always must be j > 1 ;) for arguments + strlcpy(szLine, c->cmd_info, STRSIZ); } } else { /* we have valid char but i == 0, this case is illegal */ @@ -427,6 +426,8 @@ bufComp(int idx, void * __restrict buffer) printfNL(buf, 0); write(buf->line_out, szLine, strlen(szLine)); printfNL(buf, 1); + printfEOL(buf, buf->line_len - 1, 1); + printfEOL(buf, -1, 1); } if (j == 1 && c) { clrscrEOL(buf); @@ -458,7 +459,9 @@ bufHelp(int idx, void * __restrict buffer) return RETCODE_ERR; cli_Cmd_Help(buf, -1, NULL); - printfCR(buf, 1); + + printfEOL(buf, buf->line_len - 1, 1); + printfEOL(buf, -1, 1); return RETCODE_OK; } @@ -526,12 +529,11 @@ cli_BindKey(bindkey_t * __restrict key, linebuffer_t * * @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) + const char *csInfo, const char *csHelp) { struct tagCommand *cmd; @@ -549,7 +551,6 @@ cli_addCommand(linebuffer_t * __restrict buffer, const cmd->cmd_level = cliLevel; cmd->cmd_func = funcCmd; - cmd->cmd_comp = (char**) anComp; cmd->cmd_len = strlcpy(cmd->cmd_name, csCmd, STRSIZ); if (csInfo) strlcpy(cmd->cmd_info, csInfo, STRSIZ); @@ -596,13 +597,11 @@ 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 **anComp) + const char *csInfo, const char *csHelp) { struct tagCommand *cmd; int ret = RETCODE_OK; @@ -616,10 +615,8 @@ cli_updCommand(linebuffer_t * __restrict buffer, const if (cmd->cmd_level == cliLevel && !strcmp(cmd->cmd_name, csCmd)) { ret = 1; - if (funcCmd) { + if (funcCmd) cmd->cmd_func = funcCmd; - cmd->cmd_comp = (char**) anComp; - } if (csInfo) strlcpy(cmd->cmd_info, csInfo, STRSIZ); if (csHelp) @@ -939,9 +936,8 @@ cliInit(int fin, int fout, const char *prompt) memset(keys, 0, sizeof(bindkey_t) * (MAX_BINDKEY + 1)); /* add helper functions */ - cli_addCommand(buffer, "exit", 0, cli_Cmd_Exit, "exit ", "Exit from console", NULL); - cli_addCommand(buffer, "help", 0, cli_Cmd_Help, "help [command] ", "Help screen", - (const char**) -1); + cli_addCommand(buffer, "exit", 0, cli_Cmd_Exit, "exit ", "Exit from console"); + cli_addCommand(buffer, "help", 0, cli_Cmd_Help, "help [command] ", "Help screen"); /* fill key bindings */ // ascii chars & ctrl+chars @@ -1340,42 +1336,6 @@ cliLoop(linebuffer_t * __restrict buffer, const char * register int i; int ret = RETCODE_OK; struct tagCommand *cmd; - - /* - - char **cli_stdCompletion(const char *text, int start, int end) - { - register int i; - char **matches = NULL; - - char *cmdCompGet(const char *text, int state) - { - int len = strlen(text); - - for (i = state; cmdList[i].cmd_name; i++) { - if (strncmp(cmdList[i].cmd_name, "---", 3) && - !strncmp(cmdList[i].cmd_name, text, len)) - return strdup(cmdList[i].cmd_name); - } - - return NULL; - } - - if (!start) - matches = rl_completion_matches(text, cmdCompGet); - else - for (i = 0; cmdList[i].cmd_name; i++) { - if (!cmdList[i].cmd_comp) - continue; - if (!strncmp(rl_line_buffer, cmdList[i].cmd_name, strlen(cmdList[i].cmd_name))) - matches = rl_completion_matches(text, cmdList[i].cmd_comp); - } - - return matches; - } - - - */ /* --- main body of CLI --- */