New options -osirrox and -cpx

This commit is contained in:
Thomas Schmitt 2008-05-22 21:08:26 +00:00
parent 47438e72c3
commit bcd057ae39
4 changed files with 31 additions and 3 deletions

View File

@ -1589,6 +1589,26 @@ Like -compare but working recursively. I.e. all file objects below both
addresses get compared whether they have counterparts below the other address addresses get compared whether they have counterparts below the other address
and whether both counterparts match. and whether both counterparts match.
.TP .TP
.B osirrox restore options:
.PP
Normally xorriso only writes to disk files which were given as stdio:
pseudo-drives or as log files.
But its alter ego, osirrox, is able to extract file objects
from ISO images and to create, overwrite, or delete file objects on disk.
.TP
\fB\-osirrox\fR "on"|"off"
Setting "off" disables disk filesystem manipulations. This is the default
unless the program was started with leafname "osirrox". Elsewise
the capability to restore files can be enabled explicitly by -osirrox "on".
.TP
\fB\-cpx\fR iso_rr_path [***] disk_path
Extract regular files from the ISO image and store them under the address given
by disk_path. If more then one iso_rr_path is given then disk_path must be
a directory or non-existent. In the latter case it gets created and the
extracted files get installed in it with the same leafnames.
.br
Missing directory components in disk_path will get created, if possible.
.TP
.B Command compatibility emulations: .B Command compatibility emulations:
.PP .PP
Writing of ISO 9660 on CD is traditionally done by program mkisofs Writing of ISO 9660 on CD is traditionally done by program mkisofs

View File

@ -8647,7 +8647,7 @@ int Xorriso_option_cpx(struct XorrisO *xorriso, int argc, char **argv,
ret= Sfile_add_to_path(eff_dest, leafname, 0); ret= Sfile_add_to_path(eff_dest, leafname, 0);
if(ret<=0) { if(ret<=0) {
sprintf(xorriso->info_text, "Effective path gets much too long (%d)", sprintf(xorriso->info_text, "Effective path gets much too long (%d)",
(int) (strlen(eff_dest)+strlen(leafname)+1i)); (int) (strlen(eff_dest)+strlen(leafname)+1));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
goto problem_handler; goto problem_handler;
} }
@ -9588,6 +9588,14 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" -compare_r disk_path iso_rr_path ", " -compare_r disk_path iso_rr_path ",
" Like -compare but affecting all files below directories.", " Like -compare but affecting all files below directories.",
"", "",
"Restore options (copying file objects from ISO image to disk filesystem):",
" -osirrox \"on\"|\"off\"",
" By default \"off\" the inverse operation of xorriso from ISO",
" image to disk filesystem is disabled. \"on\" allows xorriso",
" to create, overwrite, delete files in the disk filesystem.",
" -cpx iso_rr_path [***] disk_path",
" Copy regular files from ISO image to disk filesystem.",
"",
"Compatibility emulation (argument list may be ended by --):", "Compatibility emulation (argument list may be ended by --):",
" -as mkisofs [-help|-o|-R|-J|-V|-P|-f|-graft-points|-path-list|pathspecs]", " -as mkisofs [-help|-o|-R|-J|-V|-P|-f|-graft-points|-path-list|pathspecs]",
" Perform some mkisofs gestures, understand pathspecs as mkisofs", " Perform some mkisofs gestures, understand pathspecs as mkisofs",

View File

@ -1 +1 @@
#define Xorriso_timestamP "2008.05.22.192737" #define Xorriso_timestamP "2008.05.22.210835"

View File

@ -2445,7 +2445,7 @@ int Xorriso_restore_implict_properties(struct XorrisO *xorriso, IsoDir *dir,
int Xorriso_tree_restore_node(struct XorrisO *xorriso, IsoNode *node, int Xorriso_tree_restore_node(struct XorrisO *xorriso, IsoNode *node,
char *img_path, char *disk_path, int flag) char *img_path, char *disk_path, int flag)
{ {
int ret, write_fd= -1, wanted, wret; int ret= 0, write_fd= -1, wanted, wret;
char *what= "[unknown filetype]", sfe[5*SfileadrL], buf[32*1024]; char *what= "[unknown filetype]", sfe[5*SfileadrL], buf[32*1024];
off_t todo, size; off_t todo, size;
void *stream2= NULL; void *stream2= NULL;