Worked on failure severities, message system, program abort decision
This commit is contained in:
parent
9c87a830bb
commit
deef424796
@ -49,6 +49,7 @@ int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
char *handler_prefix= NULL;
|
char *handler_prefix= NULL;
|
||||||
|
char *queue_sev, *print_sev;
|
||||||
|
|
||||||
sprintf(xorriso->info_text, "Starting up libraries ...\n");
|
sprintf(xorriso->info_text, "Starting up libraries ...\n");
|
||||||
Xorriso_info(xorriso, 0);
|
Xorriso_info(xorriso, 0);
|
||||||
@ -62,19 +63,24 @@ int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag)
|
|||||||
}
|
}
|
||||||
ret= isoburn_initialize();
|
ret= isoburn_initialize();
|
||||||
if(ret==0) {
|
if(ret==0) {
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
/* >>> fetch all messages from library message queue first */
|
|
||||||
|
|
||||||
sprintf(xorriso->info_text, "Cannot initialize libraries");
|
sprintf(xorriso->info_text, "Cannot initialize libraries");
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
||||||
free(handler_prefix);
|
free(handler_prefix);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* >>> need option for controlling this in XorrisO */
|
queue_sev= "DEBUG";
|
||||||
/* >>> change from printing to queuing */
|
if(xorriso->library_msg_direct_print) {
|
||||||
iso_msgs_set_severities("NEVER", "DEBUG", "libisofs : ");
|
|
||||||
burn_msgs_set_severities("NEVER", "DEBUG", "libburn : ");
|
/* >>> need option for controlling this in XorrisO.
|
||||||
|
See also Xorriso_msgs_submit */;
|
||||||
|
|
||||||
|
print_sev= "DEBUG";
|
||||||
|
} else
|
||||||
|
print_sev= "NEVER";
|
||||||
|
iso_msgs_set_severities(queue_sev, print_sev, "libisofs : ");
|
||||||
|
burn_msgs_set_severities(queue_sev, print_sev, "libburn : ");
|
||||||
|
|
||||||
/* ??? >>> do we want united queues ? */
|
/* ??? >>> do we want united queues ? */
|
||||||
/* burn_set_messenger(iso_get_messenger()); */
|
/* burn_set_messenger(iso_get_messenger()); */
|
||||||
@ -82,6 +88,7 @@ int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag)
|
|||||||
sprintf(handler_prefix, "%s : ", xorriso->progname);
|
sprintf(handler_prefix, "%s : ", xorriso->progname);
|
||||||
burn_set_signal_handling(handler_prefix, NULL, 0);
|
burn_set_signal_handling(handler_prefix, NULL, 0);
|
||||||
|
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
sprintf(xorriso->info_text, "Library startup done.\n");
|
sprintf(xorriso->info_text, "Library startup done.\n");
|
||||||
Xorriso_info(xorriso, 0);
|
Xorriso_info(xorriso, 0);
|
||||||
free(handler_prefix);
|
free(handler_prefix);
|
||||||
@ -113,10 +120,8 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
|||||||
return(ret);
|
return(ret);
|
||||||
|
|
||||||
ret= isoburn_drive_scan_and_grab(&dinfo, adr, 1);
|
ret= isoburn_drive_scan_and_grab(&dinfo, adr, 1);
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
if(ret<=0) {
|
if(ret<=0) {
|
||||||
|
|
||||||
/* >>> fetch all messages from library message queue first */
|
|
||||||
|
|
||||||
sprintf(xorriso->info_text,"Cannot aquire drive '%s'", adr);
|
sprintf(xorriso->info_text,"Cannot aquire drive '%s'", adr);
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||||
return(0);
|
return(0);
|
||||||
@ -132,6 +137,7 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
|||||||
|
|
||||||
/* check for invalid state */
|
/* check for invalid state */
|
||||||
state= isoburn_disc_get_status(drive);
|
state= isoburn_disc_get_status(drive);
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
|
|
||||||
/* >>> show drive and media status */;
|
/* >>> show drive and media status */;
|
||||||
|
|
||||||
@ -149,9 +155,7 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
|||||||
ropts.mode= 0555;
|
ropts.mode= 0555;
|
||||||
|
|
||||||
if(isoburn_read_volset(drive, &ropts, &volset) <= 0) {
|
if(isoburn_read_volset(drive, &ropts, &volset) <= 0) {
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
/* >>> fetch all messages from library message queue first */
|
|
||||||
|
|
||||||
sprintf(xorriso->info_text,"Caninot read ISO image volset");
|
sprintf(xorriso->info_text,"Caninot read ISO image volset");
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||||
ret= 0; goto ex;
|
ret= 0; goto ex;
|
||||||
@ -164,6 +168,7 @@ ex:
|
|||||||
/* >>> ??? give up not-so-suitable drive ? */;
|
/* >>> ??? give up not-so-suitable drive ? */;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -204,6 +209,7 @@ int Xorriso_give_up_drive(struct XorrisO *xorriso, int flag)
|
|||||||
xorriso->out_drive_handle= NULL;
|
xorriso->out_drive_handle= NULL;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,9 +254,7 @@ int Xorriso_write_growing(struct XorrisO *xorriso, int flag)
|
|||||||
/* >>> -fs : isoburn_prepare_disc() needs fifo parameters */
|
/* >>> -fs : isoburn_prepare_disc() needs fifo parameters */
|
||||||
|
|
||||||
if (isoburn_prepare_disc(drive, &disc, &sopts) <= 0) {
|
if (isoburn_prepare_disc(drive, &disc, &sopts) <= 0) {
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
/* >>> fetch all messages from library message queue first */
|
|
||||||
|
|
||||||
sprintf(xorriso->info_text,"Cannot prepare disc");
|
sprintf(xorriso->info_text,"Cannot prepare disc");
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||||
return(0);
|
return(0);
|
||||||
@ -258,9 +262,7 @@ int Xorriso_write_growing(struct XorrisO *xorriso, int flag)
|
|||||||
|
|
||||||
burn_options= burn_write_opts_new(drive);
|
burn_options= burn_write_opts_new(drive);
|
||||||
if(burn_options==NULL) {
|
if(burn_options==NULL) {
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
/* >>> fetch all messages from library message queue first */
|
|
||||||
|
|
||||||
sprintf(xorriso->info_text,"Cannot allocate option set");
|
sprintf(xorriso->info_text,"Cannot allocate option set");
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||||
return(0);
|
return(0);
|
||||||
@ -278,13 +280,17 @@ int Xorriso_write_growing(struct XorrisO *xorriso, int flag)
|
|||||||
return(ret);
|
return(ret);
|
||||||
|
|
||||||
ret= isoburn_activate_session(drive);
|
ret= isoburn_activate_session(drive);
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
if(ret<=0) {
|
if(ret<=0) {
|
||||||
fprintf(stderr, "--- Could not write new set olf volume descriptors\n");
|
sprintf(xorriso->info_text,
|
||||||
|
"Could not write new set of volume descriptors");
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* >>> cleanup disc ? */
|
/* >>> cleanup disc ? */
|
||||||
|
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -311,9 +317,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
|||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
|
||||||
|
|
||||||
for(i= 0; i<10; i++) {
|
for(i= 0; i<10; i++) {
|
||||||
|
Xorriso_process_msg_queues(xorriso, 0);
|
||||||
/* >>> check message system of libburn */;
|
|
||||||
|
|
||||||
usleep(100000);
|
usleep(100000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -333,9 +337,7 @@ int Xorriso_graft_in(struct XorrisO *xorriso, char *disk_path, char *img_path,
|
|||||||
struct stat stbuf;
|
struct stat stbuf;
|
||||||
|
|
||||||
if(xorriso->in_volset_handle==NULL) {
|
if(xorriso->in_volset_handle==NULL) {
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
/* >>> fetch all messages from library message queue first */
|
|
||||||
|
|
||||||
sprintf(xorriso->info_text,"No volset is loaded.");
|
sprintf(xorriso->info_text,"No volset is loaded.");
|
||||||
if(xorriso->indev[0]==0)
|
if(xorriso->indev[0]==0)
|
||||||
sprintf(xorriso->info_text," No -dev or -indev is selected.");
|
sprintf(xorriso->info_text," No -dev or -indev is selected.");
|
||||||
@ -353,9 +355,7 @@ int Xorriso_graft_in(struct XorrisO *xorriso, char *disk_path, char *img_path,
|
|||||||
(struct iso_volset *) xorriso->in_volset_handle, 0);
|
(struct iso_volset *) xorriso->in_volset_handle, 0);
|
||||||
|
|
||||||
if(lstat(disk_path, &stbuf) == -1) {
|
if(lstat(disk_path, &stbuf) == -1) {
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
/* >>> fetch all messages from library message queue first */
|
|
||||||
|
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"Cannot determine attributes of source file '%s'",disk_path);
|
"Cannot determine attributes of source file '%s'",disk_path);
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "SORRY", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "SORRY", 0);
|
||||||
@ -364,9 +364,7 @@ int Xorriso_graft_in(struct XorrisO *xorriso, char *disk_path, char *img_path,
|
|||||||
if(S_ISDIR(stbuf.st_mode))
|
if(S_ISDIR(stbuf.st_mode))
|
||||||
is_dir= 1;
|
is_dir= 1;
|
||||||
else if(!(S_ISREG(stbuf.st_mode) || S_ISLNK(stbuf.st_mode))) {
|
else if(!(S_ISREG(stbuf.st_mode) || S_ISLNK(stbuf.st_mode))) {
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
/* >>> fetch all messages from library message queue first */
|
|
||||||
|
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"Source file '%s' is of non-supported file type", disk_path);
|
"Source file '%s' is of non-supported file type", disk_path);
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||||
@ -386,9 +384,7 @@ int Xorriso_graft_in(struct XorrisO *xorriso, char *disk_path, char *img_path,
|
|||||||
|
|
||||||
dir= iso_volume_get_root(volume);
|
dir= iso_volume_get_root(volume);
|
||||||
if(dir==NULL) {
|
if(dir==NULL) {
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
/* >>> fetch all messages from library message queue first */
|
|
||||||
|
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"While grafting '%s' : no root node available", img_path);
|
"While grafting '%s' : no root node available", img_path);
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
||||||
@ -411,13 +407,13 @@ int Xorriso_graft_in(struct XorrisO *xorriso, char *disk_path, char *img_path,
|
|||||||
node= iso_tree_volume_path_to_node(volume,path);
|
node= iso_tree_volume_path_to_node(volume,path);
|
||||||
if(node!=NULL) {
|
if(node!=NULL) {
|
||||||
if(iso_tree_node_get_type(node)!=LIBISO_NODE_DIR) {
|
if(iso_tree_node_get_type(node)!=LIBISO_NODE_DIR) {
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
|
|
||||||
if(done) {
|
if(done) {
|
||||||
|
|
||||||
/* >>> handle overwrite situation */;
|
/* >>> handle overwrite situation */;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"While grafting '%s' : '%s' exists and is not a directory",
|
"While grafting '%s' : '%s' exists and is not a directory",
|
||||||
img_path, path);
|
img_path, path);
|
||||||
@ -428,9 +424,7 @@ int Xorriso_graft_in(struct XorrisO *xorriso, char *disk_path, char *img_path,
|
|||||||
} else if(is_dir || !done) {
|
} else if(is_dir || !done) {
|
||||||
dir= iso_tree_add_dir(dir, apt);
|
dir= iso_tree_add_dir(dir, apt);
|
||||||
if(dir==NULL) {
|
if(dir==NULL) {
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
/* >>> fetch all messages from library message queue first */
|
|
||||||
|
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"While grafting '%s' : could not insert '%s'", img_path, path);
|
"While grafting '%s' : could not insert '%s'", img_path, path);
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||||
@ -444,9 +438,7 @@ attach_source:;
|
|||||||
} else {
|
} else {
|
||||||
node= iso_tree_add_node(dir, disk_path);
|
node= iso_tree_add_node(dir, disk_path);
|
||||||
if(node == NULL) {
|
if(node == NULL) {
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
/* >>> fetch all messages from library message queue first */
|
|
||||||
|
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"While grafting '%s'='%s' : libisofs_errno = %d",
|
"While grafting '%s'='%s' : libisofs_errno = %d",
|
||||||
img_path, disk_path, libisofs_errno);
|
img_path, disk_path, libisofs_errno);
|
||||||
@ -458,6 +450,7 @@ attach_source:;
|
|||||||
} else
|
} else
|
||||||
*npt= '/';
|
*npt= '/';
|
||||||
}
|
}
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"Added %s '%s'='%s'", (is_dir ? "directory" : "node"),
|
"Added %s '%s'='%s'", (is_dir ? "directory" : "node"),
|
||||||
img_path, disk_path);
|
img_path, disk_path);
|
||||||
@ -479,3 +472,31 @@ int Xorriso__text_to_sev(char *severity_name, int *severity_number, int flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int Xorriso_process_msg_queues(struct XorrisO *xorriso, int flag)
|
||||||
|
{
|
||||||
|
int ret, error_code= 0, os_errno= 0, count= 0, pass;
|
||||||
|
char severity[80];
|
||||||
|
|
||||||
|
for(pass= 0; pass< 2; pass++) {
|
||||||
|
while(1) {
|
||||||
|
if(pass==0)
|
||||||
|
ret= iso_msgs_obtain("ALL", &error_code, xorriso->info_text, &os_errno,
|
||||||
|
severity);
|
||||||
|
else
|
||||||
|
ret= burn_msgs_obtain("ALL", &error_code, xorriso->info_text, &os_errno,
|
||||||
|
severity);
|
||||||
|
if(ret<=0)
|
||||||
|
break;
|
||||||
|
Xorriso_msgs_submit(xorriso, error_code, xorriso->info_text, os_errno,
|
||||||
|
severity, 0);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(xorriso->library_msg_direct_print && count>0) {
|
||||||
|
sprintf(xorriso->info_text," (%d library messages repeated by xorriso)\n",
|
||||||
|
count);
|
||||||
|
Xorriso_info(xorriso, 0);
|
||||||
|
}
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user