Now loading libraries before -version, pacifier for -add
This commit is contained in:
@ -291,12 +291,13 @@ int Xorriso__sev_to_text(int severity, char **severity_name,
|
||||
|
||||
|
||||
/* @param flag bit0=report libisofs error text */
|
||||
int Xorriso_report_iso_error(struct XorrisO *xorriso,
|
||||
int Xorriso_report_iso_error(struct XorrisO *xorriso, char *victim,
|
||||
int iso_error_code, char msg_text[], int os_errno,
|
||||
char min_severity[], int flag)
|
||||
{
|
||||
int error_code, iso_sev, min_sev, ret;
|
||||
char *sev_text_pt, *msg_text_pt= NULL;
|
||||
char sfe[6*SfileadrL];
|
||||
|
||||
error_code= 0x00050000;
|
||||
|
||||
@ -315,8 +316,12 @@ int Xorriso_report_iso_error(struct XorrisO *xorriso,
|
||||
if(min_sev < iso_sev)
|
||||
/* >>> with libburn-0.4.4 do: burn_sev_to_text(iso_sev, &sev_text_pt, 0); */
|
||||
Xorriso__sev_to_text(iso_sev, &sev_text_pt, 0);
|
||||
ret= Xorriso_msgs_submit(xorriso, error_code, msg_text_pt,
|
||||
os_errno, sev_text_pt, 0);
|
||||
strcpy(sfe, msg_text_pt);
|
||||
if(victim[0]) {
|
||||
strcat(sfe, ": ");
|
||||
Text_shellsafe(victim, sfe+strlen(sfe), 0);
|
||||
}
|
||||
ret= Xorriso_msgs_submit(xorriso, error_code, sfe, os_errno, sev_text_pt, 0);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
@ -384,7 +389,8 @@ int Xorriso_create_empty_iso(struct XorrisO *xorriso, int flag)
|
||||
isoburn_ropt_destroy(&ropts, 0);
|
||||
if(ret<=0) {
|
||||
sprintf(xorriso->info_text, "Failed to create new empty ISO image object");
|
||||
Xorriso_report_iso_error(xorriso, ret, xorriso->info_text, 0, "FATAL", 0);
|
||||
Xorriso_report_iso_error(xorriso, "", ret, xorriso->info_text, 0, "FATAL",
|
||||
0);
|
||||
return(-1);
|
||||
}
|
||||
xorriso->in_volset_handle= (void *) volset;
|
||||
@ -868,6 +874,9 @@ ex:;
|
||||
}
|
||||
|
||||
|
||||
/* This loop watches burn runs until they end.
|
||||
It issues pacifying update messages to the user.
|
||||
*/
|
||||
int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
||||
int flag)
|
||||
{
|
||||
@ -1115,7 +1124,7 @@ int Xorriso_add_tree(struct XorrisO *xorriso, IsoDir *dir,
|
||||
int ret, target_is_dir, source_is_dir, source_is_link, fret, was_failure= 0;
|
||||
int do_not_dive;
|
||||
struct DirseQ *dirseq= NULL;
|
||||
char *name, *img_name, *srcpt;
|
||||
char *name, *img_name, *srcpt, *stbuf_src= "";
|
||||
struct stat stbuf, hstbuf;
|
||||
dev_t dir_dev;
|
||||
struct LinkiteM *own_link_stack;
|
||||
@ -1148,12 +1157,14 @@ int Xorriso_add_tree(struct XorrisO *xorriso, IsoDir *dir,
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
|
||||
stbuf_src= disk_dir_path;
|
||||
if(lstat(disk_dir_path, &stbuf)==-1)
|
||||
goto cannot_open_dir;
|
||||
dir_dev= stbuf.st_dev;
|
||||
if(S_ISLNK(stbuf.st_mode)) {
|
||||
if(!(xorriso->do_follow_links || (xorriso->do_follow_param && !(flag&1))))
|
||||
{ret= 2; goto ex;}
|
||||
stbuf_src= disk_dir_path;
|
||||
if(stat(disk_dir_path, &stbuf)==-1)
|
||||
goto cannot_open_dir;
|
||||
if(dir_dev != stbuf.st_dev &&
|
||||
@ -1186,6 +1197,7 @@ cannot_open_dir:;
|
||||
img_name= img_path+strlen(img_path);
|
||||
|
||||
while(1) { /* loop over directory content */
|
||||
stbuf_src= "";
|
||||
Linkitem_reset_stack(&own_link_stack, link_stack, 0);
|
||||
srcpt= disk_path;
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
@ -1202,6 +1214,7 @@ cannot_open_dir:;
|
||||
{ret= 0; goto was_problem;}
|
||||
if(Xorriso_much_too_long(xorriso, strlen(srcpt), 0)<=0)
|
||||
{ret= 0; goto was_problem;}
|
||||
stbuf_src= srcpt;
|
||||
if(lstat(srcpt, &stbuf)==-1) {
|
||||
cannot_lstat:;
|
||||
sprintf(xorriso->info_text,
|
||||
@ -1222,6 +1235,7 @@ cannot_lstat:;
|
||||
if(ret<=0)
|
||||
goto was_problem;
|
||||
srcpt= link_target;
|
||||
stbuf_src= srcpt;
|
||||
if(lstat(srcpt, &stbuf)==-1)
|
||||
goto cannot_lstat;
|
||||
} else {
|
||||
@ -1295,15 +1309,15 @@ cannot_lstat:;
|
||||
if(ret<=0)
|
||||
goto was_problem;
|
||||
} else {
|
||||
Xorriso_report_iso_error(xorriso, ret, "Cannot create symbolic link",
|
||||
0, "SORRY", 1);
|
||||
Xorriso_report_iso_error(xorriso, stbuf_src, ret,
|
||||
"Cannot create symbolic link", 0, "SORRY", 1);
|
||||
{ret= 0; goto was_problem;}
|
||||
}
|
||||
} else {
|
||||
ret= iso_tree_add_node(volume, dir, srcpt, &node);
|
||||
if(ret<0) {
|
||||
Xorriso_report_iso_error(xorriso, ret, "Cannot add node to tree",
|
||||
0, "SORRY", 1);
|
||||
Xorriso_report_iso_error(xorriso, stbuf_src, ret,
|
||||
"Cannot add node to tree", 0, "SORRY", 1);
|
||||
goto was_problem;
|
||||
}
|
||||
}
|
||||
@ -1315,6 +1329,12 @@ cannot_lstat:;
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||
ret=0; goto was_problem;
|
||||
}
|
||||
|
||||
xorriso->pacifier_count++;
|
||||
if(xorriso->pacifier_count%100)
|
||||
Xorriso_pacifier_callback(xorriso, "files added", xorriso->pacifier_count,
|
||||
xorriso->pacifier_total, "", 0);
|
||||
|
||||
xorriso->volset_change_pending= 1;
|
||||
if(source_is_dir) {
|
||||
if(do_not_dive) {
|
||||
@ -1501,8 +1521,8 @@ handle_path_node:;
|
||||
ret= iso_tree_add_new_dir(dir, apt, &hdir);
|
||||
if(ret<0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
Xorriso_report_iso_error(xorriso, ret, "Cannot create directory",
|
||||
0, "SORRY", 1);
|
||||
Xorriso_report_iso_error(xorriso, img_path, ret,
|
||||
"Cannot create directory", 0, "SORRY", 1);
|
||||
sprintf(xorriso->info_text,
|
||||
"While grafting '%s' : could not insert '%s'", img_path, path);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||
@ -1520,6 +1540,11 @@ handle_path_node:;
|
||||
}
|
||||
if(done) {
|
||||
attach_source:;
|
||||
xorriso->pacifier_count++;
|
||||
if(xorriso->pacifier_count%100)
|
||||
Xorriso_pacifier_callback(xorriso, "files added",
|
||||
xorriso->pacifier_count,
|
||||
xorriso->pacifier_total, "", 0);
|
||||
if(flag&1) {
|
||||
/* directory node was created above */;
|
||||
|
||||
@ -1533,7 +1558,7 @@ attach_source:;
|
||||
ret= iso_tree_add_node(volume, dir, disk_path, &node);
|
||||
if(ret<0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
Xorriso_report_iso_error(xorriso, ret, "Cannot create node",
|
||||
Xorriso_report_iso_error(xorriso, img_path, ret, "Cannot create node",
|
||||
0, "SORRY", 1);
|
||||
sprintf(xorriso->info_text, "Grafting failed: %s = %s",
|
||||
Text_shellsafe(img_path,sfe,0), Text_shellsafe(disk_path,sfe2,0));
|
||||
@ -2011,7 +2036,7 @@ int Xorriso_format_media(struct XorrisO *xorriso, int flag)
|
||||
int Xorriso_cannot_create_iter(struct XorrisO *xorriso, int iso_error,int flag)
|
||||
{
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
Xorriso_report_iso_error(xorriso, iso_error, "Cannot create iter", 0,
|
||||
Xorriso_report_iso_error(xorriso, "", iso_error, "Cannot create iter", 0,
|
||||
"FATAL", 1);
|
||||
sprintf(xorriso->info_text, "Cannot create IsoDirIter object");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
||||
@ -2207,7 +2232,8 @@ dir_not_removed:;
|
||||
ret= iso_node_remove(victim_node);
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(ret<0) {
|
||||
Xorriso_report_iso_error(xorriso, ret, "Cannot remove node", 0, "FATAL", 1);
|
||||
Xorriso_report_iso_error(xorriso, path, ret, "Cannot remove node", 0,
|
||||
"FATAL", 1);
|
||||
sprintf(xorriso->info_text,
|
||||
"Internal failure to remove %s from loaded ISO image",
|
||||
Text_shellsafe(path, sfe, 0));
|
||||
@ -2926,7 +2952,7 @@ int Xorriso_rename(struct XorrisO *xorriso, char *origin, char *dest, int flag)
|
||||
ret= iso_node_take(node);
|
||||
if(ret<0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
Xorriso_report_iso_error(xorriso, 0, "Cannot take", 0, "FATAL", 1);
|
||||
Xorriso_report_iso_error(xorriso, eff_dest, 0, "Cannot take", 0, "FATAL",1);
|
||||
sprintf(xorriso->info_text,
|
||||
"Internal error on rename: failed to take node");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
||||
@ -2935,7 +2961,7 @@ int Xorriso_rename(struct XorrisO *xorriso, char *origin, char *dest, int flag)
|
||||
ret= iso_dir_add_node(dest_dir, node, 0);
|
||||
if(ret<0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
Xorriso_report_iso_error(xorriso, 0, "Cannot add", 0, "FATAL", 1);
|
||||
Xorriso_report_iso_error(xorriso, eff_dest, 0, "Cannot add", 0, "FATAL", 1);
|
||||
sprintf(xorriso->info_text,
|
||||
"Internal error on rename: failed to insert node");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
||||
@ -2954,7 +2980,8 @@ int Xorriso_rename(struct XorrisO *xorriso, char *origin, char *dest, int flag)
|
||||
ret= 1;
|
||||
if(ret<0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
Xorriso_report_iso_error(xorriso, 0, "Cannot set name", 0, "FATAL", 1);
|
||||
Xorriso_report_iso_error(xorriso, eff_dest, 0, "Cannot set name", 0,
|
||||
"FATAL", 1);
|
||||
sprintf(xorriso->info_text, "Internal error on rename: failed to set name");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
||||
return(-1);
|
||||
@ -3494,3 +3521,31 @@ int Xorriso_set_abort_severity(struct XorrisO *xorriso, int flag)
|
||||
return(ret>=0);
|
||||
}
|
||||
|
||||
|
||||
int Xorriso_report_lib_versions(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
int major, minor, micro;
|
||||
int req_major, req_minor, req_micro;
|
||||
|
||||
iso_lib_version(&major, &minor, µ);
|
||||
isoburn_libisofs_req(&req_major, &req_minor, &req_micro);
|
||||
sprintf(xorriso->result_line,
|
||||
"libisofs in use : %d.%d.%d (min. %d.%d.%d)\n",
|
||||
major, minor, micro, req_major, req_minor, req_micro);
|
||||
Xorriso_result(xorriso, 0);
|
||||
burn_version(&major, &minor, µ);
|
||||
isoburn_libburn_req(&req_major, &req_minor, &req_micro);
|
||||
sprintf(xorriso->result_line,
|
||||
"libburn in use : %d.%d.%d (min. %d.%d.%d)\n",
|
||||
major, minor, micro, req_major, req_minor, req_micro);
|
||||
Xorriso_result(xorriso, 0);
|
||||
isoburn_version(&major, &minor, µ);
|
||||
sprintf(xorriso->result_line,
|
||||
"libisoburn in use : %d.%d.%d (min. %d.%d.%d)\n",
|
||||
major, minor, micro,
|
||||
isoburn_header_version_major, isoburn_header_version_minor,
|
||||
isoburn_header_version_micro);
|
||||
Xorriso_result(xorriso, 0);
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user