Asterisk - The Open Source Telephony Project GIT-master-ff80666
Data Structures | Macros | Enumerations | Functions | Variables
pbx_builtins.c File Reference

Core PBX builtin routines. More...

#include "asterisk.h"
#include "asterisk/_private.h"
#include "asterisk/pbx.h"
#include "asterisk/causes.h"
#include "asterisk/indications.h"
#include "asterisk/stasis_channels.h"
#include "asterisk/say.h"
#include "asterisk/app.h"
#include "asterisk/module.h"
#include "asterisk/conversions.h"
#include "pbx_private.h"
Include dependency graph for pbx_builtins.c:

Go to the source code of this file.

Data Structures

struct  pbx_builtin
 Declaration of builtin applications. More...
 

Macros

#define BACKGROUND_MATCHEXTEN   (1 << 2)
 
#define BACKGROUND_NOANSWER   (1 << 1)
 
#define BACKGROUND_PLAYBACK   (1 << 3)
 
#define BACKGROUND_SKIP   (1 << 0)
 

Enumerations

enum  { WAITEXTEN_MOH = (1 << 0) , WAITEXTEN_DIALTONE = (1 << 1) }
 
enum  read_option_flags {
  OPT_DELAY = (1 << 0) , OPT_MUTE = (1 << 1) , OPT_QUELCH = (1 << 2) , OPT_RELAXED = (1 << 3) ,
  OPT_LAX_KP = (1 << 4) , OPT_PROCESS = (1 << 5) , OPT_NO_KP = (1 << 6) , OPT_NO_ST = (1 << 7) ,
  OPT_KP_OVERRIDE = (1 << 8) , OPT_MAXDIGITS = (1 << 9) , OPT_SKIP = (1 << 0) , OPT_INDICATION = (1 << 1) ,
  OPT_NOANSWER = (1 << 2) , OPT_TERMINATOR = (1 << 3) , OPT_KEEP_TERMINATOR = (1 << 4) , OPT_ANSWER = (1 << 0) ,
  OPT_DELAY = (1 << 0) , OPT_MUTE = (1 << 1) , OPT_QUELCH = (1 << 2) , OPT_RELAXED = (1 << 3) ,
  OPT_EXTRAPULSES = (1 << 4) , WAITEXTEN_ARG_MOH , WAITEXTEN_ARG_DIALTONE , WAITEXTEN_ARRAY_SIZE
}
 

Functions

int indicate_busy (struct ast_channel *chan, const char *data)
 
int indicate_congestion (struct ast_channel *chan, const char *data)
 
int load_pbx_builtins (void)
 
