|
|
|
@ -2,7 +2,7 @@
|
|
|
|
|
|
|
|
|
|
/* 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.
|
|
|
|
|
|
|
|
|
@ -1007,7 +1007,7 @@ int Xorriso_restore_disk_object(struct XorrisO *xorriso,
|
|
|
|
|
}
|
|
|
|
|
if(ret & 4) {
|
|
|
|
|
/* 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)
|
|
|
|
|
{ret= 0; goto ex;}
|
|
|
|
|
}
|
|
|
|
@ -1574,15 +1574,24 @@ attach_source:;
|
|
|
|
|
} else if(is_dir && !source_is_split) {
|
|
|
|
|
|
|
|
|
|
if(!node_register) {
|
|
|
|
|
if(new_dir_made) /* keep open and push to Permstack */
|
|
|
|
|
Xorriso_restore_properties(xorriso, disk_path, node,
|
|
|
|
|
if(new_dir_made) { /* keep open and push to Permstack */
|
|
|
|
|
ret= Xorriso_restore_properties(xorriso, disk_path, node,
|
|
|
|
|
2 | !!(flag&64));
|
|
|
|
|
if(ret <= 0) {
|
|
|
|
|
hret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
|
|
|
|
|
if(hret < 0)
|
|
|
|
|
goto ex;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(!(flag&32)) {
|
|
|
|
|
ret= Xorriso_restore_tree(xorriso, (IsoDir *) node, img_path, path,
|
|
|
|
|
(off_t) 0, NULL, flag & (2 | 64 | (3 << 7)));
|
|
|
|
|
if(ret<=0)
|
|
|
|
|
goto ex;
|
|
|
|
|
if(ret <= 0) {
|
|
|
|
|
hret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
|
|
|
|
|
if(hret < 0)
|
|
|
|
|
goto ex;
|
|
|
|
|
}
|
|
|
|
|
if(new_dir_made && !(flag&64))
|
|
|
|
|
/* set timestamps which Permstack_pop() will not set */
|
|
|
|
|
Xorriso_restore_properties(xorriso, disk_path, node, 2);
|
|
|
|
@ -1598,8 +1607,11 @@ attach_source:;
|
|
|
|
|
} else {
|
|
|
|
|
ret= Xorriso_restore_disk_object(xorriso, img_path, node, path,
|
|
|
|
|
offset, bytes, (flag & (2|4|64)) | !!(flag&8));
|
|
|
|
|
if(ret<=0)
|
|
|
|
|
goto ex;
|
|
|
|
|
if(ret <= 0) {
|
|
|
|
|
hret= Xorriso_eval_problem_status(xorriso, ret, 1 | 2);
|
|
|
|
|
if(hret < 0)
|
|
|
|
|
goto ex;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else
|
|
|
|
@ -1682,7 +1694,7 @@ int Xorriso_restore_node_array(struct XorrisO *xorriso, int flag)
|
|
|
|
|
}
|
|
|
|
|
if(ret & 4) {
|
|
|
|
|
/* 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)
|
|
|
|
|
{ret= 0; goto ex;}
|
|
|
|
|
}
|
|
|
|
|