Made -msg_op "parse" obey -backslash_codes.

This commit is contained in:
2013-01-05 21:50:41 +00:00
parent 19cc61624f
commit da0bddeced
5 changed files with 59 additions and 37 deletions

View File

@ -3559,8 +3559,8 @@ int Xorriso_msg_op_parse(struct XorrisO *xorriso, char *line,
int max_words, int pflag, int input_lines,
int flag)
{
int ret, i, l, pargc= 0;
char *pline= NULL, **pargv= NULL, *parse_line;
int ret, i, l, pargc= 0, bsl_mem;
char *pline= NULL, **pargv= NULL, *parse_line, *text= NULL, *text_pt;
Xorriso_alloc_meM(pline, char, SfileadrL);
@ -3590,6 +3590,10 @@ int Xorriso_msg_op_parse(struct XorrisO *xorriso, char *line,
ret= Xorriso_parse_line(xorriso, parse_line, prefix, separators, max_words,
&pargc, &pargv, pflag);
/* Temporarily disable backslash encoding of result channel */
bsl_mem= xorriso->bsl_interpretation;
xorriso->bsl_interpretation&= ~32;
xorriso->msg_sieve_disabled= 1;
sprintf(xorriso->result_line, "%d\n", ret);
Xorriso_result(xorriso, 1);
@ -3597,10 +3601,16 @@ int Xorriso_msg_op_parse(struct XorrisO *xorriso, char *line,
sprintf(xorriso->result_line, "%d\n", pargc);
Xorriso_result(xorriso, 1);
for(i= 0; i < pargc; i++) {
ret= Sfile_count_char(pargv[i], '\n') + 1;
text_pt= pargv[i];
if (bsl_mem & 32) {
ret= Sfile_bsl_encoder(&text, pargv[i], strlen(pargv[i]), 4);
if(ret > 0)
text_pt= text;
}
ret= Sfile_count_char(text_pt, '\n') + 1;
sprintf(xorriso->result_line, "%d\n", ret);
Xorriso_result(xorriso, 1);
Sfile_str(xorriso->result_line, pargv[i], 0);
Sfile_str(xorriso->result_line, text_pt, 0);
strcat(xorriso->result_line, "\n");
Xorriso_result(xorriso, 1);
}
@ -3608,10 +3618,11 @@ int Xorriso_msg_op_parse(struct XorrisO *xorriso, char *line,
sprintf(xorriso->result_line, "0\n");
Xorriso_result(xorriso, 1);
}
xorriso->bsl_interpretation= bsl_mem;
ret= 1;
ex:;
Xorriso__dispose_words(&pargc, &pargv);
Xorriso_free_meM(text);
Xorriso_free_meM(pline);
return ret;
}