New -msg_op opcode "parse_bulk"

This commit is contained in:
2012-12-16 13:12:15 +00:00
parent 2266a5dd1b
commit e01ce72edb
7 changed files with 186 additions and 53 deletions

View File

@ -842,17 +842,15 @@ unknown_mode:;
int Xorriso_option_msg_op(struct XorrisO *xorriso, char *what, char *arg,
int flag)
{
int ret, available, argc, pargc, i, pflag, max_words, input_lines, l, msd_mem;
int ret, available, argc, pargc, i, pflag, max_words, input_lines, msd_mem;
char **argv= NULL, **pargv= NULL, *msg= "";
char *pline= NULL, *prefix, *separators;
char *prefix, *separators;
msd_mem= xorriso->msg_sieve_disabled;
Xorriso_alloc_meM(pline, char, SfileadrL);
ret= 1;
if(strcmp(what, "parse") == 0) {
ret= Xorriso_parse_line(xorriso, arg, "", "", 4, &argc, &argv, 0);
if(strcmp(what, "parse") == 0 || strcmp(what, "parse_bulk") == 0) {
ret= Xorriso_parse_line(xorriso, arg, "", "", 5, &argc, &argv, 0);
prefix= "";
if(argc > 0)
prefix= argv[0];
@ -865,50 +863,20 @@ int Xorriso_option_msg_op(struct XorrisO *xorriso, char *what, char *arg,
pflag= 0;
if(argc > 3)
sscanf(argv[3], "%d", &pflag);
input_lines= 1;
if(argc > 4)
sscanf(argv[4], "%d", &input_lines);
if(input_lines > 1)
sprintf(xorriso->info_text, "-msg_op parse: Enter %d lines of text\n",
input_lines);
else
sprintf(xorriso->info_text, "-msg_op parse: Enter text line\n");
Xorriso_info(xorriso, 0);
pline[0]= 0;
for(i= 0; i < input_lines; i++) {
l= strlen(pline);
ret= Xorriso_dialog_input(xorriso, pline + l, SfileadrL - l - 1, 8);
if(ret <= 0)
goto ex;
if(i < input_lines - 1)
strcat(pline, "\n");
}
sprintf(xorriso->info_text, "-msg_op parse: Text input complete\n");
Xorriso_info(xorriso, 0);
ret= Xorriso_parse_line(xorriso, pline, prefix, separators, max_words,
&pargc, &pargv, pflag);
xorriso->msg_sieve_disabled= 1;
sprintf(xorriso->result_line, "%d\n", ret);
Xorriso_result(xorriso, 1);
if(ret == 1) {
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;
sprintf(xorriso->result_line, "%d\n", ret);
Xorriso_result(xorriso, 1);
Sfile_str(xorriso->result_line, pargv[i], 0);
strcat(xorriso->result_line, "\n");
Xorriso_result(xorriso, 1);
}
if(strcmp(what, "parse") == 0) {
ret= Xorriso_msg_op_parse(xorriso, "", prefix, separators,
max_words, pflag, input_lines, 0);
} else {
sprintf(xorriso->result_line, "0\n");
Xorriso_result(xorriso, 1);
ret= Xorriso_msg_op_parse_bulk(xorriso, prefix, separators,
max_words, pflag, input_lines, 0);
}
if(ret <= 0)
goto ex;
xorriso->msg_sieve_disabled= msd_mem;
Xorriso__dispose_words(&argc, &argv);
Xorriso__dispose_words(&pargc, &pargv);
} else if(strcmp(what, "start_sieve") == 0) {
Xorriso_sieve_dispose(xorriso, 0);
ret= Xorriso_sieve_big(xorriso, 0);
@ -988,7 +956,6 @@ int Xorriso_option_msg_op(struct XorrisO *xorriso, char *what, char *arg,
ex:;
xorriso->msg_sieve_disabled= msd_mem;
Xorriso_free_meM(pline);
return(ret);
}