mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-25 15:08:53 +00:00
Modifications to allow the output of SHELL() to be split per line (Issue 8676)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@49786 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -131,7 +131,7 @@ static int cut_internal(struct ast_channel *chan, char *data, char *buffer, size
|
|||||||
AST_STANDARD_APP_ARGS(args, parse);
|
AST_STANDARD_APP_ARGS(args, parse);
|
||||||
|
|
||||||
/* Check and parse arguments */
|
/* Check and parse arguments */
|
||||||
if(args.argc < 3){
|
if (args.argc < 3) {
|
||||||
return ERROR_NOARG;
|
return ERROR_NOARG;
|
||||||
} else {
|
} else {
|
||||||
char d, ds[2];
|
char d, ds[2];
|
||||||
@@ -145,7 +145,19 @@ static int cut_internal(struct ast_channel *chan, char *data, char *buffer, size
|
|||||||
return ERROR_NOMEM;
|
return ERROR_NOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
d = args.delimiter[0] ? args.delimiter[0] : '-';
|
if (args.delimiter[0] == '\\') {
|
||||||
|
if (args.delimiter[1] == 'n')
|
||||||
|
d = '\n';
|
||||||
|
else if (args.delimiter[1] == 't')
|
||||||
|
d = '\t';
|
||||||
|
else if (args.delimiter[1])
|
||||||
|
d = args.delimiter[1];
|
||||||
|
else
|
||||||
|
d = '-';
|
||||||
|
} else if (args.delimiter[0])
|
||||||
|
d = args.delimiter[0];
|
||||||
|
else
|
||||||
|
d = '-';
|
||||||
|
|
||||||
/* String form of the delimiter, for use with strsep(3) */
|
/* String form of the delimiter, for use with strsep(3) */
|
||||||
snprintf(ds, sizeof(ds), "%c", d);
|
snprintf(ds, sizeof(ds), "%c", d);
|
||||||
|
@@ -39,7 +39,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
|
|||||||
#include "asterisk/utils.h"
|
#include "asterisk/utils.h"
|
||||||
#include "asterisk/app.h"
|
#include "asterisk/app.h"
|
||||||
|
|
||||||
static int shell_helper(struct ast_channel *chan, char *cmd, char *data,
|
static int shell_helper(struct ast_channel *chan, const char *cmd, char *data,
|
||||||
char *buf, size_t len)
|
char *buf, size_t len)
|
||||||
{
|
{
|
||||||
if (ast_strlen_zero(data)) {
|
if (ast_strlen_zero(data)) {
|
||||||
|
@@ -56,6 +56,16 @@ static int function_fieldqty(struct ast_channel *chan, const char *cmd,
|
|||||||
AST_STANDARD_APP_ARGS(args, parse);
|
AST_STANDARD_APP_ARGS(args, parse);
|
||||||
if (args.delim) {
|
if (args.delim) {
|
||||||
pbx_retrieve_variable(chan, args.varname, &varval, buf, len, NULL);
|
pbx_retrieve_variable(chan, args.varname, &varval, buf, len, NULL);
|
||||||
|
if (args.delim[0] == '\\') {
|
||||||
|
if (args.delim[1] == 'n')
|
||||||
|
ast_copy_string(args.delim, "\n", 2);
|
||||||
|
else if (args.delim[1] == 't')
|
||||||
|
ast_copy_string(args.delim, "\t", 2);
|
||||||
|
else if (args.delim[1])
|
||||||
|
ast_copy_string(args.delim, &args.delim[1], 2);
|
||||||
|
else
|
||||||
|
ast_copy_string(args.delim, "-", 2);
|
||||||
|
}
|
||||||
while (strsep(&varval, args.delim))
|
while (strsep(&varval, args.delim))
|
||||||
fieldcount++;
|
fieldcount++;
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user