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 @453 methods[]
static struct ast_sorcery * sorcery
#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.