Diff for /libaitcli/inc/aitcli.h between versions 1.2 and 1.2.2.1

version 1.2, 2010/06/04 11:32:47 version 1.2.2.1, 2010/06/04 12:08:32
Line 10 Line 10
 #define __AITCLI_H  #define __AITCLI_H
   
   
struct tagCLICmd {/* Key definitions */
        const char *cmd_name;
        int (*cmd_func)(void *, int, FILE *, char **);#define K_F1            "\x1b\x4f\x50"
        const char *cmd_doc;#define K_F2            "\x1b\x4f\x51"
        const char *cmd_help;#define K_F3            "\x1b\x4f\x52"
        char *(*cmd_comp)(const char *, int);#define K_F4            "\x1b\x4f\x53"
 #define K_F5            "\x1b\x5b\x31\x35\x7e"
 #define K_F6            "\x1b\x5b\x31\x37\x7e"
 #define K_F7            "\x1b\x5b\x31\x38\x7e"
 #define K_F8            "\x1b\x5b\x31\x39\x7e"
 #define K_F9            "\x1b\x5b\x32\x30\x7e"
 #define K_F10           "\x1b\x5b\x32\x31\x7e"
 #define K_F11           "\x1b\x5b\x32\x33\x7e"
 #define K_F12           "\x1b\x5b\x32\x34\x7e"
 #define K_CTRL_F1       "\x1b\x5b\x6b"
 #define K_CTRL_F2       "\x1b\x5b\x6c"
 #define K_CTRL_F3       "\x1b\x5b\x6d"
 #define K_CTRL_F4       "\x1b\x5b\x6e"
 #define K_CTRL_F5       "\x1b\x5b\x6f"
 #define K_CTRL_F6       "\x1b\x5b\x70"
 #define K_CTRL_F7       "\x1b\x5b\x71"
 #define K_CTRL_F8       "\x1b\x5b\x72"
 #define K_CTRL_F9       "\x1b\x5b\x73"
 #define K_CTRL_F10      "\x1b\x5b\x74"
 #define K_CTRL_F11      "\x1b\x5b\x75"
 #define K_CTRL_F12      "\x1b\x5b\x76"
 #define K_CTRL_SH_F1    "\x1b\x5b\x77"
 #define K_CTRL_SH_F2    "\x1b\x5b\x78"
 #define K_CTRL_SH_F3    "\x1b\x5b\x79"
 #define K_CTRL_SH_F4    "\x1b\x5b\x7a"
 #define K_CTRL_SH_F5    "\x1b\x5b\x40"
 #define K_CTRL_SH_F6    "\x1b\x5b\x5b"
 #define K_CTRL_SH_F7    "\x1b\x5b\x5c"
 #define K_CTRL_SH_F8    "\x1b\x5b\x5d"
 #define K_CTRL_SH_F9    "\x1b\x5b\x5e"
 #define K_CTRL_SH_F10   "\x1b\x5b\x5f"
 #define K_CTRL_SH_F11   "\x1b\x5b\x60"
 #define K_CTRL_SH_F12   "\x1b\x5b\x7b"
 
 #define K_INS           "\x1b\x5b\x32\x7e"
 #define K_DEL           "\x1b\x5b\x33\x7e"
 #define K_PGUP          "\x1b\x5b\x35\x7e"
 #define K_PGDN          "\x1b\x5b\x36\x7e"
 #define K_HOME          "\x1b\x5b\x48"
 #define K_END           "\x1b\x5b\x46"
 #define K_UP            "\x1b\x5b\x41"
 #define K_DOWN          "\x1b\x5b\x42"
 #define K_RIGHT         "\x1b\x5b\x43"
 #define K_LEFT          "\x1b\x5b\x44"
 
 #define K_NULL          "\x0"
 #define K_CR            "\xd"
 #define K_BTAB          "\x1b\x5b\x5a"
 #define K_TAB           "\x9"
 #define K_ENTER         "\xa"
 #define K_ESC           "\x1b"
 #define K_BACKSPACE     "\x7f"
 #define K_SPACE         "\x20"
 
