New -zisofs parameter susp_z2=

This commit is contained in:
2020-10-29 09:31:48 +01:00
parent 1ddb676159
commit a9d8102996
10 changed files with 115 additions and 70 deletions

View File

@ -2262,6 +2262,7 @@ static int parse_zisofs_param(char *cpt, int key_l, int l, double *num)
int Xorriso_option_zisofs(struct XorrisO *xorriso, char *mode, int flag)
{
int was_level, was_blocksize, was_v2_enabled, was_blocksize_v2;
int was_zisofs_susp_z2;
uint64_t was_max_total_blocks, was_max_file_blocks, was_block_number_target;
int ret, l, i, sticky, set_isofs_params= 0;
double num, was_bpt_discard_free_ratio;
@ -2275,6 +2276,8 @@ int Xorriso_option_zisofs(struct XorrisO *xorriso, char *mode, int flag)
was_blocksize_v2= xorriso->zisofs_v2_block_size;
was_block_number_target= xorriso->zisofs_block_number_target;
was_bpt_discard_free_ratio= xorriso->zisofs_bpt_discard_free_ratio;
was_zisofs_susp_z2= xorriso->zisofs_susp_z2;
npt= cpt= mode;
for(cpt= mode; npt!=NULL; cpt= npt+1) {
npt= strchr(cpt,':');
@ -2392,6 +2395,18 @@ int Xorriso_option_zisofs(struct XorrisO *xorriso, char *mode, int flag)
}
xorriso->zisofs_bpt_discard_free_ratio = num;
} else if(strncmp(cpt, "susp_z2=", 8) == 0) {
if(strncmp(cpt + 8, "off", l - 8) == 0) {
xorriso->zisofs_susp_z2= 0;
} else if(strncmp(cpt + 8, "on", l - 8) == 0) {
xorriso->zisofs_susp_z2= 1;
} else {
sprintf(xorriso->info_text,
"-zisofs: Unrecognized susp_z2 mode (allowed: on, off)");
goto sorry_ex;
}
Xorriso_set_zisofs_params(xorriso, 2);
} else if(strncmp(cpt, "default", l)==0) {
xorriso->zlib_level= xorriso->zlib_level_default;
xorriso->zisofs_block_size= xorriso->zisofs_block_size_default;
@ -2403,6 +2418,8 @@ int Xorriso_option_zisofs(struct XorrisO *xorriso, char *mode, int flag)
xorriso->zisofs_block_number_target= -1;
xorriso->zisofs_bpt_discard_free_ratio=
xorriso->zisofs_bpt_discard_free_ratio_default;
xorriso->zisofs_susp_z2= xorriso->zisofs_susp_z2_default;
Xorriso_set_zisofs_params(xorriso, 2);
} else {
unknown_mode:;
@ -2420,15 +2437,18 @@ sorry_ex:
xorriso->zisofs_v2_block_size= was_blocksize_v2;
xorriso->zisofs_block_number_target= was_block_number_target;
xorriso->zisofs_bpt_discard_free_ratio= was_bpt_discard_free_ratio;
xorriso->zisofs_susp_z2 = was_zisofs_susp_z2;
Xorriso_set_zisofs_params(xorriso, 2);
return(0);
}
if(strncmp(cpt, "by_magic=", 9) != 0)
if(strncmp(cpt, "by_magic=", 9) != 0 &&
strncmp(cpt, "susp_z2=", 8) != 0)
set_isofs_params= 1;
}
ret= 1;
if(set_isofs_params)
ret= Xorriso_set_zisofs_params(xorriso, 0);
ret= Xorriso_set_zisofs_params(xorriso, 1);
return(ret);
}