New -format types by_index and fast_by_index

This commit is contained in:
2008-05-14 11:45:28 +00:00
parent 28e8709660
commit cf2bf625cf
4 changed files with 80 additions and 22 deletions

View File

@ -7712,7 +7712,7 @@ int Xorriso_option_ban_stdio_write(struct XorrisO *xorriso, int flag)
int Xorriso_option_blank(struct XorrisO *xorriso, char *mode, int flag)
{
char drive_name[SfileadrL], *cmd= "-blank";
int aq_ret, ret, aq_flag= 2, mode_flag, as_needed= 0;
int aq_ret, ret, aq_flag= 2, mode_flag, as_needed= 0, idx;
if(flag&1)
cmd= "-format";
@ -7741,14 +7741,35 @@ int Xorriso_option_blank(struct XorrisO *xorriso, char *mode, int flag)
else if(strcmp(mode, "all")==0 || strcmp(mode, "full")==0)
mode_flag= 0;
else if((strcmp(mode, "deformat")==0 ||
strcmp(mode, "deformat_sequential")==0) && !(flag&1))
strcmp(mode, "deformat_sequential")==0) && !(flag&1))
mode_flag= 2;
else if((strcmp(mode, "deformat_quickest")==0 ||
strcmp(mode, "deformat_sequential_quickest")==0) && !(flag&1))
strcmp(mode, "deformat_sequential_quickest")==0) && !(flag&1))
mode_flag= 3;
else if(strcmp(mode, "fast")==0)
mode_flag= 1;
else if(mode[0]==0)
else if(strncmp(mode, "by_index_", 9)==0 && (flag&1)) {
mode_flag= 128;
idx= -1;
if(strlen(mode)>9)
sscanf(mode+9, "%d", &idx);
if(idx<0 || idx>255) {
unusable_index:;
sprintf(xorriso->info_text,
"-format: mode '%s' provides unusable index number", mode);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
}
mode_flag|= (idx<<8);
} else if(strncmp(mode, "fast_by_index_", 14)==0 && (flag&1)) {
mode_flag= 1 | 128;
idx= -1;
if(strlen(mode)>14)
sscanf(mode+14, "%d", &idx);
if(idx<0 || idx>255)
goto unusable_index;
mode_flag|= (idx<<8);
} else if(mode[0]==0)
mode_flag= !(flag&1);
else {
sprintf(xorriso->info_text,
@ -7760,7 +7781,7 @@ int Xorriso_option_blank(struct XorrisO *xorriso, char *mode, int flag)
if(as_needed)
ret= Xorriso_blank_as_needed(xorriso, (flag&1)<<2);
else if(flag&1)
ret= Xorriso_format_media(xorriso, mode_flag&1);
ret= Xorriso_format_media(xorriso, mode_flag & 0xff81);
else
ret= Xorriso_blank_media(xorriso, mode_flag&3);
if(ret==0)
@ -9020,8 +9041,8 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" Allow for writing only the usage of optical drives.",
" -blank \"fast\"|\"all\"|\"deformat\"|\"deformat_quickest\"",
" Blank media resp. invalidate ISO image on media.",
" -format \"full\"",
" Format DVD-RW to overwriteable state or de-ice DVD+RW.",
" -format \"as_needed\"|\"full\"|\"fast\"|\"by_index_#\"|\"fast_by_index_#\"",
" Format BD-RE, DVD-RAM, DVD-RW, DVD+RW.",
" -volid volume_id",
" Specifies the volume ID text. (32 chars out of [A-Z0-9_])",
" -publisher name",