Annotation of libaitcli/src/cli.c, revision 1.1
1.1 ! misho 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 2010/03/22 15:21:20 misho Exp $
! 7: *
! 8: *************************************************************************/
! 9: #include "global.h"
! 10:
! 11:
! 12: /*
! 13: * cli_Cmd_Exit() Builtin helper function for Exit from Cli
! 14: * @cmds = Commands list
! 15: * @idx = Selected command ID
! 16: * @out = Output handle
! 17: * @args = Parsed arguments array
! 18: * return: 1 exit from Cli!
! 19: */
! 20: int cli_Cmd_Exit(void *cmds, int idx, FILE *out, char ** __restrict args)
! 21: {
! 22: return 1;
! 23: }
! 24:
! 25: /*
! 26: * cli_Cmd_Help() Builtin helper function for Help screen
! 27: * @cmds = Commands list
! 28: * @idx = Selected command ID
! 29: * @out = Output handle
! 30: * @args = Parsed arguments array
! 31: * return: -1 error, 0 = ok
! 32: */
! 33: int cli_Cmd_Help(void *cmds, int idx, FILE *out, char ** __restrict args)
! 34: {
! 35: register int i;
! 36: cliCommands_t *commands = cmds;
! 37:
! 38: if (!cmds)
! 39: return -1;
! 40:
! 41: if (!args) {
! 42: cli_Printf(out, "\n");
! 43: for (i = 0; commands[i].cmd_name; i++)
! 44: cli_Printf(out, "%s\t\t%s\n", commands[i].cmd_name, commands[i].cmd_doc);
! 45: } else {
! 46: if (!args[1])
! 47: cli_Printf(out, "Help screen::\n");
! 48: else
! 49: if (!strncmp(args[1], "---", 3))
! 50: return 0;
! 51:
! 52: for (i = 0; commands[i].cmd_name; i++) {
! 53: if (args[1] && strcmp(args[1], commands[i].cmd_name))
! 54: continue;
! 55:
! 56: cli_Printf(out, "%s%s\t\t%s\n", args[1] ? "Syntax::\n\t" : "", commands[i].cmd_name,
! 57: args[1] ? commands[i].cmd_help : commands[i].cmd_doc);
! 58: }
! 59: }
! 60:
! 61: return 0;
! 62: }
! 63:
! 64: /*
! 65: * cli_Cmd_Unsupported() Builtin helper function for unsupported commands
! 66: * @cmds = Commands list
! 67: * @idx = Selected command ID
! 68: * @out = Output handle
! 69: * @args = Parsed arguments array
! 70: * return: -1 error, 0 = ok, 1 exit from Cli!
! 71: */
! 72: int cli_Cmd_Unsupported(void *cmds, int idx, FILE *out, char ** __restrict args)
! 73: {
! 74: cli_Printf(out, "Command %s not supported in this version ...\n", args[0]);
! 75: return 0;
! 76: }
! 77:
! 78: // ------------------------------------------------------------
! 79:
! 80: /*
! 81: * cli_Comp_Filename() Builtin helper function for filename completion arguments
! 82: * @text = Text line
! 83: * @state = Position state
! 84: * return: NULL not found filename, != NULL filename
! 85: */
! 86: char *cli_Comp_Filename(const char *text, int state)
! 87: {
! 88: return rl_filename_completion_function(text, state);
! 89: }
! 90:
! 91:
! 92: // ------------------------------------------------------------
! 93:
! 94: /*
! 95: * cli_PrintHelp() Helper print for missing command arguments
! 96: * @out = Output stream
! 97: * @cmds = Commands list
! 98: * @idx = Selected command ID
! 99: * return: -1 error, !=-1 ok
! 100: * return: none
! 101: */
! 102: inline int cli_PrintHelp(FILE *out, void *cmds, int idx)
! 103: {
! 104: cliCommands_t *c = cmds;
! 105:
! 106: return cli_Printf(out, "%s\n", c[idx].cmd_help);
! 107: }
! 108:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>