version 1.2.2.8, 2010/06/07 12:30:28
|
version 1.2.2.9, 2010/06/07 13:47:42
|
Line 388 static int
|
Line 388 static int
|
bufComp(int idx, void * __restrict buffer) |
bufComp(int idx, void * __restrict buffer) |
{ |
{ |
linebuffer_t *buf = buffer; |
linebuffer_t *buf = buffer; |
|
char *str, *s, **app, *items[MAX_PROMPT_ITEMS]; |
|
register int i; |
|
|
if (!buffer || idx < 0 || idx > MAX_BINDKEY) |
if (!buffer || idx < 0 || idx > MAX_BINDKEY) |
return RETCODE_ERR; |
return RETCODE_ERR; |
|
|
|
str = strdup(buf->line_buf); |
|
if (!str) |
|
return RETCODE_ERR; |
|
else { |
|
s = str; |
|
io_TrimStr((u_char*) s); |
|
} |
|
|
|
if (*s) { |
|
memset(items, 0, sizeof(char*) * MAX_PROMPT_ITEMS); |
|
for (app = items, i = 0; app < items + MAX_PROMPT_ITEMS - 1 && (*app = strsep(&s, " \t")); |
|
*app ? i++ : i, *app ? app++ : app); |
|
|
|
// SLIST_FOREACH(cmd, &buf->line_cmds; cmd_next) |
|
// if (!strncmp(cmd->cmd_name, items[i - 1], strlen(items[i - 1]))) |
|
} |
|
|
|
free(str); |
return RETCODE_OK; |
return RETCODE_OK; |
} |
} |
|
|
Line 472 cli_BindKey(bindkey_t * __restrict key, linebuffer_t *
|
Line 492 cli_BindKey(bindkey_t * __restrict key, linebuffer_t *
|
* @funcCmd = Callback function when user call command |
* @funcCmd = Callback function when user call command |
* @csInfo = Inline information for command |
* @csInfo = Inline information for command |
* @csHelp = Help line when call help |
* @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 |
* return: RETCODE_ERR error, RETCODE_OK ok |
*/ |
*/ |
int |
int |
cli_addCommand(linebuffer_t * __restrict buffer, const char *csCmd, int cliLevel, cmd_func_t funcCmd, |
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) |
{ |
{ |
struct tagCommand *cmd; |
struct tagCommand *cmd; |
|
|
Line 494 cli_addCommand(linebuffer_t * __restrict buffer, const
|
Line 515 cli_addCommand(linebuffer_t * __restrict buffer, const
|
|
|
cmd->cmd_level = cliLevel; |
cmd->cmd_level = cliLevel; |
cmd->cmd_func = funcCmd; |
cmd->cmd_func = funcCmd; |
|
cmd->cmd_comp = (char**) anComp; |
cmd->cmd_len = strlcpy(cmd->cmd_name, csCmd, STRSIZ); |
cmd->cmd_len = strlcpy(cmd->cmd_name, csCmd, STRSIZ); |
if (csInfo) |
if (csInfo) |
strlcpy(cmd->cmd_info, csInfo, STRSIZ); |
strlcpy(cmd->cmd_info, csInfo, STRSIZ); |
Line 540 cli_delCommand(linebuffer_t * __restrict buffer, const
|
Line 562 cli_delCommand(linebuffer_t * __restrict buffer, const
|
* @funcCmd = Callback function when user call command |
* @funcCmd = Callback function when user call command |
* @csInfo = Inline information for command |
* @csInfo = Inline information for command |
* @csHelp = Help line when call help |
* @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 |
* return: RETCODE_ERR error, RETCODE_OK ok |
*/ |
*/ |
int |
int |
cli_updCommand(linebuffer_t * __restrict buffer, const char *csCmd, int cliLevel, cmd_func_t funcCmd, |
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) |
{ |
{ |
struct tagCommand *cmd; |
struct tagCommand *cmd; |
int ret = RETCODE_OK; |
int ret = RETCODE_OK; |
Line 558 cli_updCommand(linebuffer_t * __restrict buffer, const
|
Line 582 cli_updCommand(linebuffer_t * __restrict buffer, const
|
if (cmd->cmd_level == cliLevel && !strcmp(cmd->cmd_name, csCmd)) { |
if (cmd->cmd_level == cliLevel && !strcmp(cmd->cmd_name, csCmd)) { |
ret = 1; |
ret = 1; |
|
|
if (funcCmd) | if (funcCmd) { |
cmd->cmd_func = funcCmd; |
cmd->cmd_func = funcCmd; |
|
cmd->cmd_comp = (char**) anComp; |
|
} |
if (csInfo) |
if (csInfo) |
strlcpy(cmd->cmd_info, csInfo, STRSIZ); |
strlcpy(cmd->cmd_info, csInfo, STRSIZ); |
if (csHelp) |
if (csHelp) |
Line 879 cliInit(int fin, int fout, const char *prompt)
|
Line 905 cliInit(int fin, int fout, const char *prompt)
|
memset(keys, 0, sizeof(bindkey_t) * (MAX_BINDKEY + 1)); |
memset(keys, 0, sizeof(bindkey_t) * (MAX_BINDKEY + 1)); |
|
|
/* add helper functions */ |
/* add helper functions */ |
cli_addCommand(buffer, "exit", 0, cli_Cmd_Exit, "exit <cr>", "Exit from console"); | cli_addCommand(buffer, "exit", 0, cli_Cmd_Exit, "exit <cr>", "Exit from console", NULL); |
cli_addCommand(buffer, "help", 0, cli_Cmd_Help, "help [command] <cr>", "Help screen"); | cli_addCommand(buffer, "help", 0, cli_Cmd_Help, "help [command] <cr>", "Help screen", |
| (const char**) -1); |
|
|
/* fill key bindings */ |
/* fill key bindings */ |
// ascii chars & ctrl+chars |
// ascii chars & ctrl+chars |