New option tsize= with -as cdrecord

This commit is contained in:
2008-07-15 12:18:08 +00:00
parent 1df494e339
commit 8fd8bd55f8
5 changed files with 42 additions and 20 deletions

View File

@ -7073,7 +7073,7 @@ int Xorriso_cdrskin(struct XorrisO *xorriso, char *whom, int argc, char **argv,
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, do_grow= 0, do_isosize= 0;
double write_start_address= -1.0;
double write_start_address= -1.0, tsize= -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];
@ -7091,8 +7091,6 @@ int Xorriso_cdrskin(struct XorrisO *xorriso, char *whom, int argc, char **argv,
"direct_write_amount=", "msifile=",
"tsize=",
""
};
static char ignored_full_options[][41]= {
@ -7138,8 +7136,10 @@ int Xorriso_cdrskin(struct XorrisO *xorriso, char *whom, int argc, char **argv,
"\t-atip\t\tretrieve media state, print \"Is *erasable\"",
"\t-multi\t\tgenerate a TOC that allows multi session",
"\t-waiti\t\twait until input is available before opening SCSI",
"\ttsize=#\t\tannounces exact size of source data",
"\tpadsize=#\tAmount of padding",
"\t-data\t\tSubsequent tracks are CD-ROM data mode 1 (default)",
"\t-isosize\tUse iso9660 file system size for next data track",
"\t-pad\t\tpadsize=30k",
"\t-nopad\t\tDo not pad",
"\t--grow_overwriteable_iso\temulate multi-session on DVD+RW",
@ -7324,6 +7324,18 @@ no_volunteer:;
speed[79]= 0;
} else if(strcmp(argv[i], "-toc")==0) {
do_toc= 1;
} else if(strncmp(argv[i], "-tsize=", 7)==0 ||
strncmp(argv[i], "tsize=", 6)==0) {
/* MULTI : tsize= */
cpt= strchr(argv[i], '=')+1;
tsize= Scanf_io_size(cpt, 1);
if(tsize > 1024.0*1024.0*1024.0*1024.0*1024.0) {
sprintf(xorriso->info_text, "-as %s: much too large: %s",whom, argv[i]);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
ret= 0; goto ex;
}
} else if(strcmp(argv[i], "-v")==0 || strcmp(argv[i],"-verbose")==0) {
do_verbous++;
} else if(strcmp(argv[i], "-vv")==0) {
@ -7337,11 +7349,8 @@ no_volunteer:;
} 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(argv[i][0]=='-' && argv[i][1]!=0) {
sprintf(xorriso->info_text, "-as %s: Unknown option %s",
whom, Text_shellsafe(argv[i], sfe, 0));
@ -7389,10 +7398,10 @@ no_volunteer:;
/* MULTI :
if grow_overwriteable_iso :
consider overwriteables with ISO as appendable */
hflag= 2|32;
if(!do_grow)
hflag|= 8; /* consider overwriteables as blank */
ret= Xorriso_option_dev(xorriso, dev_adr, hflag);
if(ret<=0)
goto ex;
@ -7431,6 +7440,7 @@ no_volunteer:;
}
/* MULTI : perform -msinfo */
if(do_msinfo) {
ret= Xorriso_msinfo(xorriso, &msc1, &msc2, 2 | !!do_grow);
if(ret<=0)
@ -7485,7 +7495,8 @@ no_volunteer:;
xorriso->do_close= !do_multi;
ret= Xorriso_burn_track(xorriso, (off_t) write_start_address,
track_source, (!!do_grow)|((!!do_isosize)<<1));
track_source, (off_t) tsize,
(!!do_grow)|((!!do_isosize)<<1));
aq_ret= Xorriso_reaquire_outdev(xorriso, 2*(ret>0));
if(ret<=0 && ret<aq_ret)
goto ex;