Rectified usage of original xorriso options underneath growisofs
This commit is contained in:
parent
ae7e36ed50
commit
8491645aed
@ -2,7 +2,7 @@
|
|||||||
.\" First parameter, NAME, should be all caps
|
.\" First parameter, NAME, should be all caps
|
||||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||||
.\" other parameters are allowed: see man(7), man(1)
|
.\" other parameters are allowed: see man(7), man(1)
|
||||||
.TH XORRISO 1 "Jul, 16, 2008"
|
.TH XORRISO 1 "Jul, 17, 2008"
|
||||||
.\" Please adjust this date whenever revising the manpage.
|
.\" Please adjust this date whenever revising the manpage.
|
||||||
.\"
|
.\"
|
||||||
.\" Some roff macros, for reference:
|
.\" Some roff macros, for reference:
|
||||||
@ -1762,11 +1762,11 @@ Personality "\fBmkisofs\fR" accepts the options listed with:
|
|||||||
.br
|
.br
|
||||||
-as mkisofs -help --
|
-as mkisofs -help --
|
||||||
.br
|
.br
|
||||||
Among them: -R (always on), -J, -o, -M, -C, -path-list, -m, -exclude-list, -f,
|
Among them: -R (always on), -J, -o, -M, -C, -path-list, -m, -exclude-list,
|
||||||
-print-size, -pad, -no-pad, -V, -v, -version, -graft-points,
|
-f, -print-size, -pad, -no-pad, -V, -v, -version, -graft-points,
|
||||||
pathspecs as with xorriso -add. A lot of options are not supported and lead
|
pathspecs as with xorriso -add.
|
||||||
to failure of the mkisofs emulation. Some are ignored,
|
A lot of options are not supported and lead to failure of the mkisofs
|
||||||
but better do not rely on this tolerance.
|
emulation. Some are ignored, but better do not rely on this tolerance.
|
||||||
.br
|
.br
|
||||||
-graft-points is equivalent to -pathspecs on. Note that pathspecs without "="
|
-graft-points is equivalent to -pathspecs on. Note that pathspecs without "="
|
||||||
are interpreted differently than with xorriso option -add. Directories get
|
are interpreted differently than with xorriso option -add. Directories get
|
||||||
@ -1779,9 +1779,9 @@ the end of a "mkisofs" option list. Verbosity settings -v (= "UPDATE") and
|
|||||||
persists until things happen like -commit, -rollback, -dev, or end of xorriso.
|
persists until things happen like -commit, -rollback, -dev, or end of xorriso.
|
||||||
-pacifier gets set to "mkisofs" if files are added to the image.
|
-pacifier gets set to "mkisofs" if files are added to the image.
|
||||||
.br
|
.br
|
||||||
If no output file was chosen before or during a "mkisofs" option list, then
|
If pathspecs are given and if no output file was chosen before or during the
|
||||||
standard output (-outdev "-") will get into effect before pathspecs get
|
"mkisofs" option list, then standard output (-outdev "-") will get into effect.
|
||||||
added. If -o points to a regular file, then it will be truncated to 0 bytes
|
If -o points to a regular file, then it will be truncated to 0 bytes
|
||||||
when finally writing begins. This truncation does not happen if the drive
|
when finally writing begins. This truncation does not happen if the drive
|
||||||
is chosen by xorriso options before or after -as mkisofs.
|
is chosen by xorriso options before or after -as mkisofs.
|
||||||
Directories and symbolic links are no valid -o targets.
|
Directories and symbolic links are no valid -o targets.
|
||||||
@ -2180,7 +2180,7 @@ Add cdrskin option --grow_overwriteable_iso to all -as cdrecord runs
|
|||||||
in order to enable multi-session emulation on overwriteable media.
|
in order to enable multi-session emulation on overwriteable media.
|
||||||
.SS
|
.SS
|
||||||
.B Let xorriso work underneath growisofs
|
.B Let xorriso work underneath growisofs
|
||||||
growisofs expects an ISO formatter program which understands options -o, -C,
|
growisofs expects an ISO formatter program which understands options -C and
|
||||||
-M. If xorriso gets started by name "xorrisofs" then it is suitable for that.
|
-M. If xorriso gets started by name "xorrisofs" then it is suitable for that.
|
||||||
.br
|
.br
|
||||||
\fB$\fR export MKISOFS="xorrisofs"
|
\fB$\fR export MKISOFS="xorrisofs"
|
||||||
@ -2196,6 +2196,15 @@ a link pointing to the xorriso binary and tell growisofs to use it. E.g. by:
|
|||||||
.br
|
.br
|
||||||
\fB$\fR export MKISOFS="$HOME/xorrisofs"
|
\fB$\fR export MKISOFS="$HOME/xorrisofs"
|
||||||
.br
|
.br
|
||||||
|
One may quit mkisofs emulation by argument "--" and make
|
||||||
|
use of all xorriso commands. growisofs dislikes options which
|
||||||
|
start with "-o" but -outdev must be set to "-".
|
||||||
|
So use "outdev" instead:
|
||||||
|
.br
|
||||||
|
\fB$\fR growisofs -Z /dev/dvd -- outdev - -update_r /my/files /files
|
||||||
|
.br
|
||||||
|
\fB$\fR growisofs -M /dev/dvd -- outdev - -update_r /my/files /files
|
||||||
|
.br
|
||||||
growisofs has excellent burn capabilities with DVD and BD.
|
growisofs has excellent burn capabilities with DVD and BD.
|
||||||
It does not emulate session history on overwriteable media, though.
|
It does not emulate session history on overwriteable media, though.
|
||||||
.SS
|
.SS
|
||||||
|
@ -2947,10 +2947,12 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
|||||||
else if(strcmp(leafname, "xorrisofs")==0 || strcmp(leafname, "genisofs")==0 ||
|
else if(strcmp(leafname, "xorrisofs")==0 || strcmp(leafname, "genisofs")==0 ||
|
||||||
strcmp(leafname, "mkisofs")==0 || strcmp(leafname, "genisoimage")==0) {
|
strcmp(leafname, "mkisofs")==0 || strcmp(leafname, "genisoimage")==0) {
|
||||||
m->argument_emulation= 1;
|
m->argument_emulation= 1;
|
||||||
|
m->pacifier_style= 1;
|
||||||
Xorriso_protect_stdout(*xorriso, 0);
|
Xorriso_protect_stdout(*xorriso, 0);
|
||||||
} else if(strcmp(leafname, "xorrecord")==0 || strcmp(leafname, "wodim")==0 ||
|
} else if(strcmp(leafname, "xorrecord")==0 || strcmp(leafname, "wodim")==0 ||
|
||||||
strcmp(leafname, "cdrecord")==0 || strcmp(leafname, "cdrskin")==0) {
|
strcmp(leafname, "cdrecord")==0 || strcmp(leafname, "cdrskin")==0) {
|
||||||
m->argument_emulation= 2;
|
m->argument_emulation= 2;
|
||||||
|
m->pacifier_style= 2;
|
||||||
}
|
}
|
||||||
ret= Exclusions_new(&(m->disk_exclusions), 0);
|
ret= Exclusions_new(&(m->disk_exclusions), 0);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
@ -4202,8 +4204,8 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
|||||||
|
|
||||||
is_default= (xorriso->pacifier_style==0);
|
is_default= (xorriso->pacifier_style==0);
|
||||||
sprintf(line,"-pacifier '%s'\n",
|
sprintf(line,"-pacifier '%s'\n",
|
||||||
xorriso->pacifier_style==2 ? "mkisofs" :
|
xorriso->pacifier_style==1 ? "mkisofs" :
|
||||||
xorriso->pacifier_style==1 ? "cdrecord" : "xorriso");
|
xorriso->pacifier_style==2 ? "cdrecord" : "xorriso");
|
||||||
if(!(is_default && no_defaults))
|
if(!(is_default && no_defaults))
|
||||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||||
|
|
||||||
@ -7667,14 +7669,14 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
|||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
goto ex;
|
goto ex;
|
||||||
}
|
}
|
||||||
if(!was_other_option)
|
if(was_other_option && xorriso->out_drive_handle==NULL) {
|
||||||
{ret= 1; goto ex;}
|
|
||||||
if(xorriso->out_drive_handle==NULL) {
|
|
||||||
ret= Xorriso_option_dev(xorriso, "-", 2|4); /* set outdev to stdout */
|
ret= Xorriso_option_dev(xorriso, "-", 2|4); /* set outdev to stdout */
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* MULTI : */
|
||||||
|
|
||||||
if(msc[0]) {
|
if(msc[0]) {
|
||||||
cpt= strchr(msc, ',');
|
cpt= strchr(msc, ',');
|
||||||
if(cpt==NULL) {
|
if(cpt==NULL) {
|
||||||
@ -7688,15 +7690,16 @@ illegal_c:;
|
|||||||
goto illegal_c;
|
goto illegal_c;
|
||||||
strncpy(sfe, msc, cpt-msc);
|
strncpy(sfe, msc, cpt-msc);
|
||||||
sfe[cpt-msc]= 0;
|
sfe[cpt-msc]= 0;
|
||||||
if(strcmp(sfe, "16")==0) /* growisofs uses 16 to avoid a bug in mkisofs */
|
|
||||||
strcpy(sfe, "0");
|
|
||||||
if(xorriso->in_drive_handle!=NULL && indev[0]) {
|
if(xorriso->in_drive_handle!=NULL && indev[0]) {
|
||||||
/* give up indev before setting the load address */
|
/* give up indev before setting the load address */
|
||||||
ret= Xorriso_option_dev(xorriso, "", 1);
|
ret= Xorriso_option_dev(xorriso, "", 1);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
ret= Xorriso_option_load(xorriso, "sbsector", sfe, 0);
|
/* growisofs submits msc1+16 to avoid a theoretical bug in mkisofs.
|
||||||
|
Therefore this bug has to be emulated here. Sigh.
|
||||||
|
*/
|
||||||
|
ret= Xorriso_option_load(xorriso, "sbsector", sfe, 1);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
return(ret);
|
return(ret);
|
||||||
ret= Xorriso_option_grow_blindly(xorriso, cpt+1, 0);
|
ret= Xorriso_option_grow_blindly(xorriso, cpt+1, 0);
|
||||||
@ -7709,6 +7712,9 @@ illegal_c:;
|
|||||||
goto ex;
|
goto ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!was_other_option)
|
||||||
|
{ret= 1; goto ex;}
|
||||||
|
|
||||||
xorriso->padding= 300*1024;
|
xorriso->padding= 300*1024;
|
||||||
|
|
||||||
for(i= 0; i<argc; i++) {
|
for(i= 0; i<argc; i++) {
|
||||||
@ -7853,7 +7859,7 @@ not_enough_args:;
|
|||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
goto ex;
|
goto ex;
|
||||||
was_path= 1;
|
was_path= 1;
|
||||||
xorriso->pacifier_style= 2;
|
xorriso->pacifier_style= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(do_print_size) {
|
if(do_print_size) {
|
||||||
@ -10380,7 +10386,8 @@ int Xorriso_option_list_formats(struct XorrisO *xorriso, int flag)
|
|||||||
|
|
||||||
|
|
||||||
/* Option -load session|track|sbsector value */
|
/* Option -load session|track|sbsector value */
|
||||||
/* @return <=0 error , 1 success, 2 revoked by -reassure
|
/* @param flag bit0= with adr_mode sbsector: adr_value is possibly 16 too high
|
||||||
|
@return <=0 error , 1 success, 2 revoked by -reassure
|
||||||
*/
|
*/
|
||||||
int Xorriso_option_load(struct XorrisO *xorriso, char *adr_mode,
|
int Xorriso_option_load(struct XorrisO *xorriso, char *adr_mode,
|
||||||
char *adr_value, int flag)
|
char *adr_value, int flag)
|
||||||
@ -10404,7 +10411,7 @@ int Xorriso_option_load(struct XorrisO *xorriso, char *adr_mode,
|
|||||||
else if(strcmp(adr_mode, "track")==0)
|
else if(strcmp(adr_mode, "track")==0)
|
||||||
xorriso->image_start_mode= 2;
|
xorriso->image_start_mode= 2;
|
||||||
else if(strcmp(adr_mode, "lba")==0 || strcmp(adr_mode, "sbsector")==0)
|
else if(strcmp(adr_mode, "lba")==0 || strcmp(adr_mode, "sbsector")==0)
|
||||||
xorriso->image_start_mode= 3;
|
xorriso->image_start_mode= 3 | ((flag&1) << 16);
|
||||||
else if(strcmp(adr_mode, "volid")==0)
|
else if(strcmp(adr_mode, "volid")==0)
|
||||||
xorriso->image_start_mode= 4;
|
xorriso->image_start_mode= 4;
|
||||||
else {
|
else {
|
||||||
@ -11264,11 +11271,11 @@ int Xorriso_option_pacifier(struct XorrisO *xorriso, char *style, int flag)
|
|||||||
{
|
{
|
||||||
if(strcmp(style, "xorriso")==0 || strcmp(style, "default")==0)
|
if(strcmp(style, "xorriso")==0 || strcmp(style, "default")==0)
|
||||||
xorriso->pacifier_style= 0;
|
xorriso->pacifier_style= 0;
|
||||||
else if(strcmp(style, "cdrecord")==0 || strcmp(style, "cdrskin")==0 ||
|
|
||||||
strcmp(style, "wodim")==0 || strcmp(style, "xorrecord")==0)
|
|
||||||
xorriso->pacifier_style= 1;
|
|
||||||
else if(strcmp(style, "mkisofs")==0 || strcmp(style, "genisofs")==0 ||
|
else if(strcmp(style, "mkisofs")==0 || strcmp(style, "genisofs")==0 ||
|
||||||
strcmp(style, "genisoimage")==0 || strcmp(style, "xorrisofs")==0)
|
strcmp(style, "genisoimage")==0 || strcmp(style, "xorrisofs")==0)
|
||||||
|
xorriso->pacifier_style= 1;
|
||||||
|
else if(strcmp(style, "cdrecord")==0 || strcmp(style, "cdrskin")==0 ||
|
||||||
|
strcmp(style, "wodim")==0 || strcmp(style, "xorrecord")==0)
|
||||||
xorriso->pacifier_style= 2;
|
xorriso->pacifier_style= 2;
|
||||||
else {
|
else {
|
||||||
sprintf(xorriso->info_text, "-pacifier: unknown behavior code '%s'", style);
|
sprintf(xorriso->info_text, "-pacifier: unknown behavior code '%s'", style);
|
||||||
|
@ -345,7 +345,8 @@ int Xorriso_option_joliet(struct XorrisO *xorriso, char *mode, int flag);
|
|||||||
int Xorriso_option_list_formats(struct XorrisO *xorriso, int flag);
|
int Xorriso_option_list_formats(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
/* Option -load session|track|sbsector value */
|
/* Option -load session|track|sbsector value */
|
||||||
/* @return <=0 error , 1 success, 2 revoked by -reassure
|
/* @param flag bit0= with adr_mode sbsector: adr_value is possibly 16 too high
|
||||||
|
@return <=0 error , 1 success, 2 revoked by -reassure
|
||||||
*/
|
*/
|
||||||
int Xorriso_option_load(struct XorrisO *xorriso, char *adr_mode,
|
int Xorriso_option_load(struct XorrisO *xorriso, char *adr_mode,
|
||||||
char *adr_value, int flag);
|
char *adr_value, int flag);
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2008.07.17.110812"
|
#define Xorriso_timestamP "2008.07.17.111411"
|
||||||
|
@ -487,7 +487,8 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
|||||||
xorriso->image_start_mode&= ~0xffff; /* perform auto setting */
|
xorriso->image_start_mode&= ~0xffff; /* perform auto setting */
|
||||||
if((xorriso->image_start_mode&(1<<30))) { /* if enabled at all */
|
if((xorriso->image_start_mode&(1<<30))) { /* if enabled at all */
|
||||||
ret= isoburn_set_msc1(drive, xorriso->image_start_mode & 0xffff,
|
ret= isoburn_set_msc1(drive, xorriso->image_start_mode & 0xffff,
|
||||||
xorriso->image_start_value, 0);
|
xorriso->image_start_value,
|
||||||
|
!!(xorriso->image_start_mode & (1<<16)));
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
goto ex;
|
goto ex;
|
||||||
if(xorriso->image_start_mode&(1<<31))
|
if(xorriso->image_start_mode&(1<<31))
|
||||||
@ -1096,8 +1097,8 @@ int Xorriso_check_burn_abort(struct XorrisO *xorriso, int flag)
|
|||||||
It issues pacifying update messages to the user.
|
It issues pacifying update messages to the user.
|
||||||
@param flag bit0-3 = emulation mode
|
@param flag bit0-3 = emulation mode
|
||||||
0= xorriso
|
0= xorriso
|
||||||
1= cdrecord
|
1= mkisofs
|
||||||
2= mkisofs
|
2= cdrecord
|
||||||
bit4= report speed in CD units
|
bit4= report speed in CD units
|
||||||
*/
|
*/
|
||||||
int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
||||||
@ -1130,7 +1131,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
|||||||
break;
|
break;
|
||||||
current_time= Sfile_microtime(0);
|
current_time= Sfile_microtime(0);
|
||||||
if(drive_status == BURN_DRIVE_WRITING && progress.sectors > 0) {
|
if(drive_status == BURN_DRIVE_WRITING && progress.sectors > 0) {
|
||||||
if(emul==1) {
|
if(emul==2) {
|
||||||
if(progress.sector<=progress.sectors)
|
if(progress.sector<=progress.sectors)
|
||||||
sprintf(xorriso->info_text, "%4d of %4d MB written",
|
sprintf(xorriso->info_text, "%4d of %4d MB written",
|
||||||
progress.sector / 512, progress.sectors / 512);
|
progress.sector / 512, progress.sectors / 512);
|
||||||
@ -1163,7 +1164,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
|||||||
measured_speed/speed_factor);
|
measured_speed/speed_factor);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if(emul == 2 &&
|
} else if(emul == 1 &&
|
||||||
progress.sectors > 0 && progress.sector <= progress.sectors) {
|
progress.sectors > 0 && progress.sector <= progress.sectors) {
|
||||||
/* "37.87% done, estimate finish Tue Jul 15 18:55:07 2008" */
|
/* "37.87% done, estimate finish Tue Jul 15 18:55:07 2008" */
|
||||||
|
|
||||||
@ -6170,7 +6171,7 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address,
|
|||||||
xorriso->run_state= 1; /* Indicate that burning has started */
|
xorriso->run_state= 1; /* Indicate that burning has started */
|
||||||
burn_disc_write(burn_options, disc);
|
burn_disc_write(burn_options, disc);
|
||||||
|
|
||||||
ret= Xorriso_pacifier_loop(xorriso, drive, 1|(is_cd<<4));
|
ret= Xorriso_pacifier_loop(xorriso, drive, 2|(is_cd<<4));
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
goto ex;
|
goto ex;
|
||||||
if(!burn_drive_wrote_well(drive)) {
|
if(!burn_drive_wrote_well(drive)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user