97static char *
app = 
"WaitForCondition";
 
  102    double timeout = 0, poll = 0;
 
  108    char *pos, *open_bracket, *expression, *optargs = 
NULL;
 
  125    if (!(open_bracket = strchr(pos, 
'[')) || !strchr(open_bracket, 
']')) {
 
  126        ast_log(
LOG_ERROR, 
"No expression detected. Did you forget to replace the $ signs?\n");
 
  131    dollarsignrep = pos[0];
 
  132    if (dollarsignrep == 
'$' || dollarsignrep == 
'[' || dollarsignrep == 
']' 
  133        || dollarsignrep == 
'{' || dollarsignrep == 
'}') {
 
  134        ast_log(
LOG_ERROR, 
"Dollar sign replacement cannot be %c.\n", dollarsignrep);
 
  145    if (pos[0] != dollarsignrep) {
 
  146        ast_log(
LOG_ERROR, 
"Expression start does not match provided replacement: %c\n", pos[0]);
 
  155        if (pos[0] == 
'\0') {
 
  162        } 
else if (pos[0] == 
']') {
 
  170    if (pos[0] != 
'\0') {
 
  172        if (pos[0] != 
'\0') {
 
  176                if (sscanf(
args.timeout, 
"%30lg", &timeout) != 1) {
 
  180                timeout_ms = timeout * 1000.0;
 
  184                if (sscanf(
args.interval, 
"%30lg", &poll) != 1) {
 
  189                    ast_log(
LOG_WARNING, 
"Polling interval cannot be less than 1ms. Default unchanged.\n");
 
  192                poll_ms = poll * 1000.0;
 
  197    for (i = 0; expression[i] != 
'\0'; i++) {
 
  198        if (expression[i] == dollarsignrep) {
 
  203    if (timeout_ms > 0) {
 
  204        ast_debug(1, 
"Waiting for condition for %f seconds: %s (checking every %d ms)", timeout, expression, poll_ms);
 
  206        ast_debug(1, 
"Waiting for condition, forever: %s (checking every %d ms)", expression, poll_ms);
 
 
static int waitforcond_exec(struct ast_channel *chan, const char *data)
static int load_module(void)
static int unload_module(void)
Asterisk main include file. File version handling, generic pbx functions.
#define ast_strdupa(s)
duplicate a string in memory from the stack
General Asterisk PBX channel definitions.
int ast_safe_sleep(struct ast_channel *chan, int ms)
Wait for a specified amount of time, looking for hangups.
Application convenience functions, designed to give consistent look and feel to Asterisk apps.
#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.
Support for logging to various files, console and syslog Configuration in file logger....
#define ast_debug(level,...)
Log a DEBUG message.
Asterisk module definitions.
#define ASTERISK_GPL_KEY
The text the key() function should return.
int ast_unregister_application(const char *app)
Unregister an application.
#define AST_MODULE_INFO_STANDARD_EXTENDED(keystr, desc)
#define ast_register_application_xml(app, execute)
Register an application using XML documentation.
Core PBX routines and definitions.
int pbx_builtin_setvar_helper(struct ast_channel *chan, const char *name, const char *value)
Add a variable to the channel variable stack, removing the most recently set value for the same name.
int pbx_checkcondition(const char *condition)
Evaluate a condition.
void pbx_substitute_variables_helper(struct ast_channel *c, const char *cp1, char *cp2, int count)
static force_inline int attribute_pure ast_strlen_zero(const char *s)
Main Channel structure associated with a channel.
int ast_remaining_ms(struct timeval start, int max_ms)
Calculate remaining milliseconds given a starting timestamp and upper bound.
struct timeval ast_tvnow(void)
Returns current timeval. Meant to replace calls to gettimeofday().