Diff for /libaitcli/inc/aitcli.h between versions 1.5.4.2 and 1.14

version 1.5.4.2, 2013/05/26 20:36:41 version 1.14, 2025/12/17 23:30:11
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013Copyright 2004 - 2024
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 195  typedef TAILQ_HEAD(tqHistoryHead, tagHistory) history_ Line 195  typedef TAILQ_HEAD(tqHistoryHead, tagHistory) history_
   
 /* Bind keys structure types */  /* Bind keys structure types */
   
typedef int (*bindkey_func_t)(int idx, /*linebuffer_t **/ void * __restrict buffer);typedef int (*bindkey_func_t)(int idx, /* linebuffer_t * */ void * __restrict cli_buffer);
 typedef struct {  typedef struct {
         int             key_len;          int             key_len;
         unsigned char   key_ch[8];          unsigned char   key_ch[8];
Line 205  typedef struct { Line 205  typedef struct {
   
 /* Commands structure for CLI */  /* Commands structure for CLI */
   
typedef int (*cmd_func_t)(/*linebuffer_t **/ void * __restrict buffer, int idx, char ** __restrict args);#define CLI_CMD_DEFINE(x)       int (x)(void *, int, char **)
 typedef int (*cmd_func_t)(/*linebuffer_t **/ void * __restrict cli_buffer, int idx, 
                 char ** __restrict args);
 struct tagCommand {  struct tagCommand {
         int                     cmd_level;          int                     cmd_level;
   
Line 225  typedef SLIST_HEAD(slCommandHead, tagCommand) commands Line 227  typedef SLIST_HEAD(slCommandHead, tagCommand) commands
 /* Main structure, Buffer for CLI work with thread models ;-) special designed by M.Punov */  /* Main structure, Buffer for CLI work with thread models ;-) special designed by M.Punov */
   
 typedef struct {  typedef struct {
           int                     line_kill;
         char                    line_mode;          char                    line_mode;
   
           char                    line_porigin[STRSIZ];
         char                    *line_prompt;          char                    *line_prompt;
   
         int                     line_bol;          int                     line_bol;
Line 246  typedef struct { Line 250  typedef struct {
         int                     line_out;          int                     line_out;
 } linebuffer_t;  } linebuffer_t;
   
   #ifdef __cplusplus
   extern "C" {
   #endif
   
 /* Error support functions */  /* Error support functions */
   
Line 341  unsigned int cli_telnet_GetCmd(struct telnetAttrs *att Line 348  unsigned int cli_telnet_GetCmd(struct telnetAttrs *att
  *   *
  * @attr = input attribute   * @attr = input attribute
  * @cmd = command   * @cmd = command
 * @opt = option, if 0xff not specified * @optz = option, if 0xff not specified
  * @arg1 = sub-option code, if 0xff not specified   * @arg1 = sub-option code, if 0xff not specified
  * @arg2 = sub-option data, if NULL not specified   * @arg2 = sub-option data, if NULL not specified
  * @arg3 = sub-option data size, if 0 not specified data   * @arg3 = sub-option data size, if 0 not specified data
  * return: -1 can`t set command; !=-1 ok   * return: -1 can`t set command; !=-1 ok
 */  */
int cli_telnet_SetCmd(struct telnetAttrs *attr, unsigned char cmd, unsigned char opt, ...);int cli_telnet_SetCmd(struct telnetAttrs *attr, unsigned char cmd, int optz, ...);
   
 /*  /*
  * cli_telnet_Answer() - Automatic generate commands answer to send from telnet   * cli_telnet_Answer() - Automatic generate commands answer to send from telnet
Line 377  int cli_telnet_Answer(unsigned char *caps, int nCaps,  Line 384  int cli_telnet_Answer(unsigned char *caps, int nCaps, 
 /*  /*
  * cli_Cmd_Unsupported() - Builtin helper function for unsupported commands   * cli_Cmd_Unsupported() - Builtin helper function for unsupported commands
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
 * @idx = Selected command ID * @idx = Config level
  * @args = Parsed arguments array   * @args = Parsed arguments array
  * return: RETCODE_OK ok   * return: RETCODE_OK ok
 */  */
int cli_Cmd_Unsupported(void * __restrict buffer, int idx, char ** __restrict args);int cli_Cmd_Unsupported(void * __restrict cli_buffer, int idx, char ** __restrict args);
   
   
 /* CLI Functions */  /* CLI Functions */
Line 391  int cli_Cmd_Unsupported(void * __restrict buffer, int  Line 398  int cli_Cmd_Unsupported(void * __restrict buffer, int 
  * cli_BindKey() - Bind function to key   * cli_BindKey() - Bind function to key
  *   *
  * @key = key structure   * @key = key structure
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
  * return: RETCODE_ERR error, RETCODE_OK ok, >0 bind at position   * return: RETCODE_ERR error, RETCODE_OK ok, >0 bind at position
 */  */
int cli_BindKey(bindkey_t * __restrict key, linebuffer_t * __restrict buffer);int cli_BindKey(bindkey_t * __restrict key, linebuffer_t * __restrict cli_buffer);
   
   
 /*  /*
  * cli_addCommand() - Add command to CLI session   * cli_addCommand() - Add command to CLI session
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
  * @csCmd = Command name   * @csCmd = Command name
 * @cliLevel = Level in CLI, -1 unprivi(view from all), 0 main config, 1 sub config ... * @cliLevel = Level in CLI, -1 view from all levels, 0 hidden, >0 mask levels
  * @funcCmd = Callback function when user call command   * @funcCmd = Callback function when user call command
  * @csInfo = Inline information for command   * @csInfo = Inline information for command
  * @csHelp = Help line when call help   * @csHelp = Help line when call help
  * return: RETCODE_ERR error, RETCODE_OK ok   * return: RETCODE_ERR error, RETCODE_OK ok
 */  */
 int  int
cli_addCommand(linebuffer_t * __restrict buffer, const char *csCmd, int cliLevel, cmd_func_t funcCmd, cli_addCommand(linebuffer_t * __restrict cli_buffer, const char *csCmd, 
                 int cliLevel, cmd_func_t funcCmd, 
                 const char *csInfo, const char *csHelp);                  const char *csInfo, const char *csHelp);
 /*  /*
  * cli_delCommand() - Delete command from CLI session   * cli_delCommand() - Delete command from CLI session
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
  * @csCmd = Command name   * @csCmd = Command name
 * @cliLevel = Level in CLI, -1 unprivi(view from all), 0 main config, 1 sub config ... * @cliLevel = Level in CLI, -1 view from all levels, 0 hidden, >0 mask levels
  * return: RETCODE_ERR error, RETCODE_OK ok   * return: RETCODE_ERR error, RETCODE_OK ok
 */  */
 int  int
cli_delCommand(linebuffer_t * __restrict buffer, const char *csCmd, int cliLevel);cli_delCommand(linebuffer_t * __restrict cli_buffer, const char *csCmd, int cliLevel);
 /*  /*
  * cli_updCommand() - Update command in CLI session   * cli_updCommand() - Update command in CLI session
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
  * @csCmd = Command name   * @csCmd = Command name
 * @cliLevel = Level in CLI, -1 unprivi(view from all), 0 main config, 1 sub config ... * @cliLevel = Level in CLI, -1 view from all levels, 0 hidden, >0 mask levels
  * @funcCmd = Callback function when user call command   * @funcCmd = Callback function when user call command
  * @csInfo = Inline information for command   * @csInfo = Inline information for command
  * @csHelp = Help line when call help   * @csHelp = Help line when call help
  * return: RETCODE_ERR error, RETCODE_OK ok   * return: RETCODE_ERR error, RETCODE_OK ok
 */  */
 int  int
cli_updCommand(linebuffer_t * __restrict buffer, const char *csCmd, int cliLevel, cmd_func_t funcCmd, cli_updCommand(linebuffer_t * __restrict cli_buffer, const char *csCmd, 
                 int cliLevel, cmd_func_t funcCmd, 
                 const char *csInfo, const char *csHelp);                  const char *csInfo, const char *csHelp);
   
   
 /*  /*
  * cli_addHistory() - Add line to history   * cli_addHistory() - Add line to history
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
  * @str = Add custom text or if NULL use readed line from CLI buffer   * @str = Add custom text or if NULL use readed line from CLI buffer
  * return: RETCODE_ERR error, RETCODE_OK ok   * return: RETCODE_ERR error, RETCODE_OK ok
 */  */
int cli_addHistory(linebuffer_t * __restrict buffer, const char * __restrict str);int cli_addHistory(linebuffer_t * __restrict cli_buffer, const char * __restrict str);
 /*  /*
  * cli_saveHistory() - Save history to file   * cli_saveHistory() - Save history to file
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
  * @histfile = History filename, if NULL will be use default name   * @histfile = History filename, if NULL will be use default name
  * @lines = Maximum history lines to save   * @lines = Maximum history lines to save
  * return: RETCODE_ERR error, RETCODE_OK ok   * return: RETCODE_ERR error, RETCODE_OK ok
 */  */
int cli_saveHistory(linebuffer_t * __restrict buffer, const char *histfile, int lines);int cli_saveHistory(linebuffer_t * __restrict cli_buffer, const char *histfile, int lines);
 /*  /*
  * cli_loadHistory() - Load history from file   * cli_loadHistory() - Load history from file
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
  * @histfile = History filename, if NULL will be use default name   * @histfile = History filename, if NULL will be use default name
  * return: RETCODE_ERR error, RETCODE_OK ok   * return: RETCODE_ERR error, RETCODE_OK ok
 */  */
int cli_loadHistory(linebuffer_t * __restrict buffer, const char *histfile);int cli_loadHistory(linebuffer_t * __restrict cli_buffer, const char *histfile);
 /*  /*
  * cli_resetHistory() - Reset history search in CLI session   * cli_resetHistory() - Reset history search in CLI session
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
  * return: none   * return: none
 */  */
void cli_resetHistory(linebuffer_t * __restrict buffer);void cli_resetHistory(linebuffer_t * __restrict cli_buffer);
   
 /*  /*
  * cli_freeLine() - Clear entire line   * cli_freeLine() - Clear entire line
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
  * return: RETCODE_ERR error, RETCODE_OK ok   * return: RETCODE_ERR error, RETCODE_OK ok
 */  */
int cli_freeLine(linebuffer_t * __restrict buffer);int cli_freeLine(linebuffer_t * __restrict cli_buffer);
 /*  /*
  * cli_setPrompt() - Set new prompt for CLI session   * cli_setPrompt() - Set new prompt for CLI session
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
  * @prompt = new text for prompt or if NULL disable prompt   * @prompt = new text for prompt or if NULL disable prompt
  * return: none   * return: none
 */  */
void cli_setPrompt(linebuffer_t * __restrict buffer, const char *prompt);void cli_setPrompt(linebuffer_t * __restrict cli_buffer, const char *prompt);
 /*  /*
  * cli_Printf() - Send message to CLI session   * cli_Printf() - Send message to CLI session
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
  * @fmt = printf format string   * @fmt = printf format string
  * @... = arguments defined in fmt   * @... = arguments defined in fmt
  * return: none   * return: none
 */  */
void cli_Printf(linebuffer_t * __restrict buffer, char *fmt, ...);void cli_Printf(linebuffer_t * __restrict cli_buffer, char *fmt, ...);
 /*  /*
  * cli_PrintHelp() - Print help screen   * cli_PrintHelp() - Print help screen
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
  * return: none   * return: none
 */  */
void cli_PrintHelp(linebuffer_t * __restrict buffer);void cli_PrintHelp(linebuffer_t * __restrict cli_buffer);
   
 /*  /*
  * cliEnd() - Clear data, Free resources and close CLI session   * cliEnd() - Clear data, Free resources and close CLI session
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
  * return: RETCODE_ERR error, RETCODE_OK ok   * return: RETCODE_ERR error, RETCODE_OK ok
 */  */
void cliEnd(linebuffer_t * __restrict buffer);void cliEnd(linebuffer_t * __restrict cli_buffer);
 /*  /*
  * cliInit() - Start CLI session, allocate memory for resources and bind keys   * cliInit() - Start CLI session, allocate memory for resources and bind keys
  *   *
Line 520  void cliEnd(linebuffer_t * __restrict buffer); Line 529  void cliEnd(linebuffer_t * __restrict buffer);
 linebuffer_t *cliInit(int fin, int fout, const char *prompt);  linebuffer_t *cliInit(int fin, int fout, const char *prompt);
   
 /*  /*
 * cliInitLine() - Init CLI input line terminal * cliSetLine() - Set CLI input line terminal
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
 * return: none * @old = Old terminal settings
  * return: -1 error or 0 ok
 */  */
int cliInitLine(linebuffer_t * __restrict buffer);int cliSetLine(linebuffer_t * __restrict cli_buffer, struct termios * __restrict old);
 /*  /*
    * cliResetLine() - Reset CLI input line terminal
    *
    * @cli_buffer = CLI buffer
    * @old = Original terminal settings
    * return: -1 error or 0 ok
   */
   int cliResetLine(linebuffer_t * __restrict cli_buffer, struct termios * __restrict orig);
   /*
  * cliReadLine() - Read line from opened CLI session   * cliReadLine() - Read line from opened CLI session
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
  * @timeout = Session timeout (-1 infinit)
  * return: NULL if error or !=NULL readed line, must be e_free after use!   * return: NULL if error or !=NULL readed line, must be e_free after use!
 */  */
char *cliReadLine(linebuffer_t * __restrict buffer);char *cliReadLine(linebuffer_t * __restrict cli_buffer, int timeout);
   
 /*  /*
    * cliRun() - CLI run command line
    *
    * @cli_buffer = CLI buffer
    * @psInput = Input command line
    * @prompt = Display prompt after command
    * return: RETCODE_ERR error, RETCODE_OK ok
   */
   int cliRun(linebuffer_t * __restrict cli_buffer, char *psInput, int prompt);
   
   /*
  * cliLoop() - CLI main loop   * cliLoop() - CLI main loop
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
  * @csHistFile = History file name   * @csHistFile = History file name
    * @timeout = Session timeout (-1 infinit)
  * return: RETCODE_ERR error, RETCODE_OK ok   * return: RETCODE_ERR error, RETCODE_OK ok
 */  */
int cliLoop(linebuffer_t * __restrict buffer, const char *csHistFile);int cliLoop(linebuffer_t * __restrict cli_buffer, const char *csHistFile, int timeout);
 /*  /*
  * cliNetLoop() - CLI network main loop binded to socket   * cliNetLoop() - CLI network main loop binded to socket
  *   *
 * @buffer = CLI buffer * @cli_buffer = CLI buffer
  * @csHistFile = History file name   * @csHistFile = History file name
  * @sock = client socket   * @sock = client socket
 * @term = stdin termios * @timeout = Session timeout (-1 infinit)
 * @win = window size of tty 
  * return: RETCODE_ERR error, RETCODE_OK ok   * return: RETCODE_ERR error, RETCODE_OK ok
 */  */
int cliNetLoop(linebuffer_t * __restrict buffer, const char *csHistFile, int sock);int cliNetLoop(linebuffer_t * __restrict cli_buffer, const char *csHistFile, 
                 int sock, int timeout);
 #define cliKillLoop(_x) (assert((_x)), (_x)->line_kill = 1)
   
   #ifdef __cplusplus
   }
   #endif
   
 #endif  #endif

Removed from v.1.5.4.2  
changed lines
  Added in v.1.14


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