 #define K_CTRL_SPACE    K_NULL
 #define K_CTRL_2        K_NULL
 #define K_CTRL_A        "\x1"
 #define K_CTRL_B        "\x2"
 #define K_CTRL_C        "\x3"
 #define K_CTRL_D        "\x4"
 #define K_CTRL_E        "\x5"
 #define K_CTRL_F        "\x6"
 #define K_CTRL_G        "\x7"
 #define K_CTRL_H        "\x8"
 #define K_CTRL_I        K_TAB
 #define K_CTRL_J        K_ENTER
 #define K_CTRL_K        "\xb"
 #define K_CTRL_L        "\xc"
 #define K_CTRL_M        K_ENTER         // K_CR
 #define K_CTRL_N        "\xe"
 #define K_CTRL_O        "\xf"
 #define K_CTRL_P        "\x10"
 #define K_CTRL_Q        "\x11"
 #define K_CTRL_R        "\x12"
 #define K_CTRL_S        "\x13"
 #define K_CTRL_T        "\x14"
 #define K_CTRL_U        "\x15"
 #define K_CTRL_V        "\x16"
 #define K_CTRL_W        "\x17"
 #define K_CTRL_X        "\x18"
 #define K_CTRL_Y        "\x19"
 #define K_CTRL_Z        "\x1a"
 #define K_CTRL_LBRACE   "\x1b"
 #define K_CTRL_PIPE     "\x1c"
 #define K_CTRL_RBRACE   "\x1d"
 #define K_CTRL_6        "\x1e"
 #define K_CTRL__        "\x1f"
 
 
 #define K_X_CTRL_INS    "\x1b\x5b\x32\x3b\x35\x7e"
 #define K_X_CTRL_DEL    "\x1b\x5b\x33\x3b\x35\x7e"
 #define K_X_CTRL_PGUP   "\x1b\x5b\x35\x3b\x35\x7e"
 #define K_X_CTRL_PGDN   "\x1b\x5b\x36\x3b\x35\x7e"
 #define K_X_CTRL_HOME   "\x1b\x5b\x31\x3b\x35\x48"
 #define K_X_CTRL_END    "\x1b\x5b\x31\x3b\x35\x46"
 #define K_X_CTRL_UP     "\x1b\x5b\x31\x3b\x35\x41"
 #define K_X_CTRL_DOWN   "\x1b\x5b\x31\x3b\x35\x42"
 #define K_X_CTRL_RIGHT  "\x1b\x5b\x31\x3b\x35\x43"
 #define K_X_CTRL_LEFT   "\x1b\x5b\x31\x3b\x35\x44"
 
 #define K_X_ALT_INS     "\x1b\x5b\x32\x3b\x33\x7e"
 #define K_X_ALT_DEL     "\x1b\x5b\x33\x3b\x33\x7e"
 #define K_X_ALT_PGUP    "\x1b\x5b\x35\x3b\x33\x7e"
 #define K_X_ALT_PGDN    "\x1b\x5b\x36\x3b\x33\x7e"
 #define K_X_ALT_HOME    "\x1b\x5b\x31\x3b\x33\x48"
 #define K_X_ALT_END     "\x1b\x5b\x31\x3b\x33\x46"
 #define K_X_ALT_UP      "\x1b\x5b\x31\x3b\x33\x41"
 #define K_X_ALT_DOWN    "\x1b\x5b\x31\x3b\x33\x42"
 #define K_X_ALT_RIGHT   "\x1b\x5b\x31\x3b\x33\x43"
 #define K_X_ALT_LEFT    "\x1b\x5b\x31\x3b\x33\x44"
 
 #define K_X_CTL_A_INS   "\x1b\x5b\x32\x3b\x37\x7e"
 #define K_X_CTL_A_DEL   "\x1b\x5b\x33\x3b\x37\x7e"
 #define K_X_CTL_A_PGUP  "\x1b\x5b\x35\x3b\x37\x7e"
 #define K_X_CTL_A_PGDN  "\x1b\x5b\x36\x3b\x37\x7e"
 #define K_X_CTL_A_HOME  "\x1b\x5b\x31\x3b\x37\x48"
 #define K_X_CTL_A_END   "\x1b\x5b\x31\x3b\x37\x46"
 #define K_X_CTL_A_UP    "\x1b\x5b\x31\x3b\x37\x41"
 #define K_X_CTL_A_DOWN  "\x1b\x5b\x31\x3b\x37\x42"
 #define K_X_CTL_A_RIGHT "\x1b\x5b\x31\x3b\x37\x43"
 #define K_X_CTL_A_LEFT  "\x1b\x5b\x31\x3b\x37\x44"
 
 
 /* History types */
 
 struct tagHistory {
         int             hist_len;
         char            hist_line[BUFSIZ];
 
         TAILQ_ENTRY(tagHistory) hist_next;
 };  };
   typedef TAILQ_HEAD(tqHistoryHead, tagHistory) history_t;
   
