1: /*************************************************************************
2: * (C) 2010 AITNET ltd - Sofia/Bulgaria - <misho@aitbg.com>
3: * by Michael Pounov <misho@openbsd-bg.org>
4: *
5: * $Author: misho $
6: * $Id: cli.c,v 1.2 2011/03/16 17:24:03 misho Exp $
7: *
8: *************************************************************************/
9: #include "global.h"
10:
11:
12: /*
13: * cli_Cmd_Exit() Builtin helper function for Exit from Cli
14: * @buffer = CLI buffer
15: * @idx = Selected command ID
16: * @args = Parsed arguments array
17: * return: RETCODE_EOF exit from Cli!
18: */
19: int cli_Cmd_Exit(void * __restrict buffer, int idx, char ** __restrict args)
20: {
21: cli_Printf(buffer, "\n");
22: return RETCODE_EOF;
23: }
24:
25: /*
26: * cli_Cmd_Help() Builtin helper function for Help screen
27: * @buffer = CLI buffer
28: * @idx = Selected command ID
29: * @args = Parsed arguments array
30: * return: RETCODE_ERR in error or RETCODE_OK
31: */
32: int cli_Cmd_Help(void * __restrict buffer, int idx, char ** __restrict args)
33: {
34: linebuffer_t *buf = buffer;
35: struct tagCommand *cmd;
36:
37: if (!buffer) {
38: cli_SetErr(EINVAL, "Error:: invalid input parameters ...");
39: return RETCODE_ERR;
40: }
41:
42: cli_Printf(buf, "\n");
43: if (!args) {
44: SLIST_FOREACH(cmd, &buf->line_cmds, cmd_next)
45: cli_Printf(buf, "%s\t\t%s\n", cmd->cmd_name, cmd->cmd_help);
46: } else {
47: if (!args[1])
48: cli_Printf(buf, "Help screen::\n");
49: else
50: if (!strncmp(args[1], "---", 3))
51: return RETCODE_OK;
52:
53: SLIST_FOREACH(cmd, &buf->line_cmds, cmd_next) {
54: if (args[1] && (cmd->cmd_level != buf->line_level || strcmp(args[1], cmd->cmd_name)))
55: continue;
56:
57: cli_Printf(buf, "%s%s\t\t%s\n", args[1] ? "Syntax::\n\t" : "", cmd->cmd_name,
58: args[1] ? cmd->cmd_info: cmd->cmd_help);
59: }
60: }
61: cli_Printf(buffer, "\r");
62:
63: return RETCODE_OK;
64: }
65:
66: /*
67: * cli_Cmd_Unsupported() Builtin helper function for unsupported commands
68: * @buffer = CLI buffer
69: * @idx = Selected command ID
70: * @args = Parsed arguments array
71: * return: RETCODE_OK ok
72: */
73: int cli_Cmd_Unsupported(void * __restrict buffer, int idx, char ** __restrict args)
74: {
75: cli_Printf(buffer, "Command %s not supported in this version ...\n", args[0]);
76: return RETCODE_OK;
77: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>