/*************************************************************************
* (C) 2010 AITNET ltd - Sofia/Bulgaria - <misho@aitbg.com>
* by Michael Pounov <misho@openbsd-bg.org>
*
* $Author: misho $
* $Id: cli.c,v 1.1.1.1 2010/04/16 13:20:29 misho Exp $
*
*************************************************************************/
#include "global.h"
/*
* 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)
{
return 1;
}
/*
* 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)
{
register int i;
cliCommands_t *commands = cmds;
if (!cmds)
return -1;
if (!args) {
cli_Printf(out, "\n");
for (i = 0; commands[i].cmd_name; i++)
cli_Printf(out, "%s\t\t%s\n", commands[i].cmd_name, commands[i].cmd_doc);
} else {
if (!args[1])
cli_Printf(out, "Help screen::\n");
else
if (!strncmp(args[1], "---", 3))
return 0;
for (i = 0; commands[i].cmd_name; i++) {
if (args[1] && strcmp(args[1], commands[i].cmd_name))
continue;
cli_Printf(out, "%s%s\t\t%s\n", args[1] ? "Syntax::\n\t" : "", commands[i].cmd_name,
args[1] ? commands[i].cmd_help : commands[i].cmd_doc);
}
}
return 0;
}
/*
* 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_Printf(out, "Command %s not supported in this version ...\n", args[0]);
return 0;
}
// ------------------------------------------------------------
/*
* cli_Comp_Filename() Builtin helper function for filename completion arguments
* @text = Text line
* @state = Position state
* return: NULL not found filename, != NULL filename
*/
char *cli_Comp_Filename(const char *text, int state)
{
return rl_filename_completion_function(text, state);
}
// ------------------------------------------------------------
/*
* cli_PrintHelp() Helper print for missing command arguments
* @out = Output stream
* @cmds = Commands list
* @idx = Selected command ID
* return: -1 error, !=-1 ok
* return: none
*/
inline int cli_PrintHelp(FILE *out, void *cmds, int idx)
{
cliCommands_t *c = cmds;
return cli_Printf(out, "%s\n", c[idx].cmd_help);
}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>