New options --grow_overwriteable_iso and write_start_address= with -as cdrecord
This commit is contained in:
@ -7069,10 +7069,11 @@ int Xorriso_reaquire_outdev(struct XorrisO *xorriso, int flag)
|
||||
int Xorriso_cdrskin(struct XorrisO *xorriso, char *whom, int argc, char **argv,
|
||||
int flag)
|
||||
{
|
||||
int ret, i, k, mem_do_close, aq_ret, eject_ret, msc1, msc2;
|
||||
int ret, i, k, mem_do_close, aq_ret, eject_ret, msc1, msc2, hflag;
|
||||
int do_atip= 0, do_checkdrive= 0, do_eject= 0, do_scanbus= 0;
|
||||
int do_toc= 0, do_verbous= 0, do_version= 0, do_help= 0, do_waiti= 0;
|
||||
int do_multi= 0, do_msinfo= 0;
|
||||
int do_multi= 0, do_msinfo= 0, do_grow= 0;
|
||||
double write_start_address= -1.0;
|
||||
char track_source[SfileadrL], sfe[5*SfileadrL], dev_adr[SfileadrL], *cpt;
|
||||
char mem_report_about_text[80], *report_about= "SORRY", blank_mode[80];
|
||||
char speed[80];
|
||||
@ -7088,7 +7089,7 @@ int Xorriso_cdrskin(struct XorrisO *xorriso, char *whom, int argc, char **argv,
|
||||
"drive_scsi_dev_family=", "fallback_program=", "modesty_on_drive=",
|
||||
"tao_to_sao_tsize=",
|
||||
|
||||
"direct_write_amount=", "write_start_address=", "msifile=",
|
||||
"direct_write_amount=", "msifile=",
|
||||
|
||||
"tsize=",
|
||||
|
||||
@ -7141,11 +7142,12 @@ int Xorriso_cdrskin(struct XorrisO *xorriso, char *whom, int argc, char **argv,
|
||||
"\t-data\t\tSubsequent tracks are CD-ROM data mode 1 (default)",
|
||||
"\t-pad\t\tpadsize=30k",
|
||||
"\t-nopad\t\tDo not pad",
|
||||
"\t--grow_overwriteable_iso\temulate multi-session on DVD+RW",
|
||||
"\twrite_start_address=#\t\twrite to given byte address on DVD+RW",
|
||||
"\t-help\t\tprint this text to stderr and exit emulation",
|
||||
"Actually this is the integrated ISO RockRidge filesystem manipulator xorriso",
|
||||
"lending its libburn capabilities to a very limited cdrecord emulation.",
|
||||
"Only a single data track can be burnt to blank or overwriteable media which",
|
||||
"will be finalized afterwards if possible.",
|
||||
"lending its libburn capabilities to a very limited cdrecord emulation. Only",
|
||||
"a single data track can be burnt to blank, appendable or overwriteable media.",
|
||||
"A much more elaborate cdrecord emulator is cdrskin from the same project.",
|
||||
"@End_of_helptexT@"
|
||||
};
|
||||
@ -7308,17 +7310,23 @@ no_volunteer:;
|
||||
do_toc= 1;
|
||||
} else if(strcmp(argv[i], "--grow_overwriteable_iso")==0) {
|
||||
|
||||
/* >>> MULTI : allow --grow_overwriteable_iso */
|
||||
|
||||
/* MULTI : allow --grow_overwriteable_iso */
|
||||
/*
|
||||
sprintf(xorriso->info_text,
|
||||
"-as %s: Option --grow_overwriteable_iso not supported.",
|
||||
whom);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
ret= 0; goto ex;
|
||||
*/
|
||||
|
||||
/* >>> MULTI : allow write_start_address= */
|
||||
/* >>> MULTI : combine write_start_address=32 with --grow_overwriteable_iso */
|
||||
/* >>> MULTI : ??? how about cdrskin. shouldn't it combine too ? */
|
||||
do_grow= 1;
|
||||
} else if(strncmp(argv[i], "write_start_address=", 20)==0) {
|
||||
|
||||
/* MULTI : allow write_start_address= */
|
||||
write_start_address= Scanf_io_size(argv[i]+20,0);
|
||||
|
||||
/* ??? >>> MULTI : combine write_start_address=32 with --grow_overwriteable_iso */
|
||||
/* ??? >>> MULTI : ??? how about cdrskin. shouldn't it combine too ? */
|
||||
|
||||
} else if(strcmp(argv[i], "-v")==0 || strcmp(argv[i],"-verbose")==0) {
|
||||
do_verbous++;
|
||||
@ -7376,12 +7384,14 @@ no_volunteer:;
|
||||
}
|
||||
if(dev_adr[0]) {
|
||||
|
||||
/* >>> MULTI :
|
||||
/* MULTI :
|
||||
if grow_overwriteable_iso :
|
||||
consider overwriteables with ISO as appendable */
|
||||
/* bit3= overwriteables as blank */
|
||||
hflag= 2|32;
|
||||
if(!do_grow)
|
||||
hflag|= 8; /* consider overwriteables as blank */
|
||||
|
||||
ret= Xorriso_option_dev(xorriso, dev_adr, 2|8|32);
|
||||
ret= Xorriso_option_dev(xorriso, dev_adr, hflag);
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
}
|
||||
@ -7420,7 +7430,7 @@ no_volunteer:;
|
||||
|
||||
/* MULTI : perform -msinfo */
|
||||
if(do_msinfo) {
|
||||
ret= Xorriso_msinfo(xorriso, &msc1, &msc2, 2);
|
||||
ret= Xorriso_msinfo(xorriso, &msc1, &msc2, 2 | !!do_grow);
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
sprintf(xorriso->result_line, "%d,%d\n", msc1, msc2);
|
||||
@ -7472,7 +7482,8 @@ no_volunteer:;
|
||||
/* MULTI : do not close if -multi */
|
||||
|
||||
xorriso->do_close= !do_multi;
|
||||
ret= Xorriso_burn_track(xorriso, track_source, 0);
|
||||
ret= Xorriso_burn_track(xorriso, (off_t) write_start_address,
|
||||
track_source, !!do_grow);
|
||||
aq_ret= Xorriso_reaquire_outdev(xorriso, 2*(ret>0));
|
||||
if(ret<=0 && ret<aq_ret)
|
||||
goto ex;
|
||||
@ -7568,7 +7579,7 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||
goto not_enough_args;
|
||||
i++;
|
||||
adr[0]= 0;
|
||||
if(strcmp(argv[i],"-")!=0)
|
||||
if(strcmp(argv[i],"-")!=0 && strncmp(argv[i], "stdio:", 6)!=0)
|
||||
strcpy(adr, "stdio:");
|
||||
if(Sfile_str(adr+strlen(adr), argv[i], 0)<=0)
|
||||
{ret= -1; goto ex;}
|
||||
@ -7577,7 +7588,8 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||
if(i+1>=argc)
|
||||
goto not_enough_args;
|
||||
i++;
|
||||
strcpy(indev, "stdio:");
|
||||
if(strncmp(argv[i], "stdio:", 6)!=0)
|
||||
strcpy(indev, "stdio:");
|
||||
if(Sfile_str(indev+strlen(indev), argv[i], 0)<=0)
|
||||
{ret= -1; goto ex;}
|
||||
} else if(strcmp(argv[i], "-C")==0 ||
|
||||
@ -9874,7 +9886,7 @@ int Xorriso_option_grow_blindly(struct XorrisO *xorriso, char *msc2, int flag)
|
||||
double num;
|
||||
int l;
|
||||
|
||||
if(msc2[0]==0 || strcmp(msc2,"-")==0 || strcmp(msc2, "off")==0) {
|
||||
if(msc2[0]==0 || msc2[0]=='-' || strcmp(msc2, "off")==0) {
|
||||
xorriso->grow_blindly_msc2= -1;
|
||||
return(1);
|
||||
}
|
||||
|
Reference in New Issue
Block a user