2005-11-01 Kevin P. Fleming <kpfleming@digium.com>
+ * apps/app_cut.c (cut_internal): use ast_separate_app_args() instead of open code (issue #5560)
+
* apps/app_mixmonitor.c (launch_monitor_thread): ast_strlen_zero can handle NULL input (issue #5561)
(mixmonitor_exec): same
#include "asterisk/pbx.h"
#include "asterisk/module.h"
#include "asterisk/version.h"
+#include "asterisk/app.h"
/* Maximum length of any variable */
#define MAXRESULT 1024
static int cut_internal(struct ast_channel *chan, char *data, char *buffer, size_t buflen)
{
- char *s, *varname=NULL, *delimiter=NULL, *field=NULL;
+ char *s, *args[3], *varname=NULL, *delimiter=NULL, *field=NULL;
int args_okay = 0;
memset(buffer, 0, buflen);
if (data) {
s = ast_strdupa((char *)data);
if (s) {
- varname = strsep(&s, "|");
- if (varname && (varname[0] != '\0')) {
- delimiter = strsep(&s, "|");
- if (delimiter) {
- field = strsep(&s, "|");
- if (field) {
- args_okay = 1;
- }
- }
+ ast_separate_app_args(s, '|', args, 3);
+ varname = args[0];
+ delimiter = args[1];
+ field = args[2];
+
+ if (field) {
+ args_okay = 1;
}
} else {
return ERROR_NOMEM;