Bug fix: -extract was not immediately aborted if -abort_on was triggered

This commit is contained in:
Thomas Schmitt 2011-08-16 16:05:11 +00:00
parent 2097f2406a
commit bacf9be002
4 changed files with 29 additions and 17 deletions

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net> Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later. Provided under GPL version 2 or later.
@ -1413,7 +1413,7 @@ int Xorriso_restore_sorted(struct XorrisO *xorriso, int count,
(off_t) 0, (off_t) 0, hflag); (off_t) 0, (off_t) 0, hflag);
if(ret <= 0) { if(ret <= 0) {
(*problem_count)++; (*problem_count)++;
hret= Xorriso_eval_problem_status(xorriso, ret, 0); hret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
if(hret < 0) if(hret < 0)
goto ex; goto ex;
} }
@ -1436,7 +1436,7 @@ int Xorriso_restore_sorted(struct XorrisO *xorriso, int count,
(off_t) 0, (off_t) 0, (2 << 7) | (flag & 32)); (off_t) 0, (off_t) 0, (2 << 7) | (flag & 32));
if(ret <= 0) { if(ret <= 0) {
(*problem_count)++; (*problem_count)++;
hret= Xorriso_eval_problem_status(xorriso, ret, 0); hret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
if(hret < 0) if(hret < 0)
goto ex; goto ex;
} }
@ -1456,8 +1456,8 @@ int Xorriso_restore_sorted(struct XorrisO *xorriso, int count,
(off_t) 0, (off_t) 0, flag & 32); (off_t) 0, (off_t) 0, flag & 32);
if(ret <= 0) { if(ret <= 0) {
(*problem_count)++; (*problem_count)++;
hret= Xorriso_eval_problem_status(xorriso, ret, 0); hret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
if(ret < 0) if(hret < 0)
goto ex; goto ex;
} }
} }

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net> Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later. Provided under GPL version 2 or later.
@ -581,7 +581,7 @@ int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv,
if(ret>0 && !xorriso->request_to_abort) if(ret>0 && !xorriso->request_to_abort)
continue; /* regular bottom of loop */ continue; /* regular bottom of loop */
was_failure= 1; was_failure= 1;
fret= Xorriso_eval_problem_status(xorriso, ret, 2); fret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
if(fret>=0) if(fret>=0)
continue; continue;
goto ex; goto ex;

View File

@ -2,7 +2,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net> Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later. Provided under GPL version 2 or later.
@ -1007,7 +1007,7 @@ int Xorriso_restore_disk_object(struct XorrisO *xorriso,
} }
if(ret & 4) { if(ret & 4) {
/* Found siblings with non-NULL target, but did not link. */ /* Found siblings with non-NULL target, but did not link. */
ret= Xorriso_eval_problem_status(xorriso, 1, 0); ret= Xorriso_eval_problem_status(xorriso, 1, 1 | 2);
if(ret < 0) if(ret < 0)
{ret= 0; goto ex;} {ret= 0; goto ex;}
} }
@ -1574,15 +1574,24 @@ attach_source:;
} else if(is_dir && !source_is_split) { } else if(is_dir && !source_is_split) {
if(!node_register) { if(!node_register) {
if(new_dir_made) /* keep open and push to Permstack */ if(new_dir_made) { /* keep open and push to Permstack */
Xorriso_restore_properties(xorriso, disk_path, node, ret= Xorriso_restore_properties(xorriso, disk_path, node,
2 | !!(flag&64)); 2 | !!(flag&64));
if(ret <= 0) {
hret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
if(hret < 0)
goto ex;
}
}
} }
if(!(flag&32)) { if(!(flag&32)) {
ret= Xorriso_restore_tree(xorriso, (IsoDir *) node, img_path, path, ret= Xorriso_restore_tree(xorriso, (IsoDir *) node, img_path, path,
(off_t) 0, NULL, flag & (2 | 64 | (3 << 7))); (off_t) 0, NULL, flag & (2 | 64 | (3 << 7)));
if(ret<=0) if(ret <= 0) {
goto ex; hret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
if(hret < 0)
goto ex;
}
if(new_dir_made && !(flag&64)) if(new_dir_made && !(flag&64))
/* set timestamps which Permstack_pop() will not set */ /* set timestamps which Permstack_pop() will not set */
Xorriso_restore_properties(xorriso, disk_path, node, 2); Xorriso_restore_properties(xorriso, disk_path, node, 2);
@ -1598,8 +1607,11 @@ attach_source:;
} else { } else {
ret= Xorriso_restore_disk_object(xorriso, img_path, node, path, ret= Xorriso_restore_disk_object(xorriso, img_path, node, path,
offset, bytes, (flag & (2|4|64)) | !!(flag&8)); offset, bytes, (flag & (2|4|64)) | !!(flag&8));
if(ret<=0) if(ret <= 0) {
goto ex; hret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
if(hret < 0)
goto ex;
}
} }
} }
} else } else
@ -1682,7 +1694,7 @@ int Xorriso_restore_node_array(struct XorrisO *xorriso, int flag)
} }
if(ret & 4) { if(ret & 4) {
/* Found elder siblings, but did not link. */ /* Found elder siblings, but did not link. */
ret= Xorriso_eval_problem_status(xorriso, 1, 0); ret= Xorriso_eval_problem_status(xorriso, 1, 1 | 2);
if(ret < 0) if(ret < 0)
{ret= 0; goto ex;} {ret= 0; goto ex;}
} }

View File

@ -1 +1 @@
#define Xorriso_timestamP "2011.08.15.132616" #define Xorriso_timestamP "2011.08.15.171835"