static int pbx_builtin_answer (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_background (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_execiftime (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_goto (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_gotoif (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_gotoiftime (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_hangup (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_incomplete (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_noop (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_proceeding (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_progress (struct ast_channel *chan, const char *data)
 
int pbx_builtin_raise_exception (struct ast_channel *chan, const char *reason)
 
static int pbx_builtin_ringing (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_saycharacters (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_saycharacters_case (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_saydigits (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_saymoney (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_saynumber (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_sayordinal (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_sayphonetic (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_wait (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_waitdigit (struct ast_channel *chan, const char *data)
 
static int pbx_builtin_waitexten (struct ast_channel *chan, const char *data)
 
static int permit_dtmf_interrupt (struct ast_channel *chan)
 Determine if DTMF interruption was requested. More...
 
static void unload_pbx_builtins (void)
 

Variables

static const struct ast_app_option background_opts [128] = { [ 's' ] = { .flag = (1 << 0) }, [ 'n' ] = { .flag = (1 << 1) }, [ 'm' ] = { .flag = (1 << 2) }, [ 'p' ] = { .flag = (1 << 3) }, }
 
struct pbx_builtin builtins []
 
static const struct ast_app_option waitexten_opts [128] = { [ 'm' ] = { .flag = WAITEXTEN_MOH , .arg_index = WAITEXTEN_ARG_MOH + 1 }, [ 'd' ] = { .flag = WAITEXTEN_DIALTONE , .arg_index = WAITEXTEN_ARG_DIALTONE + 1 }, }
 

Detailed Description

Core PBX builtin routines.

Author
George Joseph georg.nosp@m.e.jo.nosp@m.seph@.nosp@m.fair.nosp@m.view5.nosp@m..com

Definition in file pbx_builtins.c.

Macro Definition Documentation

◆ BACKGROUND_MATCHEXTEN

#define BACKGROUND_MATCHEXTEN   (1 << 2)

Definition at line 783 of file pbx_builtins.c.

◆ BACKGROUND_NOANSWER

#define BACKGROUND_NOANSWER   (1 << 1)

Definition at line 782 of file pbx_builtins.c.

◆ BACKGROUND_PLAYBACK

#define BACKGROUND_PLAYBACK   (1 << 3)

Definition at line 784 of file pbx_builtins.c.

◆ BACKGROUND_SKIP

#define BACKGROUND_SKIP   (1 << 0)

Definition at line 781 of file pbx_builtins.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
WAITEXTEN_MOH 
WAITEXTEN_DIALTONE 

Definition at line 793 of file pbx_builtins.c.

793 {
794 WAITEXTEN_MOH = (1 << 0),
795 WAITEXTEN_DIALTONE = (1 << 1),
796};
@ WAITEXTEN_DIALTONE
Definition: pbx_builtins.c:795
@ WAITEXTEN_MOH
Definition: pbx_builtins.c:794

◆ read_option_flags

Enumerator
OPT_DELAY 
OPT_MUTE 
OPT_QUELCH 
OPT_RELAXED 
OPT_LAX_KP 
OPT_PROCESS 
OPT_NO_KP 
OPT_NO_ST 
OPT_KP_OVERRIDE 
OPT_MAXDIGITS 
OPT_SKIP 
OPT_INDICATION 
OPT_NOANSWER 
OPT_TERMINATOR 
OPT_KEEP_TERMINATOR 
OPT_ANSWER 
OPT_DELAY 
OPT_MUTE 
OPT_QUELCH 
OPT_RELAXED 
OPT_EXTRAPULSES 
WAITEXTEN_ARG_MOH 
WAITEXTEN_ARG_DIALTONE 
WAITEXTEN_ARRAY_SIZE 

Definition at line 798 of file pbx_builtins.c.

798 {
801 /* note: this entry _MUST_ be the last one in the enum */
803};
@ WAITEXTEN_ARG_DIALTONE
Definition: pbx_builtins.c:800
@ WAITEXTEN_ARRAY_SIZE
Definition: pbx_builtins.c:802
@ WAITEXTEN_ARG_MOH
Definition: pbx_builtins.c:799

Function Documentation

◆ load_pbx_builtins()

int load_pbx_builtins ( void  )

Provided by pbx_builtins.c

Definition at line 1597 of file pbx_builtins.c.

1598{
1599 int x;
1600
1601 /* Register builtin applications */
1602 for (x = 0; x < ARRAY_LEN(builtins); x++) {
1604 ast_log(LOG_ERROR, "Unable to register builtin application '%s'\n", builtins[x].name);
1605 return -1;
1606 }
1607 }
1608
1610
1611 return 0;
1612}
int ast_register_cleanup(void(*func)(void))
Register a function to be executed before Asterisk gracefully exits.
Definition: clicompat.c:19
#define ast_log
Definition: astobj2.c:42
static const char name[]
Definition: format_mp3.c:68
static SQLHSTMT execute(struct odbc_obj *obj, void *data, int silent)
Common execution function for SQL queries.
Definition: func_odbc.c:485
#define LOG_ERROR
int ast_register_application2(const char *app, int(*execute)(struct ast_channel *, const char *), const char *synopsis, const char *description, void *mod)
Register an application.
Definition: pbx_app.c:104
struct pbx_builtin builtins[]
static void unload_pbx_builtins(void)
#define NULL
Definition: resample.c:96
#define ARRAY_LEN(a)
Definition: utils.h:703

References ARRAY_LEN, ast_log, ast_register_application2(), ast_register_cleanup(), builtins, execute(), LOG_ERROR, name, NULL, unload_pbx_builtins(), and ast_channel::x.

Referenced by asterisk_daemon().

◆ pbx_builtin_gotoif()

static int pbx_builtin_gotoif ( struct ast_channel chan,
const char *  data 
)
static

Definition at line 1336 of file pbx_builtins.c.

1337{
1338 char *condition, *branch1, *branch2, *branch;
1339 char *stringp;
1340
1341 if (ast_strlen_zero(data)) {
1342 ast_log(LOG_WARNING, "Ignoring, since there is no variable to check\n");
1343 return 0;
1344 }
1345
1346 stringp = ast_strdupa(data);
1347 condition = strsep(&stringp,"?");
1348 branch1 = strsep(&stringp,":");
1349 branch2 = strsep(&stringp,"");
1350 branch = pbx_checkcondition(condition) ? branch1 : branch2;
1351
1352 if (ast_strlen_zero(branch)) {
1353 ast_debug(1, "Not taking any branch\n");
1354 return 0;
1355 }
1356
1357 return pbx_builtin_goto(chan, branch);
1358}
char * strsep(char **str, const char *delims)
#define ast_strdupa(s)
duplicate a string in memory from the stack
Definition: astmm.h:298
static int pbx_builtin_goto(struct ast_channel *chan, const char *data)
Definition: pbx_builtins.c:973
#define ast_debug(level,...)
Log a DEBUG message.
#define LOG_WARNING
int pbx_checkcondition(const char *condition)
Evaluate a condition.
Definition: pbx.c:8307
static force_inline int attribute_pure ast_strlen_zero(const char *s)
Definition: strings.h:65

References ast_debug, ast_log, ast_strdupa, ast_strlen_zero(), LOG_WARNING, pbx_builtin_goto(), pbx_checkcondition(), and strsep().

◆ pbx_builtin_incomplete()

static int pbx_builtin_incomplete ( struct ast_channel chan,
const char *  data 
)
static

Definition at line 913 of file pbx_builtins.c.

914{
915 const char *options = data;
916 int answer = 1;
917
918 /* Some channels can receive DTMF in unanswered state; some cannot */
919 if (!ast_strlen_zero(options) && strchr(options, 'n')) {
920 answer = 0;
921 }
922
923 /* If the channel is hungup, stop waiting */
924 if (ast_check_hangup(chan)) {
925 return -1;
926 } else if (ast_channel_state(chan) != AST_STATE_UP && answer) {
927 __ast_answer(chan, 0);
928 }
929
931
932 return AST_PBX_INCOMPLETE;
933}
static int answer(void *data)
Definition: chan_pjsip.c:687
int __ast_answer(struct ast_channel *chan, unsigned int delay)
Answer a channel, with a selectable delay before returning.
Definition: channel.c:2666
int ast_check_hangup(struct ast_channel *chan)
Check to see if a channel is needing hang up.
Definition: channel.c:445
int ast_indicate(struct ast_channel *chan, int condition)
Indicates condition of channel.
Definition: channel.c:4243
ast_channel_state
ast_channel states
Definition: channelstate.h:35
@ AST_STATE_UP
Definition: channelstate.h:42
@ AST_CONTROL_INCOMPLETE
#define AST_PBX_INCOMPLETE
Definition: pbx.h:51
static struct test_options options

References __ast_answer(), answer(), ast_check_hangup(), AST_CONTROL_INCOMPLETE, ast_indicate(), AST_PBX_INCOMPLETE, AST_STATE_UP, ast_strlen_zero(), and options.

◆ pbx_builtin_noop()

static int pbx_builtin_noop ( struct ast_channel chan,
const char *  data 
)
static

Definition at line 1331 of file pbx_builtins.c.

1332{
1333 return 0;
1334}

◆ pbx_builtin_raise_exception()

int pbx_builtin_raise_exception ( struct ast_channel chan,
const char *  reason 
)

Definition at line 810 of file pbx_builtins.c.

811{
812 /* Priority will become 1, next time through the AUTOLOOP */
813 return raise_exception(chan, reason, 0);
814}
int raise_exception(struct ast_channel *chan, const char *reason, int priority)
Definition: pbx.c:2821

References raise_exception().

◆ pbx_builtin_saycharacters()

static int pbx_builtin_saycharacters ( struct ast_channel chan,
const char *  data 
)
static

Definition at line 1529 of file pbx_builtins.c.

1530{
1531 int res = 0;
1532
1533 if (data) {
1535 }
1536
1537 return res;
1538}
const char * ast_channel_language(const struct ast_channel *chan)
#define AST_DIGIT_ANY
Definition: file.h:48
static int permit_dtmf_interrupt(struct ast_channel *chan)
Determine if DTMF interruption was requested.
int ast_say_character_str(struct ast_channel *chan, const char *num, const char *ints, const char *lang, enum ast_say_case_sensitivity sensitivity)
function to pronounce character and phonetic strings
Definition: channel.c:8285
@ AST_SAY_CASE_NONE
Definition: say.h:182

References ast_channel_language(), AST_DIGIT_ANY, AST_SAY_CASE_NONE, ast_say_character_str(), and permit_dtmf_interrupt().

◆ pbx_builtin_saycharacters_case()

static int pbx_builtin_saycharacters_case ( struct ast_channel chan,
const char *  data 
)
static

Definition at line 1482 of file pbx_builtins.c.

1483{
1484 int res = 0;
1485 int sensitivity = 0;
1486 char *parse;
1487
1490 AST_APP_ARG(characters);
1491 );
1492
1493 if (ast_strlen_zero(data)) {
1494 ast_log(LOG_WARNING, "SayAlphaCase requires two arguments (options, characters)\n");
1495 return 0;
1496 }
1497
1498 parse = ast_strdupa(data);
1500
1501 if (!args.options || strlen(args.options) != 1) {
1502 ast_log(LOG_WARNING, "SayAlphaCase options are mutually exclusive and required\n");
1503 return 0;
1504 }
1505
1506 switch (args.options[0]) {
1507 case 'a':
1508 sensitivity = AST_SAY_CASE_ALL;
1509 break;
1510 case 'l':
1511 sensitivity = AST_SAY_CASE_LOWER;
1512 break;
1513 case 'n':
1514 sensitivity = AST_SAY_CASE_NONE;
1515 break;
1516 case 'u':
1517 sensitivity = AST_SAY_CASE_UPPER;
1518 break;
1519 default:
1520 ast_log(LOG_WARNING, "Invalid option: '%s'\n", args.options);
1521 return 0;
1522 }
1523
1524 res = ast_say_character_str(chan, args.characters, permit_dtmf_interrupt(chan) ? AST_DIGIT_ANY : "", ast_channel_language(chan), sensitivity);
1525
1526 return res;
1527}
#define AST_APP_ARG(name)
Define an application argument.
#define AST_DECLARE_APP_ARGS(name, arglist)
Declare a structure to hold an application's arguments.
#define AST_STANDARD_APP_ARGS(args, parse)
Performs the 'standard' argument separation process for an application.
@ AST_SAY_CASE_LOWER
Definition: say.h:183
@ AST_SAY_CASE_ALL
Definition: say.h:185
@ AST_SAY_CASE_UPPER
Definition: say.h:184
const char * args

References args, AST_APP_ARG, ast_channel_language(), AST_DECLARE_APP_ARGS, AST_DIGIT_ANY, ast_log, AST_SAY_CASE_ALL, AST_SAY_CASE_LOWER, AST_SAY_CASE_NONE, AST_SAY_CASE_UPPER, ast_say_character_str(), AST_STANDARD_APP_ARGS, ast_strdupa, ast_strlen_zero(), LOG_WARNING, options, and permit_dtmf_interrupt().

◆ pbx_builtin_saydigits()

static int pbx_builtin_saydigits ( struct ast_channel chan,
const char *  data 
)
static

Definition at line 1460 of file pbx_builtins.c.

1461{
1462 int res = 0;
1463
1464 if (data) {
1465 res = ast_say_digit_str(chan, data, permit_dtmf_interrupt(chan) ? AST_DIGIT_ANY : "", ast_channel_language(chan));
1466 }
1467
1468 return res;
1469}
int ast_say_digit_str(struct ast_channel *chan, const char *num, const char *ints, const char *lang)
says digits of a string
Definition: channel.c:8273

References ast_channel_language(), AST_DIGIT_ANY, ast_say_digit_str(), and permit_dtmf_interrupt().

◆ pbx_builtin_saymoney()

static int pbx_builtin_saymoney ( struct ast_channel chan,
const char *  data 
)
static

Definition at line 1471 of file pbx_builtins.c.

1472{
1473 int res = 0;
1474
1475 if (data) {
1476 res = ast_say_money_str(chan, data, permit_dtmf_interrupt(chan) ? AST_DIGIT_ANY : "", ast_channel_language(chan));
1477 }
1478
1479 return res;
1480}
int ast_say_money_str(struct ast_channel *chan, const char *num, const char *ints, const char *lang)
function to pronounce monetary amounts
Definition: channel.c:8279

References ast_channel_language(), AST_DIGIT_ANY, ast_say_money_str(), and permit_dtmf_interrupt().

◆ pbx_builtin_saynumber()

static int pbx_builtin_saynumber ( struct ast_channel chan,
const char *  data 
)
static

Definition at line 1382 of file pbx_builtins.c.

1383{
1384 char tmp[256];
1385 char *number = tmp;
1386 int number_val;
1387 char *options;
1388 int res;
1389 int interrupt = permit_dtmf_interrupt(chan);
1390
1391 if (ast_strlen_zero(data)) {
1392 ast_log(LOG_WARNING, "SayNumber requires an argument (number)\n");
1393 return -1;
1394 }
1395 ast_copy_string(tmp, data, sizeof(tmp));
1396 strsep(&number, ",");
1397
1398 if (ast_str_to_int(tmp, &number_val)) {
1399 ast_log(LOG_WARNING, "argument '%s' to SayNumber could not be parsed as a number.\n", tmp);
1400 return 0;
1401 }
1402
1403 options = strsep(&number, ",");
1404 if (options) {
1405 if ( strcasecmp(options, "f") && strcasecmp(options, "m") &&
1406 strcasecmp(options, "c") && strcasecmp(options, "n") ) {
1407 ast_log(LOG_WARNING, "SayNumber gender option is either 'f', 'm', 'c' or 'n'\n");
1408 return -1;
1409 }
1410 }
1411
1412 res = ast_say_number(chan, number_val, interrupt ? AST_DIGIT_ANY : "", ast_channel_language(chan), options);
1413
1414 if (res < 0 && !ast_check_hangup_locked(chan)) {
1415 ast_log(LOG_WARNING, "We were unable to say the number %s, is it too large?\n", tmp);
1416 }
1417
1418 return interrupt ? res : 0;
1419}
int ast_check_hangup_locked(struct ast_channel *chan)
Definition: channel.c:459
int ast_str_to_int(const char *str, int *res)
Convert the given string to a signed integer.
Definition: conversions.c:44
int ast_say_number(struct ast_channel *chan, int num, const char *ints, const char *lang, const char *options)
says a number
Definition: channel.c:8249
void ast_copy_string(char *dst, const char *src, size_t size)
Size-limited null-terminating string copy.
Definition: strings.h:425
Number structure.
Definition: app_followme.c:157

References ast_channel_language(), ast_check_hangup_locked(), ast_copy_string(), AST_DIGIT_ANY, ast_log, ast_say_number(), ast_str_to_int(), ast_strlen_zero(), LOG_WARNING, options, permit_dtmf_interrupt(), and strsep().

◆ pbx_builtin_sayordinal()

static int pbx_builtin_sayordinal ( struct ast_channel chan,
const char *  data 
)
static

Definition at line 1421 of file pbx_builtins.c.

1422{
1423 char tmp[256];
1424 char *number = tmp;
1425 int number_val;
1426 char *options;
1427 int res;
1428 int interrupt = permit_dtmf_interrupt(chan);
1429
1430 if (ast_strlen_zero(data)) {
1431 ast_log(LOG_WARNING, "SayOrdinal requires an argument (number)\n");
1432 return -1;
1433 }
1434 ast_copy_string(tmp, data, sizeof(tmp));
1435 strsep(&number, ",");
1436
1437 if (ast_str_to_int(tmp, &number_val)) {
1438 ast_log(LOG_WARNING, "argument '%s' to SayOrdinal could not be parsed as a number.\n", tmp);
1439 return 0;
1440 }
1441
1442 options = strsep(&number, ",");
1443 if (options) {
1444 if ( strcasecmp(options, "f") && strcasecmp(options, "m") &&
1445 strcasecmp(options, "c") && strcasecmp(options, "n") ) {
1446 ast_log(LOG_WARNING, "SayOrdinal gender option is either 'f', 'm', 'c' or 'n'\n");
1447 return -1;
1448 }
1449 }
1450
1451 res = ast_say_ordinal(chan, number_val, interrupt ? AST_DIGIT_ANY : "", ast_channel_language(chan), options);
1452
1453 if (res < 0 && !ast_check_hangup_locked(chan)) {
1454 ast_log(LOG_WARNING, "We were unable to say the number %s, is it too large?\n", tmp);
1455 }
1456
1457 return interrupt ? res : 0;
1458}
int ast_say_ordinal(struct ast_channel *chan, int num, const char *ints, const char *lang, const char *options)
says an ordinal number
Definition: channel.c:8255

References ast_channel_language(), ast_check_hangup_locked(), ast_copy_string(), AST_DIGIT_ANY, ast_log, ast_say_ordinal(), ast_str_to_int(), ast_strlen_zero(), LOG_WARNING, options, permit_dtmf_interrupt(), and strsep().

◆ pbx_builtin_sayphonetic()

static int pbx_builtin_sayphonetic ( struct ast_channel chan,
const char *  data 
)
static

Definition at line 1540 of file pbx_builtins.c.

1541{
1542 int res = 0;
1543
1544 if (data) {
1546 }
1547
1548 return res;
1549}
int ast_say_phonetic_str(struct ast_channel *chan, const char *num, const char *ints, const char *lang)
Definition: channel.c:8291

References ast_channel_language(), AST_DIGIT_ANY, ast_say_phonetic_str(), and permit_dtmf_interrupt().

◆ permit_dtmf_interrupt()

static int permit_dtmf_interrupt ( struct ast_channel chan)
static

Determine if DTMF interruption was requested.

If the SAY_DTMF_INTERRUPT channel variable is truthy, the caller has requested DTMF interruption be enabled.

Parameters
chanthe channel to examine
Return values
-1if DTMF interruption was requested
0if DTMF interruption was not requested

Definition at line 1371 of file pbx_builtins.c.

1372{
1373 int interrupt;
1374
1375 ast_channel_lock(chan);
1376 interrupt = ast_true(pbx_builtin_getvar_helper(chan, "SAY_DTMF_INTERRUPT"));
1377 ast_channel_unlock(chan);
1378
1379 return interrupt;
1380}
#define ast_channel_lock(chan)
Definition: channel.h:2972
#define ast_channel_unlock(chan)
Definition: channel.h:2973
const char * pbx_builtin_getvar_helper(struct ast_channel *chan, const char *name)
Return a pointer to the value of the corresponding channel variable.
int attribute_pure ast_true(const char *val)
Make sure something is true. Determine if a string containing a boolean value is "true"....
Definition: utils.c:2235

References ast_channel_lock, ast_channel_unlock, ast_true(), and pbx_builtin_getvar_helper().

Referenced by pbx_builtin_saycharacters(), pbx_builtin_saycharacters_case(), pbx_builtin_saydigits(), pbx_builtin_saymoney(), pbx_builtin_saynumber(), pbx_builtin_sayordinal(), and pbx_builtin_sayphonetic().

◆ unload_pbx_builtins()

static void unload_pbx_builtins ( void  )
static

Definition at line 1587 of file pbx_builtins.c.

1588{
1589 int x;
1590
1591 /* Unregister builtin applications */
1592 for (x = 0; x < ARRAY_LEN(builtins); x++) {
1594 }
1595}
int ast_unregister_application(const char *app)
Unregister an application.
Definition: pbx_app.c:392

References ARRAY_LEN, ast_unregister_application(), builtins, name, and ast_channel::x.

Referenced by load_pbx_builtins().

Variable Documentation

◆ background_opts

const struct ast_app_option background_opts[128] = { [ 's' ] = { .flag = (1 << 0) }, [ 'n' ] = { .flag = (1 << 1) }, [ 'm' ] = { .flag = (1 << 2) }, [ 'p' ] = { .flag = (1 << 3) }, }
static

Definition at line 791 of file pbx_builtins.c.

Referenced by pbx_builtin_background().

◆ builtins

struct pbx_builtin builtins[]

◆ waitexten_opts

const struct ast_app_option waitexten_opts[128] = { [ 'm' ] = { .flag = WAITEXTEN_MOH , .arg_index = WAITEXTEN_ARG_MOH + 1 }, [ 'd' ] = { .flag = WAITEXTEN_DIALTONE , .arg_index = WAITEXTEN_ARG_DIALTONE + 1 }, }
static

Definition at line 808 of file pbx_builtins.c.

Referenced by pbx_builtin_waitexten().