typedef struct tagCLICmd cliCommands_t;/* Bind keys structure types */
typedef char *cli_CompEntry_t(const char *, int); 
typedef char **cli_Completion_t(const char *, int, int); 
   
   typedef int (*bindkey_func_t)(int idx, /*linebuffer_t **/ void * __restrict buffer);
   typedef struct {
           int             key_len;
           unsigned char   key_ch[8];
           bindkey_func_t  key_func;
   } bindkey_t;
   
   
   /* Main structure, Buffer for CLI work with thread models ;-) special designed by M.Punov */
   
   typedef struct {
           char                    line_mode;
   
           char                    *line_prompt;
   
           int                     line_bol;
           int                     line_eol;
           int                     line_len;
           char                    *line_buf;
   
           const struct tagHistory *line_h;
           history_t               line_history;
   
           bindkey_t               *line_keys;
   
           int                     line_in;
           int                     line_out;
   } linebuffer_t;
   
   /* Commands structure for CLI */
   
   typedef int (*cmd_func_t)(linebuffer_t * __restrict buffer, int argc, char ** __restrict argv);
   typedef struct {
           int                     cmd_level;
   
           int                     cmd_min;
           int                     cmd_len;
           char                    cmd_name[STRSIZ];
   
           char                    cmd_info[STRSIZ];
           char                    cmd_help[STRSIZ];
   
           cmd_func_t              *cmd_func;
   } commands_t;
   
   
   /* Error support functions */
   
 // cli_GetErrno() Get error code of last operation  // cli_GetErrno() Get error code of last operation
 inline int cli_GetErrno();  inline int cli_GetErrno();
 // cli_GetError() Get error text of last operation  // cli_GetError() Get error text of last operation
 inline const char *cli_GetError();  inline const char *cli_GetError();
   
 /*  
  * cli_Printf() Printf CLI features  
  * @out = Output stream  
  * @csFormat = Printf format string  
  * return: -1 error, != -1 printed chars  
 */  
 inline int cli_Printf(FILE *out, const char *csFormat, ...);  
   
   /* CLI Functions */
   
 /*  /*
  * cliNetInit() Initialize Readline if CLI bind to socket  
  * @csProg = program name  
  * @pty = Master pty  
  * @term = stdin termios  
  * return: none  
 */  
 void cliNetInit(const char *csProg, int pty, struct termios *term);  
 /*  
  * cliTTY() Initialize I/O TTY CLI features  
  * @term = terminal name  
  * @inp = input handle  
  * @out = output handle  
  * @win = window size  
  * return: -1 error, != -1 ok  
 */  
 inline int cliTTY(const char *term, FILE *inp, FILE *out, struct winsize *win);  
 /*  
  * cliComp() Initialize completion CLI features  
  * @cmdComplete = Completion function  
  * @cmdEntry = Compentry function  
  * return: none  
 */  
 inline void cliComp(cli_Completion_t *cmdComplete, cli_CompEntry_t *cmdEntry);  
 /*  
  * cliExec() Execute CLI main loop   * cliExec() Execute CLI main loop
  * @cmdList = Commands list   * @cmdList = Commands list
  * @csPrompt = Prompt text   * @csPrompt = Prompt text
Line 78  int cliExec(cliCommands_t *cmdList, const char *csProm Line 224  int cliExec(cliCommands_t *cmdList, const char *csProm
 */  */
 int cliNetExec(cliCommands_t *cmdList, const char *csPrompt, int sock, struct termios *term, struct winsize *win);  int cliNetExec(cliCommands_t *cmdList, const char *csPrompt, int sock, struct termios *term, struct winsize *win);
   
 /*  
  * cli_ReadHistory() Read CLI History from file  
  * @csFile = history file name, if NULL default history name is ".aitcli.history"  
  * return: -1 error; != -1 readed ok  
 */  
 inline int cli_ReadHistory(const char *csFile);  
 /*  
  * cli_WriteHistory() Write CLI History to file  
  * @csFile = history file name, if NULL default history name is ".aitcli.history"  
  * @lineNum = save number of history entry lines, if -1 all lines saved without limit  
  * return: -1 error; != -1 readed ok  
 */  
 inline int cli_WriteHistory(const char *csFile, int lineNum);  
   
   /* CLI Helper functions */
   
 /*  /*
  * 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);  
   
 /*  
  * cli_Cmd_Unsupported() Builtin helper function for unsupported commands   * cli_Cmd_Unsupported() Builtin helper function for unsupported commands
  * @cmds = Commands list   * @cmds = Commands list
  * @idx = Selected command ID   * @idx = Selected command ID
Line 136  int cli_Cmd_Exit(void *cmds, int idx, FILE *out, char  Line 260  int cli_Cmd_Exit(void *cmds, int idx, FILE *out, char 
  * cli_Register_Commands - Declare helper function for register and export Commands variable   * cli_Register_Commands - Declare helper function for register and export Commands variable
 */  */
 #define CLI_REGISTER_COMMANDS(CMDS)     \  #define CLI_REGISTER_COMMANDS(CMDS)     \
        extern cliCommands_t CMDS[];        extern commands_t CMDS[];
 /*  /*
  * cli_Make_Comp_Commands - Declare helper function for Commands completion arguments   * cli_Make_Comp_Commands - Declare helper function for Commands completion arguments
 */  */
Line 163  int cli_Cmd_Exit(void *cmds, int idx, FILE *out, char  Line 287  int cli_Cmd_Exit(void *cmds, int idx, FILE *out, char 
                         return strdup(ARGS[state]); \                          return strdup(ARGS[state]); \
                 return NULL; \                  return NULL; \
         }          }
   
 /*  
  * 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);  
   
   
 #endif  #endif

Removed from v.1.2  
changed lines
  Added in v.1.2.2.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>