Annotation of libaitcli/src/cli.c, revision 1.1.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>