Annotation of libaitcli/inc/aitcli.h, 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: aitio.h,v 1.3.2.6 2010/04/06 14:26:55 misho Exp $
! 7: *
! 8: *************************************************************************/
! 9: #ifndef __AITCLI_H
! 10: #define __AITCLI_H
! 11:
! 12:
! 13: struct tagCLICmd {
! 14: const char *cmd_name;
! 15: int (*cmd_func)(void *, int, FILE *, char **);
! 16: const char *cmd_doc;
! 17: const char *cmd_help;
! 18: char *(*cmd_comp)(const char *, int);
! 19: };
! 20:
! 21: typedef struct tagCLICmd cliCommands_t;
! 22: typedef char *cli_CompEntry_t(const char *, int);
! 23: typedef char **cli_Completion_t(const char *, int, int);
! 24:
! 25:
! 26: // cli_GetErrno() Get error code of last operation
! 27: inline int cli_GetErrno();
! 28: // cli_GetError() Get error text of last operation
! 29: inline const char *cli_GetError();
! 30:
! 31: /*
! 32: * cli_Printf() Printf CLI features
! 33: * @out = Output stream
! 34: * @csFormat = Printf format string
! 35: * return: none
! 36: */
! 37: inline int cli_Printf(FILE *out, const char *csFormat, ...);
! 38:
! 39: /*
! 40: * cliComp() Initialize completion CLI features
! 41: * @cmdComplete = Completion function
! 42: * @cmdEntry = Compentry function
! 43: * return: none
! 44: */
! 45: inline void cliComp(cli_Completion_t *cmdComplete, cli_CompEntry_t *cmdEntry);
! 46: /*
! 47: * cliExec() Execute CLI main loop
! 48: * @cmdList = Commands list
! 49: * @out = Output handle
! 50: * @csPrompt = Prompt text
! 51: * return: -1 error, 0 = exit w/^+D, 1 done.
! 52: */
! 53: int cliExec(cliCommands_t *cmdList, FILE *out, const char *csPrompt);
! 54:
! 55:
! 56: /*
! 57: * cli_PrintHelp() Helper print for missing command arguments
! 58: * @out = Output stream
! 59: * @cmds = Commands list
! 60: * @idx = Selected command ID
! 61: * return: -1 error, !=-1 ok
! 62: * return: none
! 63: */
! 64: inline int cli_PrintHelp(FILE *out, void *cmds, int idx);
! 65:
! 66: /*
! 67: * cli_Cmd_Unsupported() Builtin helper function for unsupported commands
! 68: * @cmds = Commands list
! 69: * @idx = Selected command ID
! 70: * @out = Output handle
! 71: * @args = Parsed arguments array
! 72: * return: -1 error, 0 = ok, 1 exit from Cli!
! 73: */
! 74: int cli_Cmd_Unsupported(void *cmds, int idx, FILE *out, char ** __restrict args);
! 75: /*
! 76: * cli_Cmd_Help() Builtin helper function for Help screen
! 77: * @cmds = Commands list
! 78: * @idx = Selected command ID
! 79: * @out = Output handle
! 80: * @args = Parsed arguments array
! 81: * return: -1 error, 0 = ok
! 82: */
! 83: int cli_Cmd_Help(void *cmds, int idx, FILE *out, char ** __restrict args);
! 84: /*
! 85: * cli_Cmd_Exit() Builtin helper function for Exit from Cli
! 86: * @cmds = Commands list
! 87: * @idx = Selected command ID
! 88: * @out = Output handle
! 89: * @args = Parsed arguments array
! 90: * return: 1 exit from Cli!
! 91: */
! 92: int cli_Cmd_Exit(void *cmds, int idx, FILE *out, char ** __restrict args);
! 93:
! 94:
! 95: /*
! 96: * cli_Register_Commands - Declare helper function for register and export Commands variable
! 97: */
! 98: #define CLI_REGISTER_COMMANDS(CMDS) \
! 99: extern cliCommands_t CMDS[];
! 100: /*
! 101: * cli_Make_Comp_Commands - Declare helper function for Commands completion arguments
! 102: */
! 103: #define CLI_MAKE_COMP_COMMANDS(FUNC, CMDS) \
! 104: char *FUNC(const char *text, int state) \
! 105: { \
! 106: register int i; \
! 107: int len = strlen(text); \
! 108: for (i = state; CMDS[i].cmd_name; i++) { \
! 109: if (strncmp(CMDS[i].cmd_name, "---", 3) && \
! 110: !strncmp(CMDS[i].cmd_name, text, len)) \
! 111: return strdup(CMDS[i].cmd_name); \
! 112: } \
! 113: return NULL; \
! 114: }
! 115:
! 116: /*
! 117: * cli_Make_Comp_Args - Declare helper function for Arguments completion
! 118: */
! 119: #define CLI_MAKE_COMP_ARGS(FUNC, ARGS) \
! 120: char *FUNC(const char *text __attribute__((unused)), int state) \
! 121: { \
! 122: while (ARGS[state]) \
! 123: return strdup(ARGS[state]); \
! 124: return NULL; \
! 125: }
! 126:
! 127: /*
! 128: * cli_Comp_Filename() Builtin helper function for filename completion arguments
! 129: * @text = Text line
! 130: * @state = Position state
! 131: * return: NULL not found filename, != NULL filename
! 132: */
! 133: char *cli_Comp_Filename(const char *text, int state);
! 134:
! 135:
! 136: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>