New command -msg_op
This commit is contained in:
@ -838,6 +838,146 @@ unknown_mode:;
|
||||
}
|
||||
|
||||
|
||||
/* Command -msg_op */
|
||||
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;
|
||||
char **argv= NULL, **pargv= NULL, *msg= "";
|
||||
char *pline= NULL, *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);
|
||||
prefix= "";
|
||||
if(argc > 0)
|
||||
prefix= argv[0];
|
||||
separators= "";
|
||||
if(argc > 1)
|
||||
separators= argv[1];
|
||||
max_words= 0;
|
||||
if(argc > 2)
|
||||
sscanf(argv[2], "%d", &max_words);
|
||||
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);
|
||||
}
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "0\n");
|
||||
Xorriso_result(xorriso, 1);
|
||||
}
|
||||
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);
|
||||
msg= "Message sieve enabled";
|
||||
|
||||
/* >>> } else if(strcmp(what, "add_filter_rule") == 0) { */;
|
||||
|
||||
} else if(strcmp(what, "clear_sieve") == 0) {
|
||||
ret= Xorriso_sieve_clear_results(xorriso, 0);
|
||||
msg= "Recorded message sieve results disposed";
|
||||
} else if(strcmp(what, "end_sieve") == 0) {
|
||||
ret= Xorriso_sieve_dispose(xorriso, 0);
|
||||
msg= "Message sieve disabled";
|
||||
} else if(strcmp(what, "read_sieve") == 0) {
|
||||
ret= Xorriso_sieve_get_result(xorriso, arg, &pargc, &pargv, &available, 0);
|
||||
xorriso->msg_sieve_disabled= 1;
|
||||
sprintf(xorriso->result_line, "%d\n", ret);
|
||||
Xorriso_result(xorriso, 1);
|
||||
if(ret > 0) {
|
||||
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);
|
||||
}
|
||||
} else {
|
||||
strcpy(xorriso->result_line, "0\n");
|
||||
Xorriso_result(xorriso, 1);
|
||||
available= 0;
|
||||
}
|
||||
sprintf(xorriso->result_line, "%d\n", available);
|
||||
Xorriso_result(xorriso, 1);
|
||||
xorriso->msg_sieve_disabled= msd_mem;
|
||||
Xorriso__dispose_words(&pargc, &pargv);
|
||||
ret= 1;
|
||||
} else if(strcmp(what, "show_sieve") == 0) {
|
||||
ret= Xorriso_sieve_get_result(xorriso, "", &pargc, &pargv, &available, 8);
|
||||
xorriso->msg_sieve_disabled= 1;
|
||||
sprintf(xorriso->result_line, "%d\n", ret);
|
||||
Xorriso_result(xorriso, 1);
|
||||
if(ret > 0) {
|
||||
sprintf(xorriso->result_line, "%d\n", pargc);
|
||||
Xorriso_result(xorriso, 1);
|
||||
for(i= 0; i < pargc; i++) {
|
||||
sprintf(xorriso->result_line, "%s\n", pargv[i]);
|
||||
Xorriso_result(xorriso, 1);
|
||||
}
|
||||
}
|
||||
xorriso->msg_sieve_disabled= msd_mem;
|
||||
Xorriso__dispose_words(&pargc, &pargv);
|
||||
} else {
|
||||
sprintf(xorriso->info_text, "-msg_op: unknown operation '%s'", what);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||
ret= 0;
|
||||
}
|
||||
if(ret > 0 && msg[0])
|
||||
Xorriso_msgs_submit(xorriso, 0, msg, 0, "NOTE", 0);
|
||||
|
||||
ex:;
|
||||
xorriso->msg_sieve_disabled= msd_mem;
|
||||
Xorriso_free_meM(pline);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
/* Option -mv alias -mvi */
|
||||
int Xorriso_option_mvi(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int *idx, int flag)
|
||||
|
Reference in New Issue
Block a user