Skip to content
Snippets Groups Projects
Commit 565398f5 authored by Kevin P. Fleming's avatar Kevin P. Fleming
Browse files

add FIELDQTY function to split variable contents and get any desired field (bug #3731)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5353 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent 33801137
No related branches found
No related tags found
No related merge requests found
...@@ -169,14 +169,44 @@ static int cut_exec(struct ast_channel *chan, void *data) ...@@ -169,14 +169,44 @@ static int cut_exec(struct ast_channel *chan, void *data)
return res; return res;
} }
static char *function_fieldqty(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len)
{
char *varname, *varval="", workspace[256];
char *delim = ast_strdupa(data);
int fieldcount=0;
if (delim) {
varname = strsep(&delim, "|");
pbx_retrieve_variable(chan, varname, &varval, workspace, sizeof(workspace), NULL);
while (strsep(&varval, delim)) {
fieldcount++;
}
snprintf(buf, len, "%d", fieldcount);
} else {
ast_log(LOG_ERROR, "Out of memory\n");
strncpy(buf, "1", len);
}
return buf;
}
static struct ast_custom_function_obj fieldqty_function = {
.name = "FIELDQTY",
.desc = "Count the fields, with an arbitrary delimiter",
.syntax = "FIELDQTY(<varname>,<delim>)",
.read = function_fieldqty,
.write = NULL,
};
int unload_module(void) int unload_module(void)
{ {
STANDARD_HANGUP_LOCALUSERS; STANDARD_HANGUP_LOCALUSERS;
ast_custom_function_unregister(&fieldqty_function);
return ast_unregister_application(app_cut); return ast_unregister_application(app_cut);
} }
int load_module(void) int load_module(void)
{ {
ast_custom_function_register(&fieldqty_function);
return ast_register_application(app_cut, cut_exec, cut_synopsis, cut_descrip); return ast_register_application(app_cut, cut_exec, cut_synopsis, cut_descrip);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment