84{
   90    int found, field_number = 1, ix, 
method;
 
   91    char *separator = ",";
   92 
   94        CONCAT,
   95        SINGLE,
   96    };
   97 
  105    );
  106 
  107    
  110        return -1;
  111    }
  112 
  114 
  117        return -1;
  118    }
  119 
  122        return -1;
  123    }
  124 
  127        return -1;
  128    }
  129 
  132        return -1;
  133    }
  134 
  137    } else {
  138        if (strcmp(
args.method, 
"concat") == 0) {
 
  141                separator = ",";
  142            } else {
  143                separator = 
args.method_arg;
 
  144            }
  145 
  146        } 
else if (strcmp(
args.method, 
"single") == 0) {
 
  149                if (sscanf(
args.method_arg, 
"%30d", &field_number) <= 0 || field_number <= 0 ) {
 
  151                    return -1;
  152                }
  153            }
  154        } else {
  156            return -1;
  157        }
  158    }
  159 
  163        return -1;
  164    }
  165 
  167    if (!sorcery_obj) {
  168        return -1;
  169    }
  170 
  172    if (!change_set) {
  173        return -1;
  174    }
  175 
  176    ix=1;
  177    found = 0;
  178    for (it_change_set = change_set; it_change_set; it_change_set = it_change_set->
next) {
 
  179 
  180        if (
method == CONCAT && strcmp(it_change_set->
name, 
args.field_name) == 0) {
 
  182            found = 1;
  183            continue;
  184        }
  185 
  186        if (
method == SINGLE && strcmp(it_change_set->
name, 
args.field_name) == 0  && ix++ == field_number) {
 
  188            found = 1;
  189            break;
  190        }
  191    }
  192 
  194 
  195    if (!found) {
  196        return -1;
  197    }
  198 
  201    }
  202 
  203    return 0;
  204}
#define ast_strdupa(s)
duplicate a string in memory from the stack
static int len(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t buflen)
#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.
void ast_variables_destroy(struct ast_variable *var)
Free variable list.
static struct ast_sorcery * sorcery
static struct @487 methods[]
#define ast_sorcery_unref(sorcery)
Decrease the reference count of a sorcery structure.
#define ast_sorcery_objectset_create(sorcery, object)
Create an object set (KVP list) for an object.
void * ast_sorcery_retrieve_by_id(const struct ast_sorcery *sorcery, const char *type, const char *id)
Retrieve an object using its unique identifier.
struct ast_sorcery * ast_sorcery_retrieve_by_module_name(const char *module_name)
Retrieves an existing sorcery instance by module name.
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.
static force_inline int attribute_pure ast_strlen_zero(const char *s)
int ast_str_set(struct ast_str **buf, ssize_t max_len, const char *fmt,...)
Set a dynamic string using variable arguments.
Full structure for sorcery.
Structure for variables, used for configurations and for channel variables.
struct ast_variable * next
#define RAII_VAR(vartype, varname, initval, dtor)
Declare a variable that will call a destructor function when it goes out of scope.