New option -displacement
This commit is contained in:
@ -199,6 +199,37 @@ int Xorriso_option_disk_pattern(struct XorrisO *xorriso, char *mode, int flag)
|
||||
}
|
||||
|
||||
|
||||
/* Option -displacement [-]offset */
|
||||
int Xorriso_option_displacement(struct XorrisO *xorriso, char *value, int flag)
|
||||
{
|
||||
double num;
|
||||
int displacement_sign= 1, l;
|
||||
char *cpt;
|
||||
|
||||
cpt= value;
|
||||
if(value[0] == '-') {
|
||||
displacement_sign= -1;
|
||||
cpt++;
|
||||
} else if(value[0] == '+')
|
||||
cpt++;
|
||||
num= Scanf_io_size(cpt, 0);
|
||||
l= strlen(cpt);
|
||||
if(cpt[l - 1] < '0' || cpt[l - 1] > '9')
|
||||
num/= 2048.0;
|
||||
if(num < 0.0 || num > 4294967295.0) {
|
||||
sprintf(xorriso->info_text,
|
||||
"-displacement: too large or too small: '%s'", value);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(0);
|
||||
}
|
||||
if(num == 0)
|
||||
displacement_sign= 0;
|
||||
xorriso->displacement= num;
|
||||
xorriso->displacement_sign= displacement_sign;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* Option -drive_class */
|
||||
int Xorriso_option_drive_class(struct XorrisO *xorriso,
|
||||
char *d_class, char *pattern, int flag)
|
||||
@ -1315,6 +1346,10 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" -load \"session\"|\"track\"|\"lba\"|\"sbsector\"|\"volid\"|\"auto\" id",
|
||||
" Load a particular (outdated) ISO image from a -dev or",
|
||||
" -indev which hosts more than one session.",
|
||||
" -displacement [-]lba",
|
||||
" When loading ISO tree or reading data files compensate a",
|
||||
" displacement versus the start address for which the image",
|
||||
" was prepared.",
|
||||
" -rom_toc_scan \"on\"|\"force\"|\"off\"[:\"emul_on\"|\"emul_off\"]",
|
||||
" Enable scanning for ISO sessions on read-only drives/media",
|
||||
" resp. on overwriteable media with emulated TOC.",
|
||||
|
Reference in New Issue
Block a user