|
|
|
@ -3259,6 +3259,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
|
|
|
|
for(i= 0; i < Xorriso_max_outlist_stacK; i++) {
|
|
|
|
|
m->result_msglists[i]= NULL;
|
|
|
|
|
m->info_msglists[i]= NULL;
|
|
|
|
|
m->msglist_flags[i]= 0;
|
|
|
|
|
}
|
|
|
|
|
m->msglist_stackfill= 0;
|
|
|
|
|
m->status_history_max= Xorriso_status_history_maX;
|
|
|
|
@ -3676,7 +3677,8 @@ int Xorriso_write_to_channel(struct XorrisO *xorriso,
|
|
|
|
|
bit15= with bit1 or bit2: close depicted log file
|
|
|
|
|
*/
|
|
|
|
|
{
|
|
|
|
|
char *rpt,*npt,ret= 1;
|
|
|
|
|
char *rpt,*npt;
|
|
|
|
|
int ret= 1, info_redirected= 0, result_redirected= 0;
|
|
|
|
|
char prefix[16];
|
|
|
|
|
FILE *logfile_fp, *pktlog_fp;
|
|
|
|
|
struct Xorriso_lsT *msglist;
|
|
|
|
@ -3728,6 +3730,12 @@ bit15= with bit1 or bit2: close depicted log file
|
|
|
|
|
|
|
|
|
|
/* Eventually perform messag redirection */
|
|
|
|
|
if(xorriso->msglist_stackfill > 0) {
|
|
|
|
|
if(xorriso->msglist_flags[xorriso->msglist_stackfill - 1] & 1)
|
|
|
|
|
result_redirected= 1;
|
|
|
|
|
if(xorriso->msglist_flags[xorriso->msglist_stackfill - 1] & 2)
|
|
|
|
|
info_redirected= 1;
|
|
|
|
|
}
|
|
|
|
|
if(result_redirected) {
|
|
|
|
|
if(channel_no==1 || channel_no==3) {
|
|
|
|
|
msglist= xorriso->result_msglists[xorriso->msglist_stackfill - 1];
|
|
|
|
|
ret= Xorriso_lst_append_binary(&msglist, text, strlen(text) + 1, 0);
|
|
|
|
@ -3736,6 +3744,8 @@ bit15= with bit1 or bit2: close depicted log file
|
|
|
|
|
if(xorriso->result_msglists[xorriso->msglist_stackfill - 1] == NULL)
|
|
|
|
|
xorriso->result_msglists[xorriso->msglist_stackfill - 1]= msglist;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(info_redirected) {
|
|
|
|
|
if(channel_no==2 || channel_no==3) {
|
|
|
|
|
msglist= xorriso->info_msglists[xorriso->msglist_stackfill - 1];
|
|
|
|
|
ret= Xorriso_lst_append_binary(&msglist, text, strlen(text) + 1, 0);
|
|
|
|
@ -3744,8 +3754,11 @@ bit15= with bit1 or bit2: close depicted log file
|
|
|
|
|
if(xorriso->info_msglists[xorriso->msglist_stackfill - 1] == NULL)
|
|
|
|
|
xorriso->info_msglists[xorriso->msglist_stackfill - 1]= msglist;
|
|
|
|
|
}
|
|
|
|
|
return(1);
|
|
|
|
|
}
|
|
|
|
|
if((channel_no == 1 && result_redirected) ||
|
|
|
|
|
(channel_no == 2 && info_redirected) ||
|
|
|
|
|
(result_redirected && info_redirected))
|
|
|
|
|
return(1);
|
|
|
|
|
|
|
|
|
|
/* Non-redirected output */
|
|
|
|
|
if(!xorriso->packet_output) {
|
|
|
|
@ -3828,9 +3841,12 @@ int Xorriso_push_outlists(struct XorrisO *xorriso, int *stack_handle,
|
|
|
|
|
"Overflow of message output redirection stack", 0, "FATAL", 0);
|
|
|
|
|
return(-1);
|
|
|
|
|
}
|
|
|
|
|
if((flag & 3) == 0)
|
|
|
|
|
flag|= 3;
|
|
|
|
|
xorriso->msglist_stackfill++;
|
|
|
|
|
xorriso->result_msglists[xorriso->msglist_stackfill - 1]= NULL;
|
|
|
|
|
xorriso->info_msglists[xorriso->msglist_stackfill - 1]= NULL;
|
|
|
|
|
xorriso->msglist_flags[xorriso->msglist_stackfill - 1]= flag & 3;
|
|
|
|
|
*stack_handle= xorriso->msglist_stackfill - 1;
|
|
|
|
|
return(1);
|
|
|
|
|
}
|
|
|
|
@ -3864,13 +3880,16 @@ int Xorriso_result(struct XorrisO *xorriso, int flag)
|
|
|
|
|
bit0= no considerations or computations or dialog. Just put out.
|
|
|
|
|
*/
|
|
|
|
|
{
|
|
|
|
|
int ret;
|
|
|
|
|
int ret, redirected= 0;
|
|
|
|
|
|
|
|
|
|
if(flag&1)
|
|
|
|
|
goto put_it_out;
|
|
|
|
|
if(xorriso->request_to_abort)
|
|
|
|
|
return(1);
|
|
|
|
|
if(xorriso->result_page_length>0 && xorriso->msglist_stackfill <= 0) {
|
|
|
|
|
if(xorriso->msglist_stackfill > 0)
|
|
|
|
|
if(xorriso->msglist_flags[xorriso->msglist_stackfill - 1] & 1)
|
|
|
|
|
redirected= 1;
|
|
|
|
|
if(xorriso->result_page_length>0 && !redirected) {
|
|
|
|
|
ret= Xorriso_pager(xorriso,xorriso->result_line,2);
|
|
|
|
|
if(ret<=0)
|
|
|
|
|
return(ret);
|
|
|
|
@ -8844,17 +8863,22 @@ int Xorriso_toc_to_string(struct XorrisO *xorriso, char **toc_text, int flag)
|
|
|
|
|
struct Xorriso_lsT *results= NULL, *infos= NULL, *lpt;
|
|
|
|
|
|
|
|
|
|
*toc_text= NULL;
|
|
|
|
|
ret= Xorriso_push_outlists(xorriso, &stack_handle, 0);
|
|
|
|
|
ret= Xorriso_push_outlists(xorriso, &stack_handle, 1);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
goto ex;
|
|
|
|
|
toc_ret= Xorriso_toc(xorriso, flag & 4);
|
|
|
|
|
ret= Xorriso_pull_outlists(xorriso, stack_handle, &results, &infos, 0);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
goto ex;
|
|
|
|
|
|
|
|
|
|
#ifdef NIX
|
|
|
|
|
/* <<< info is no longer redirected */
|
|
|
|
|
for(lpt= infos; lpt != NULL; lpt= Xorriso_lst_get_next(lpt, 0)) {
|
|
|
|
|
strcpy(xorriso->info_text, Xorriso_lst_get_text(lpt, 0));
|
|
|
|
|
Xorriso_info(xorriso, 0);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
if(toc_ret <= 0)
|
|
|
|
|
{ret= toc_ret; goto ex;}
|
|
|
|
|
|
|
|
|
|