mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 10:47:18 +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); | ||||
|  | ||||
| 	/* Check and parse arguments */ | ||||
| 	if(args.argc < 3){ | ||||
| 	if (args.argc < 3) { | ||||
| 		return ERROR_NOARG; | ||||
| 	} else { | ||||
| 		char d, ds[2]; | ||||
| @@ -145,7 +145,19 @@ static int cut_internal(struct ast_channel *chan, char *data, char *buffer, size | ||||
| 			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) */ | ||||
| 		snprintf(ds, sizeof(ds), "%c", d); | ||||
|   | ||||
| @@ -39,7 +39,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") | ||||
| #include "asterisk/utils.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) | ||||
| { | ||||
| 	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); | ||||
| 	if (args.delim) { | ||||
| 		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)) | ||||
| 			fieldcount++; | ||||
| 	} else { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user