Asterisk - The Open Source Telephony Project GIT-master-97770a9
Data Structures | Functions
pbx_include.c File Reference

Dialplan context include routines. More...

#include "asterisk.h"
#include "asterisk/_private.h"
#include "asterisk/pbx.h"
#include "pbx_private.h"
Include dependency graph for pbx_include.c:

Go to the source code of this file.

Data Structures

struct  ast_include
 ast_include: include= support in extensions.conf More...
 

Functions

const char * ast_get_include_name (const struct ast_include *inc)
 
const char * ast_get_include_registrar (const struct ast_include *inc)
 
struct ast_includeinclude_alloc (const char *value, const char *registrar)
 
void include_free (struct ast_include *inc)
 
const char * include_rname (const struct ast_include *inc)
 
int include_valid (const struct ast_include *inc)
 

Detailed Description

Dialplan context include routines.

Author
Corey Farrell git@c.nosp@m.fwar.nosp@m.e.com

Definition in file pbx_include.c.

Function Documentation

◆ ast_get_include_name()

const char * ast_get_include_name ( const struct ast_include inc)

◆ ast_get_include_registrar()

const char * ast_get_include_registrar ( const struct ast_include inc)

◆ include_alloc()

struct ast_include * include_alloc ( const char *  value,
const char *  registrar 
)

Allocate and initialize an ast_include.

Definition at line 74 of file pbx_include.c.

75{
76 struct ast_include *new_include;
77 char *c;
78 int valuebufsz = strlen(value) + 1;
79 char *p;
80
81 /* allocate new include structure ... */
82 new_include = ast_calloc(1, sizeof(*new_include) + (valuebufsz * 2));
83 if (!new_include) {
84 return NULL;
85 }
86
87 /* Fill in this structure. Use 'p' for assignments, as the fields
88 * in the structure are 'const char *'
89 */
90 p = new_include->stuff;
91 new_include->name = p;
92 strcpy(p, value);
93 p += valuebufsz;
94 new_include->rname = p;
95 strcpy(p, value);
96 /* Strip off timing info, and process if it is there */
97 if ( (c = strchr(p, '|')) || (c = strchr(p, ',')) ) {
98 *c++ = '\0';
99 new_include->hastime = ast_build_timing(&(new_include->timing), c);
100 }
101 new_include->registrar = registrar;
102
103 return new_include;
104}
#define ast_calloc(num, len)
A wrapper for calloc()
Definition: astmm.h:202
int ast_build_timing(struct ast_timing *i, const char *info_in)
Construct a timing bitmap, for use in time-based conditionals.
Definition: extconf.c:3806
static char * registrar
Definition: pbx_ael.c:78
ast_include: include= support in extensions.conf
Definition: pbx_include.c:37
struct ast_timing timing
Definition: pbx_include.c:46
const char * rname
Definition: pbx_include.c:40
char stuff[0]
Definition: pbx_include.c:47
int value
Definition: syslog.c:37
static struct test_val c

References ast_build_timing(), ast_calloc, c, ast_include::hastime, ast_include::name, NULL, ast_include::registrar, registrar, ast_include::rname, ast_include::stuff, ast_include::timing, and value.

Referenced by ast_context_add_include2().

◆ include_free()

void include_free ( struct ast_include inc)

Free an ast_include and associated data.

Definition at line 106 of file pbx_include.c.

107{
108 ast_destroy_timing(&(inc->timing));
109 ast_free(inc);
110}
#define ast_free(a)
Definition: astmm.h:180
int ast_destroy_timing(struct ast_timing *i)
Deallocates memory structures associated with a timing bitmap.
Definition: pbx_timing.c:279

References ast_destroy_timing(), ast_free, and ast_include::timing.

Referenced by __ast_context_destroy(), __ast_internal_context_destroy(), ast_context_add_include2(), and ast_context_remove_include2().

◆ include_rname()

const char * include_rname ( const struct ast_include inc)

Definition at line 55 of file pbx_include.c.

56{
57 return inc ? inc->rname : NULL;
58}

References NULL, and ast_include::rname.

Referenced by ast_context_verify_includes(), and pbx_find_extension().

◆ include_valid()

int include_valid ( const struct ast_include inc)

Definition at line 65 of file pbx_include.c.

66{
67 if (!inc->hastime) {
68 return 1;
69 }
70
71 return ast_check_timing(&(inc->timing));
72}
int ast_check_timing(const struct ast_timing *i)
Evaluate a pre-constructed bitmap as to whether the current time falls within the range specified.
Definition: extconf.c:4000

References ast_check_timing(), ast_include::hastime, and ast_include::timing.

Referenced by pbx_find_extension().