Index: funcs/func_strings.c =================================================================== --- funcs/func_strings.c (revision 49030) +++ funcs/func_strings.c (working copy) @@ -56,6 +56,16 @@ 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 { Index: funcs/func_cut.c =================================================================== --- funcs/func_cut.c (revision 49029) +++ funcs/func_cut.c (working copy) @@ -131,7 +131,7 @@ 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 @@ 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);