56 struct ast_xml_doc *
doc;
83 {
"<",
">",
COLOR_GREEN,
"<replaceable>",
"</replaceable>" },
84 {
"\'",
"\'",
COLOR_BLUE,
"<literal>",
"</literal>" },
85 {
"*",
"*",
COLOR_RED,
"<emphasis>",
"</emphasis>" },
86 {
"\"",
"\"",
COLOR_YELLOW,
"<filename>",
"</filename>" },
87 {
"\"",
"\"",
COLOR_CYAN,
"<directory>",
"</directory>" },
88 {
"${",
"}",
COLOR_GREEN,
"<variable>",
"</variable>" },
91 {
"\'",
"\'",
COLOR_GRAY,
"<astcli>",
"</astcli>" },
95 {
"",
"",
COLOR_RED,
"<warning>",
"</warning>" },
97 {
"",
"",
COLOR_GRAY,
"<exampletext>",
"</exampletext>"},
105 {
"note",
"<note>NOTE:</note> ",
"" },
106 {
"warning",
"<warning>WARNING!!!:</warning> ",
"" },
107 {
"example",
"<example>Example:</example> ",
"" },
121 int postbrreallen = 0, i;
127 postbrlen = strlen(postbr);
128 for (i = 0; i < postbrlen; i++) {
129 if (postbr[i] ==
'\t') {
130 postbrreallen += 8 - (postbrreallen % 8);
135 return postbrreallen;
149 int c, postbrlen = 0;
155 for (
c = 0;
c <
len;
c++) {
157 postbr[postbrlen++] =
text[
c];
162 postbr[postbrlen] =
'\0';
178 char *ret, postbr[160];
179 int count, i, textlen, postbrlen, lastbreak;
200 textlen = strlen(
text);
201 for (i = 0; i < textlen; i++) {
202 if (
text[i] ==
'\n') {
212 }
while (i < textlen &&
text[i] !=
'm');
214 if (
text[i] ==
' ') {
222 int back = i - lastbreak;
223 if (lastbreak && back > 0 && back < 30) {
244 char *wrapped =
NULL;
245 int i,
c,
len, colorsection;
254 bwinputlen = strlen(bwinput);
267 for (i = 0; i < bwinputlen; i++) {
370 textlen = strlen(
text);
378 for (i = 0; i < textlen; i++) {
379 if (
text[i] ==
'\n' ||
text[i] ==
'\r') {
380 if (maintain_newlines) {
384 while (
text[i + 1] ==
'\t' ||
text[i + 1] ==
'\r' ||
text[i + 1] ==
'\n') {
414 int match = attr_value && !strcmp(attr_value,
value);
438 struct ast_xml_node *first_match =
NULL;
439 struct ast_xml_node *lang_match =
NULL;
531 tmpfmtlen = strlen(tmpfmt);
532 totlen = *
len + tmpfmtlen + 1;
539 *syntax = new_syntax;
542 memmove(*syntax + tmpfmtlen, *syntax, *
len);
545 strcpy(*syntax, tmpfmt);
547 (*syntax)[tmpfmtlen] =
tmp;
548 (*syntax)[totlen - 1] =
'\0';
550 strcpy(*syntax + *
len, tmpfmt);
569 struct ast_xml_node *
node = fixnode;
590 struct ast_xml_node *
node = fixnode;
611 struct ast_xml_node *
node = fixnode;
637static char *
xmldoc_get_syntax_fun(
struct ast_xml_node *rootnode,
const char *rootname,
const char *childname,
int printparenthesis,
int printrootname)
639#define GOTONEXT(__rev, __a) (__rev ? ast_xml_node_get_prev(__a) : ast_xml_node_get_next(__a))
640#define ISLAST(__rev, __a) (__rev == 1 ? (ast_xml_node_get_prev(__a) ? 0 : 1) : (ast_xml_node_get_next(__a) ? 0 : 1))
641#define MP(__a) ((multiple ? __a : ""))
643 const char *paramtype, *multipletype, *paramnameattr, *attrargsep, *parenthesis, *argname;
644 int reverse, required, paramcount = 0, openbrackets = 0,
len = 0, hasparams=0;
645 int reqfinode = 0, reqlanode = 0, optmidnode = 0, prnparenthesis, multiple;
646 char *syntax =
NULL, *argsep, *paramname;
649 ast_log(
LOG_WARNING,
"Tried to look in XML tree with faulty rootname or childname while creating a syntax.\n");
655 if (
ast_asprintf(&syntax,
"%s%s", (printrootname ? rootname :
""), (printparenthesis ?
"()" :
"")) < 0) {
686 reqlanode = required;
691 reqfinode = required;
697 if (
ast_asprintf(&syntax,
"%s%s", (printrootname ? rootname :
""), (printparenthesis ?
"()" :
"")) < 0) {
703 if (reqfinode && reqlanode) {
709 if (
node != firstparam &&
node != lastparam) {
722 if ((!reqfinode && reqlanode) || (reqfinode && reqlanode && optmidnode)) {
733 (printrootname ? (printrootname == 2 ?
")]" :
")"):
""));
736 (printrootname ? (printrootname == 2 ?
"[(" :
"(") :
""));
749 prnparenthesis =
ast_true(parenthesis);
750 if (!strcasecmp(parenthesis,
"optional")) {
765 if (!paramnameattr) {
772 if (
ast_asprintf(&syntax,
"%s%s", (printrootname ? rootname :
""), (printparenthesis ?
"()" :
"")) < 0) {
810 while (openbrackets > 0) {
830 MP(
"["),
MP(argsep),
MP(
"...]"), argsep);
833 MP(
"["),
MP(argsep),
MP(
"...]"));
838 MP(
"["),
MP(argsep),
MP(
"...]"));
841 MP(
"["),
MP(argsep),
MP(
"...]"));
853 while (openbrackets > 0) {
861 (printrootname ? (printrootname == 2 ?
"[(" :
"(") :
""));
883 struct ast_xml_node *
node = fixnode;
885 char *enumname, *ret;
934 struct ast_xml_node *tmpnode, *
node = fixnode;
935 char *ret, *paramname;
936 const char *paramtype, *attrname, *literal;
937 int required, isenum,
first = 1, isliteral;
1010 (required ?
"" :
"["),
1011 (isenum || isliteral ?
"" :
"<"),
1013 (isenum || isliteral ?
"" :
">"),
1014 (required ?
"" :
"]"));
1040 struct ast_xml_node *
node = fixnode;
1041 const char *paramtype, *attrname;
1062 required = !strcasecmp(manager_type,
"event") ? 1 : 0;
1076 (required ?
"" :
"["),
1078 (required ?
"" :
"]"));
1091 struct ast_xml_node *matchinfo, *
tmp;
1093 const char *attr_value;
1097 if (!syntax || !fixnode) {
1128 const char *default_value;
1132 if (!syntax || !fixnode) {
1139 ast_str_set(&syntax, 0,
"%s = [%s] (Default: %s) (Regex: %s)\n",
1142 default_value ?:
"n/a",
1217 char *syntax =
NULL;
1218 struct ast_xml_node *
node = root_node;
1254 struct ast_xml_node *
node;
1309 const char *tmptext;
1310 struct ast_xml_node *
tmp;
1364 struct ast_xml_node *
node = fixnode;
1365 const char *tmptext;
1367 struct ast_str *stripped_text;
1391 if (stripped_text) {
1417 struct ast_xml_node *
node = fixnode;
1476 struct ast_xml_node *
node = fixnode;
1477 const char *argname;
1478 int count = 0, ret = 0;
1490 ast_str_append(buffer, 0,
"%s%s%s", tabs, argname, (insideparameter ?
"\n" :
""));
1523 struct ast_xml_node *
tmp;
1524 const char *valname;
1525 const char *tmptext;
1527 int ret = 0, printedpara=0;
1584 struct ast_xml_node *
tmp;
1585 const char *varname;
1612 ast_str_append(buffer, 0,
"%s<variable>%s</variable>: ", tabs, varname);
1644 const char *
typename;
1645 const char *content;
1682 if (!strcasecmp(
typename,
"application")) {
1684 }
else if (!strcasecmp(
typename,
"function")) {
1686 }
else if (!strcasecmp(
typename,
"astcli")) {
1705 struct ast_xml_node *
node;
1738 struct ast_xml_node *
node = fixnode;
1773 struct ast_xml_node *
node = fixnode;
1774 const char *enumname;
1812 struct ast_xml_node *
node;
1856 struct ast_xml_node *
node;
1857 const char *optname, *hasparams;
1875 if (hasparams && !strcasecmp(hasparams,
"optional")) {
1880 if (!optionsyntax) {
1909 const char *paramname;
1910 struct ast_xml_node *
node = fixnode;
1911 int hasarguments, printed = 0;
2002 if (!internaltabs) {
2008 ast_str_append(buffer, 0,
"%s<note>Technology: %s</note>\n", internaltabs, tech);
2020 if (internal_ret > ret) {
2046 char *retstr =
NULL;
2086 struct ast_xml_node *
node;
2119 struct ast_xml_node *
tmp;
2120 const char *notcleanret, *tmpstr;
2126 tmpstr = notcleanret;
2206 struct ast_xml_node *
node;
2220 " If this module was recently built, run 'xmldoc reload' to refresh documentation\n",
2327 goto ast_xml_doc_item_failure;
2332 goto ast_xml_doc_item_failure;
2339ast_xml_doc_item_failure:
2442 struct ast_xml_node *
event;
2443 struct ast_xml_node *responses;
2444 struct ast_xml_node *list_elements;
2455 if (!list_elements) {
2461 struct ast_xml_node *event_instance;
2471 "managerEventInstance",
NULL,
NULL);
2486 struct ast_xml_node *
node;
2522 struct ast_xml_node *responses;
2523 struct ast_xml_node *final_response_event;
2524 struct ast_xml_node *event_instance;
2534 if (!final_response_event) {
2539 "managerEventInstance",
NULL,
NULL);
2540 if (!event_instance) {
2556 struct ast_xml_node *
node;
2576struct ast_xml_xpath_results *__attribute__((format(printf, 1, 2)))
ast_xmldoc_query(const
char *fmt, ...)
2578 struct ast_xml_xpath_results *results =
NULL;
2609 struct ast_xml_node *iter;
2613 const char *iter_name;
2775#if !defined(HAVE_GLOB_NOMAGIC) || !defined(HAVE_GLOB_BRACE) || defined(DEBUG_NONGNU)
2776static int xml_pathmatch(
char *xmlpattern,
int xmlpattern_maxlen, glob_t *globbuf)
2780 snprintf(xmlpattern, xmlpattern_maxlen,
"%s/documentation/thirdparty/*-%s.xml",
2782 if((globret = glob(xmlpattern, GLOB_NOCHECK,
NULL, globbuf))) {
2786 snprintf(xmlpattern, xmlpattern_maxlen,
"%s/documentation/thirdparty/*-%.2s_??.xml",
2788 if((globret = glob(xmlpattern, GLOB_APPEND | GLOB_NOCHECK,
NULL, globbuf))) {
2792 snprintf(xmlpattern, xmlpattern_maxlen,
"%s/documentation/thirdparty/*-%s.xml",
2794 if((globret = glob(xmlpattern, GLOB_APPEND | GLOB_NOCHECK,
NULL, globbuf))) {
2798 snprintf(xmlpattern, xmlpattern_maxlen,
"%s/documentation/*-%s.xml",
2800 if((globret = glob(xmlpattern, GLOB_APPEND | GLOB_NOCHECK,
NULL, globbuf))) {
2804 snprintf(xmlpattern, xmlpattern_maxlen,
"%s/documentation/*-%.2s_??.xml",
2806 if((globret = glob(xmlpattern, GLOB_APPEND | GLOB_NOCHECK,
NULL, globbuf))) {
2810 snprintf(xmlpattern, xmlpattern_maxlen,
"%s/documentation/*-%s.xml",
2812 globret = glob(xmlpattern, GLOB_APPEND | GLOB_NOCHECK,
NULL, globbuf);
2821 struct ast_xml_doc *dumpdoc;
2822 struct ast_xml_node *dumproot;
2829 "Usage: xmldoc dump <filename>\n"
2830 " Dump XML documentation to a file\n";
2859 struct ast_xml_node *kids_copy;
2877 if (!(f = fopen(
a->argv[2],
"w"))) {
2922 struct ast_xml_node *root_node;
2923 struct ast_xml_doc *tmpdoc;
2929 int globret, i, dup, duplicate;
2931#if !defined(HAVE_GLOB_NOMAGIC) || !defined(HAVE_GLOB_BRACE) || defined(DEBUG_NONGNU)
2932 int xmlpattern_maxlen;
2940 if (!strcasecmp(
var->name,
"documentation_language")) {
2958 globbuf.gl_offs = 0;
2960#if !defined(HAVE_GLOB_NOMAGIC) || !defined(HAVE_GLOB_BRACE) || defined(DEBUG_NONGNU)
2961 xmlpattern_maxlen = strlen(
ast_config_AST_DATA_DIR) + strlen(
"/documentation/thirdparty") + strlen(
"/*-??_??.xml") + 1;
2963 globret = xml_pathmatch(xmlpattern, xmlpattern_maxlen, &globbuf);
2973 ast_debug(3,
"gl_pathc %zu\n", (
size_t)globbuf.gl_pathc);
2974 if (globret == GLOB_NOSPACE) {
2975 ast_log(
LOG_WARNING,
"XML load failure, glob expansion of pattern '%s' failed: Not enough memory\n", xmlpattern);
2979 ast_log(
LOG_WARNING,
"XML load failure, glob expansion of pattern '%s' failed: Read error\n", xmlpattern);
2997 for (i = 0; i < globbuf.gl_pathc; i++) {
3000 for (dup = 0; dup < i; dup++) {
3001 if (!strcmp(globbuf.gl_pathv[i], globbuf.gl_pathv[dup])) {
3006 if (duplicate || strchr(globbuf.gl_pathv[i],
'*')) {
3014 ast_log(
LOG_ERROR,
"Could not open XML documentation at '%s'\n", globbuf.gl_pathv[i]);
3036 doc_tree->
doc = tmpdoc;
3063 "Usage: xmldoc reload\n"
3064 " Reload XML documentation\n";
Prototypes for public functions only of internal interest,.
struct sla_ringing_trunk * first
Asterisk main include file. File version handling, generic pbx functions.
int ast_register_cleanup(void(*func)(void))
Register a function to be executed before Asterisk gracefully exits.
#define ast_realloc(p, len)
A wrapper for realloc()
#define ast_strdup(str)
A wrapper for strdup()
#define ast_strdupa(s)
duplicate a string in memory from the stack
#define ast_vasprintf(ret, fmt, ap)
A wrapper for vasprintf()
#define ast_asprintf(ret, fmt,...)
A wrapper for asprintf()
#define ast_calloc(num, len)
A wrapper for calloc()
#define ast_malloc(len)
A wrapper for malloc()
#define ao2_t_ref(o, delta, tag)
#define ao2_link(container, obj)
Add an object to a container.
@ AO2_ALLOC_OPT_LOCK_NOLOCK
@ AO2_ALLOC_OPT_LOCK_MUTEX
#define ao2_ref(o, delta)
Reference/unreference an object and return the old refcount.
#define ao2_alloc_options(data_size, destructor_fn, options)
#define ao2_container_alloc_hash(ao2_options, container_options, n_buckets, hash_fn, sort_fn, cmp_fn)
Allocate and initialize a hash container with the desired number of buckets.
static int match(struct ast_sockaddr *addr, unsigned short callno, unsigned short dcallno, const struct chan_iax2_pvt *cur, int check_dcallno)
static char language[MAX_LANGUAGE]
Standard Command Line Interface.
int ast_cli_unregister(struct ast_cli_entry *e)
Unregisters a command or an array of commands.
#define ast_cli_register(e)
Registers a command or an array of commands.
#define AST_CLI_DEFINE(fn, txt,...)
static int regex(struct ast_channel *chan, const char *cmd, char *parse, char *buf, size_t len)
static int len(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t buflen)
char * strcasestr(const char *, const char *)
Configuration File Parser.
struct ast_config * ast_config_load2(const char *filename, const char *who_asked, struct ast_flags flags)
Load a config file.
#define CONFIG_STATUS_FILEINVALID
void ast_config_destroy(struct ast_config *cfg)
Destroys a config.
struct ast_variable * ast_variable_browse(const struct ast_config *config, const char *category_name)
#define ast_debug(level,...)
Log a DEBUG message.
A set of macros to manage forward-linked lists.
#define AST_RWLIST_RDLOCK(head)
Read locks a list.
#define AST_RWLIST_WRLOCK(head)
Write locks a list.
#define AST_RWLIST_UNLOCK(head)
Attempts to unlock a read/write based list.
#define AST_LIST_TRAVERSE(head, var, field)
Loops over (traverses) the entries in a list.
#define AST_RWLIST_HEAD_STATIC(name, type)
Defines a structure to be used to hold a read/write list of specified type, statically initialized.
#define AST_RWLIST_REMOVE_HEAD
#define AST_LIST_INSERT_TAIL(head, elm, field)
Appends a list entry to the tail of a list.
#define AST_LIST_HEAD_INIT(head)
Initializes a list head structure.
#define AST_RWLIST_INSERT_TAIL
#define AST_LIST_FIRST(head)
Returns the first entry contained in a list.
#define AST_LIST_NEXT(elm, field)
Returns the next entry in the list after the given entry.
#define ast_opt_light_background
Asterisk file paths, configured in asterisk.conf.
const char * ast_config_AST_DATA_DIR
#define ast_string_field_set(x, field, data)
Set a field to a simple string value.
#define ast_string_field_init(x, size)
Initialize a field pool and fields.
#define ast_string_field_free_memory(x)
free all memory - to be called before destroying the object
@ AST_DYNSTR_BUILD_FAILED
char * ast_str_truncate(struct ast_str *buf, ssize_t len)
Truncates the enclosed string to the given length.
int ast_str_append(struct ast_str **buf, ssize_t max_len, const char *fmt,...)
Append to a thread local dynamic string.
char * ast_str_buffer(const struct ast_str *buf)
Returns the string buffer within the ast_str buf.
int ast_str_set_va(struct ast_str **buf, ssize_t max_len, const char *fmt, va_list ap)
Set a dynamic string from a va_list.
#define S_OR(a, b)
returns the equivalent of logic or for strings: first one if not empty, otherwise second one.
int attribute_pure ast_true(const char *val)
Make sure something is true. Determine if a string containing a boolean value is "true"....
static force_inline int attribute_pure ast_strlen_zero(const char *s)
void ast_str_trim_blanks(struct ast_str *buf)
Trims trailing whitespace characters from an ast_str string.
#define ast_str_create(init_len)
Create a malloc'ed dynamic length string.
int ast_str_set(struct ast_str **buf, ssize_t max_len, const char *fmt,...)
Set a dynamic string using variable arguments.
size_t ast_str_strlen(const struct ast_str *buf)
Returns the current length of the string stored within buf.
static force_inline int attribute_pure ast_str_case_hash(const char *str)
Compute a hash value on a case-insensitive string.
void ast_copy_string(char *dst, const char *src, size_t size)
Size-limited null-terminating string copy.
char * ast_skip_blanks(const char *str)
Gets a pointer to the first non-whitespace character in a string.
descriptor for a cli entry.
Structure used to handle boolean flags.
Support for dynamic strings.
Structure for variables, used for configurations and for channel variables.
The struct to be used as the head of an ast_xml_doc_item list when being manipulated.
Struct that contains the XML documentation for a particular item. Note that this is an ao2 ref counte...
struct ast_xml_node * node
const ast_string_field ref
struct ast_xml_doc_item * next
struct ast_str * arguments
struct ast_str * description
const ast_string_field name
struct ast_str * synopsis
Mapping between type of node and type of syntax to generate.
Container of documentation trees.
Handy terminal functions for vt* terms.
int ast_term_color_code(struct ast_str **str, int fgcolor, int bgcolor)
Append a color sequence to an ast_str.
const char * ast_term_reset(void)
Returns the terminal reset code.
static struct aco_type item
#define RAII_VAR(vartype, varname, initval, dtor)
Declare a variable that will call a destructor function when it goes out of scope.
struct ast_xml_node * ast_xml_copy_node_list(struct ast_xml_node *list)
Create a copy of a n ode list.
struct ast_xml_node * ast_xml_node_get_children(struct ast_xml_node *node)
Get the node's children.
const char * ast_xml_get_attribute(struct ast_xml_node *node, const char *attrname)
Get a node attribute by name.
const char * ast_xml_get_text(struct ast_xml_node *node)
Get an element content string.
struct ast_xml_node * ast_xml_new_node(const char *name)
Create a XML node.
void ast_xml_close(struct ast_xml_doc *doc)
Close an already open document and free the used structure.
const char * ast_xml_node_get_name(struct ast_xml_node *node)
Get the name of a node.
int ast_xml_finish(void)
Cleanup library allocated global data.
void ast_xml_free_attr(const char *attribute)
Free an attribute returned by ast_xml_get_attribute()
int ast_xml_doc_dump_file(FILE *output, struct ast_xml_doc *doc)
Dump the specified document to a file.
struct ast_xml_node * ast_xml_node_get_next(struct ast_xml_node *node)
Get the next node in the same level.
struct ast_xml_xpath_results * ast_xml_query(struct ast_xml_doc *doc, const char *xpath_str)
Execute an XPath query on an XML document.
struct ast_xml_doc * ast_xml_new(void)
Create a XML document.
struct ast_xml_node * ast_xml_add_child_list(struct ast_xml_node *parent, struct ast_xml_node *child)
Add a list of child nodes, to a specified parent node.
void ast_xml_free_text(const char *text)
Free a content element that was returned by ast_xml_get_text()
int ast_xml_init(void)
Initialize the XML library implementation. This function is used to setup everything needed to start ...
void ast_xml_set_root(struct ast_xml_doc *doc, struct ast_xml_node *node)
Specify the root node of a XML document.
struct ast_xml_node * ast_xml_find_element(struct ast_xml_node *root_node, const char *name, const char *attrname, const char *attrvalue)
Find a node element by name.
struct ast_xml_doc * ast_xml_open(char *filename)
Open an XML document.
struct ast_xml_node * ast_xml_get_root(struct ast_xml_doc *doc)
Get the document root node.
struct ast_xml_xpath_results * ast_xmldoc_query(const char *fmt,...)
Execute an XPath query on the loaded XML documentation.
static int xmldoc_has_nodes(struct ast_xml_node *fixnode)
static int xmldoc_parse_enum(struct ast_xml_node *fixnode, const char *tabs, struct ast_str **buffer)
static int ast_xml_doc_item_cmp(void *obj, void *arg, int flags)
static void xmldoc_string_cleanup(const char *text, struct ast_str **output, int lastspaces, int maintain_newlines)
struct ast_xml_doc_item * ast_xmldoc_build_list_responses(const char *type, const char *name, const char *module)
Generate the [list responses] tag based on type of node ('application', 'function' or 'agi') and name...
static char documentation_language[6]
XML documentation language.
static struct ast_xml_doc_item * xmldoc_build_list_responses(struct ast_xml_node *manager_action)
static void ast_xml_doc_item_destructor(void *obj)
char * ast_xmldoc_build_description(const char *type, const char *name, const char *module)
Generate description documentation from XML.
static void xmldoc_parse_optionlist(struct ast_xml_node *fixnode, const char *tabs, struct ast_str **buffer)
static char * _ast_xmldoc_build_syntax(struct ast_xml_node *root_node, const char *type, const char *name)
static char * handle_dump_docs(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static int xmldoc_parse_option(struct ast_xml_node *fixnode, const char *tabs, struct ast_str **buffer)
static char * _xmldoc_build_field(struct ast_xml_node *node, const char *var, int raw)
static int xmldoc_parse_variable(struct ast_xml_node *node, const char *tabs, struct ast_str **buffer)
static void xmldoc_setpostbr(char *postbr, size_t len, const char *text)
static int xmldoc_parse_example(struct ast_xml_node *fixnode, struct ast_str **buffer)
static struct ast_xml_doc_item * xmldoc_build_documentation_item(struct ast_xml_node *node, const char *name, const char *type)
char * ast_xmldoc_build_syntax(const char *type, const char *name, const char *module)
Get the syntax for a specified application or function.
static void xmldoc_purge_documentation(void)
static int xmldoc_parse_info(struct ast_xml_node *node, const char *tabs, const char *posttabs, struct ast_str **buffer)
static int xmldoc_parse_specialtags(struct ast_xml_node *fixnode, const char *tabs, const char *posttabs, struct ast_str **buffer)
static int ast_xml_doc_item_hash(const void *obj, const int flags)
char * ast_xmldoc_build_arguments(const char *type, const char *name, const char *module)
Generate the [arguments] tag based on type of node ('application', 'function' or 'agi') and name.
char * ast_xmldoc_build_synopsis(const char *type, const char *name, const char *module)
Generate synopsis documentation from XML.
static char * xmldoc_get_syntax_config_object(struct ast_xml_node *fixnode, const char *name)
syntaxtype
Types of syntax that we are able to generate.
static const char default_documentation_language[]
Default documentation language.
static enum syntaxtype xmldoc_get_syntax_type(const char *type)
static int xmldoc_load_documentation(int first_time)
static char * xmldoc_parse_cmd_enumlist(struct ast_xml_node *fixnode)
static char * handle_reload_docs(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static int xmldoc_reload_documentation(void)
static struct ast_cli_entry cli_dump_xmldocs
static char * xmldoc_get_syntax_cmd(struct ast_xml_node *fixnode, const char *name, int printname)
struct ao2_container * ast_xmldoc_build_documentation(const char *type)
Build the documentation for a particular source type.
static void xmldoc_parse_parameter(struct ast_xml_node *fixnode, const char *tabs, struct ast_str **buffer)
static struct ast_xml_doc_item * ast_xml_doc_item_alloc(const char *name, const char *type)
static const struct strspecial_tags special_tags[]
static const struct strcolorized_tags colorized_tags[]
static struct ast_str * xmldoc_get_formatted(struct ast_xml_node *node, int raw_output, int raw_wrap)
int ast_xmldoc_load_documentation(void)
Load XML documentation. Provided by xmldoc.c.
static int xmldoc_has_specialtags(struct ast_xml_node *fixnode)
static int xmldoc_parse_variablelist(struct ast_xml_node *node, const char *tabs, struct ast_str **buffer)
static int xmldoc_parse_argument(struct ast_xml_node *fixnode, int insideparameter, const char *paramtabs, const char *tabs, struct ast_str **buffer)
static int xmldoc_postbrlen(const char *postbr)
static void xmldoc_reverse_helper(int reverse, int *len, char **syntax, const char *fmt,...)
static char * xmldoc_get_syntax_config_option(struct ast_xml_node *fixnode, const char *name)
static char * xmldoc_get_syntax_manager(struct ast_xml_node *fixnode, const char *name, const char *manager_type)
static struct ast_cli_entry cli_reload_xmldocs
static char * xmldoc_string_wrap(const char *text, int columns)
static const int xmldoc_text_columns
Number of columns to print when showing the XML documentation with a 'core show application/function ...
char * ast_xmldoc_build_seealso(const char *type, const char *name, const char *module)
Parse the <see-also> node content.
static char * xmldoc_build_field(const char *type, const char *name, const char *module, const char *var, int raw)
static int xmldoc_has_inside(struct ast_xml_node *fixnode, const char *what)
static void build_config_docs(struct ast_xml_node *cur, struct ast_xml_doc_item_list *root)
static char * xmldoc_get_syntax_fun(struct ast_xml_node *rootnode, const char *rootname, const char *childname, int printparenthesis, int printrootname)
#define GOTONEXT(__rev, __a)
static int xmldoc_parse_common_elements(struct ast_xml_node *node, const char *tabs, const char *posttabs, struct ast_str **buffer)
static void xmldoc_unload_documentation(void)
Close and unload XML documentation.
char * ast_xmldoc_printable(const char *bwinput, int withcolors)
Colorize and put delimiters (instead of tags) to the xmldoc output.
static char * _ast_xmldoc_build_seealso(struct ast_xml_node *node)
static struct strsyntaxtype stxtype[]
static char * _ast_xmldoc_build_arguments(struct ast_xml_node *node)
static int xmldoc_parse_para(struct ast_xml_node *node, const char *tabs, const char *posttabs, struct ast_str **buffer)
static int xmldoc_attribute_match(struct ast_xml_node *node, const char *attr, const char *value)
static int xmldoc_parse_enumlist(struct ast_xml_node *fixnode, const char *tabs, struct ast_str **buffer)
struct ast_xml_doc_item * ast_xmldoc_build_final_response(const char *type, const char *name, const char *module)
Generate the [final response] tag based on type of node ('application', 'function' or 'agi') and name...
int ast_xmldoc_regenerate_doc_item(struct ast_xml_doc_item *item)
Regenerate the documentation for a particular item.
static struct ast_xml_node * xmldoc_get_node(const char *type, const char *name, const char *module, const char *language)
static char * _ast_xmldoc_build_synopsis(struct ast_xml_node *node)
#define ISLAST(__rev, __a)
static struct ast_xml_doc_item * xmldoc_build_final_response(struct ast_xml_node *manager_action)
static char * _ast_xmldoc_build_description(struct ast_xml_node *node)
Asterisk XML Documentation API.