Enabled use of libjte message list

This commit is contained in:
2010-10-04 11:22:58 +00:00
parent 25460413ce
commit e942108ad7
5 changed files with 48 additions and 56 deletions

View File

@ -417,14 +417,32 @@ cannot:;
int Xorriso_process_msg_queues(struct XorrisO *xorriso, int flag)
{
int ret, error_code= 0, os_errno= 0, count= 0, pass, imgid, tunneled;
char severity[80];
int name_prefix_code;
char severity[80], *msg;
if(!xorriso->libs_are_started)
return(1);
for(pass= 0; pass< 2; pass++) {
for(pass= 0; pass< 3; pass++) {
while(1) {
tunneled= 0;
if(pass==0)
if(pass==0) {
ret= 0;
#ifdef Xorriso_with_libjtE
if(xorriso->libjte_handle != NULL) {
msg= libjte_get_next_message(xorriso->libjte_handle);
if(msg != NULL) {
sprintf(xorriso->info_text, "%1.4095s", msg);
free(msg);
strcpy(severity, "NOTE");
error_code= 0;
os_errno= 0;
ret= 1;
}
}
#endif /* Xorriso_with_libjtE */
} else if(pass==1)
ret= iso_obtain_msgs("ALL", &error_code, &imgid,
xorriso->info_text, severity);
else {
@ -448,8 +466,12 @@ int Xorriso_process_msg_queues(struct XorrisO *xorriso, int flag)
else if(error_code==0x51001)
strcpy(severity, "ERRFILE");
if(pass == 0)
name_prefix_code= 0;
else
name_prefix_code= pass + tunneled;
Xorriso_msgs_submit(xorriso, error_code, xorriso->info_text, os_errno,
severity, ((pass+tunneled)+1)<<2);
severity, name_prefix_code << 2);
count++;
}
}
@ -540,6 +562,8 @@ int Xorriso_assert_jte_handle(struct XorrisO *xorriso, int flag)
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
return(-1);
}
/* no stderr, no exit() */
libjte_set_error_behavior(xorriso->libjte_handle, 0, 0);
}
return(1);
}
@ -555,6 +579,7 @@ int Xorriso_jigdo_interpreter(struct XorrisO *xorriso, char *aspect, char *arg,
int ret, num;
struct libjte_env *jte;
char *msg = NULL;
if(strcmp(aspect, "clear") == 0) {
if(xorriso->libjte_handle != NULL)
@ -569,11 +594,14 @@ int Xorriso_jigdo_interpreter(struct XorrisO *xorriso, char *aspect, char *arg,
jte= xorriso->libjte_handle;
if(strcmp(aspect, "verbose") == 0) {
if(strcmp(arg, "on") == 0)
if(strcmp(arg, "on") == 0) {
libjte_set_verbose(jte, 1);
else if(strcmp(arg, "off") == 0)
/* Direct libjte messages to stderr, rather than message list */
libjte_set_error_behavior(xorriso->libjte_handle, 1, 0);
} else if(strcmp(arg, "off") == 0) {
libjte_set_verbose(jte, 0);
else
libjte_set_error_behavior(xorriso->libjte_handle, 0, 0);
} else
goto bad_arg;
} else if(strcmp(aspect, "template_path") == 0 ||
strcmp(aspect, "-jigdo-template") == 0) {
@ -641,7 +669,7 @@ int Xorriso_jigdo_interpreter(struct XorrisO *xorriso, char *aspect, char *arg,
Xorriso_no_malloc_memory(xorriso, NULL, 0);
return(-1);
}
Xorriso_process_msg_queues(xorriso, 0);
return(1);
bad_arg:
@ -650,6 +678,15 @@ bad_arg:
return(0);
jte_failed:
while(1) {
msg= libjte_get_next_message(xorriso->libjte_handle);
if(msg == NULL)
break;
sprintf(xorriso->info_text, "%1.4095s", msg);
free(msg);
msg= NULL;
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
}
sprintf(xorriso->info_text, "Experienced libjte failure with: -jigdo %s %s",
aspect, arg);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);