Repair // comments to /* */ comments (bug #3347)
[asterisk/asterisk.git] / include / asterisk / cli.h
1 /*
2  * Asterisk -- A telephony toolkit for Linux.
3  *
4  * Standard Command Line Interface
5  * 
6  * Copyright (C) 1999, Mark Spencer
7  *
8  * Mark Spencer <markster@linux-support.net>
9  *
10  * This program is free software, distributed under the terms of
11  * the GNU General Public License
12  */
13
14 #ifndef _ASTERISK_CLI_H
15 #define _ASTERISK_CLI_H
16
17 #if defined(__cplusplus) || defined(c_plusplus)
18 extern "C" {
19 #endif
20
21 #include <stdarg.h>
22
23 extern void ast_cli(int fd, char *fmt, ...)
24         __attribute__ ((format (printf, 2, 3)));
25
26 #define RESULT_SUCCESS          0
27 #define RESULT_SHOWUSAGE        1
28 #define RESULT_FAILURE          2
29
30 #define AST_MAX_CMD_LEN         16
31
32 #define AST_MAX_ARGS 64
33
34 #define AST_CLI_COMPLETE_EOF    "_EOF_"
35
36 /*! A command line entry */ 
37 struct ast_cli_entry {
38         /*! Null terminated list of the words of the command */
39         char *cmda[AST_MAX_CMD_LEN];
40         /*! Handler for the command (fd for output, # of arguments, argument list).  Returns RESULT_SHOWUSAGE for improper arguments */
41         int (*handler)(int fd, int argc, char *argv[]);
42         /*! Summary of the command (< 60 characters) */
43         char *summary;
44         /*! Detailed usage information */
45         char *usage;
46         /*! Generate a list of possible completions for a given word */
47         char *(*generator)(char *line, char *word, int pos, int state);
48         /*! For linking */
49         struct ast_cli_entry *next;
50         /*! For keeping track of usage */
51         int inuse;
52 };
53
54 /*! Interprets a command */
55 /*! Interpret a command s, sending output to fd
56  * Returns 0 on succes, -1 on failure 
57  */
58 extern int ast_cli_command(int fd, char *s);
59
60 /*! Registers a command */
61 /*! 
62  * \param fd File descriptor that I/O is done to
63  * \param s string given at prompt
64  * Register your own command
65  * Returns 0 on success, -1 on failure
66  */
67 extern int ast_cli_register(struct ast_cli_entry *e);
68
69 /*! Unregisters a command */
70 /*!
71  * \param e which cli entry to unregister
72  * Unregister your own command.  You must pass a completed ast_cli_entry structur
73  * Returns 0 on success, -1 on failure
74  */
75 extern int ast_cli_unregister(struct ast_cli_entry *e);
76
77 /*! Readline madness */
78 /* Useful for readline, that's about it
79  * Returns 0 on success, -1 on failure
80  */
81 extern char *ast_cli_generator(char *, char *, int);
82
83 extern int ast_cli_generatornummatches(char *, char *);
84 extern char **ast_cli_completion_matches(char *, char *);
85
86 #if defined(__cplusplus) || defined(c_plusplus)
87 }
88 #endif
89
90 #endif