New -zisofs parameters version_2=, block_size_v2=, max_bpt=, max_bpt_f=
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
|
||||
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
|
||||
|
||||
Copyright 2007-2014 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
Copyright 2007-2020 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2 or later.
|
||||
|
||||
@ -659,10 +659,12 @@ int Xorriso_status_extf(struct XorrisO *xorriso, char *filter, FILE *fp,
|
||||
|
||||
int Xorriso_set_zisofs_params(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
int ret;
|
||||
int ret, i;
|
||||
struct iso_zisofs_ctrl ctrl;
|
||||
|
||||
ctrl.version= 0;
|
||||
memset(&ctrl, 0, sizeof(ctrl));
|
||||
ctrl.version= 1;
|
||||
|
||||
ctrl.compression_level= xorriso->zlib_level;
|
||||
if(xorriso->zisofs_block_size == (1 << 16))
|
||||
ctrl.block_size_log2= 16;
|
||||
@ -670,6 +672,15 @@ int Xorriso_set_zisofs_params(struct XorrisO *xorriso, int flag)
|
||||
ctrl.block_size_log2= 17;
|
||||
else
|
||||
ctrl.block_size_log2= 15;
|
||||
|
||||
ctrl.v2_enabled= xorriso->zisofs_v2_enabled;
|
||||
ctrl.max_total_blocks= xorriso->zisofs_max_total_blocks;
|
||||
ctrl.max_file_blocks= xorriso->zisofs_max_file_blocks;
|
||||
ctrl.v2_block_size_log2= 17;
|
||||
for(i= 15; i <= 17; i++)
|
||||
if(xorriso->zisofs_v2_block_size == (1 << i))
|
||||
ctrl.v2_block_size_log2= i;
|
||||
|
||||
ret= iso_zisofs_set_params(&ctrl, 0);
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(ret < 0) {
|
||||
@ -681,21 +692,48 @@ int Xorriso_set_zisofs_params(struct XorrisO *xorriso, int flag)
|
||||
}
|
||||
|
||||
|
||||
uint64_t Xorriso_zisofs_current_blocks(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
int ret;
|
||||
struct iso_zisofs_ctrl ctrl;
|
||||
|
||||
memset(&ctrl, 0, sizeof(ctrl));
|
||||
ctrl.version= 1;
|
||||
ret = iso_zisofs_get_params(&ctrl, 0);
|
||||
if(ret != 1)
|
||||
return(0);
|
||||
return(ctrl.current_total_blocks);
|
||||
}
|
||||
|
||||
|
||||
int Xorriso_status_zisofs(struct XorrisO *xorriso, char *filter, FILE *fp,
|
||||
int flag)
|
||||
/*
|
||||
bit0= do only report non-default settings
|
||||
bit1= do only report to fp
|
||||
bit0= only report non-default settings
|
||||
bit1= only report to fp
|
||||
*/
|
||||
{
|
||||
off_t ziso_count= 0, osiz_count= 0;
|
||||
off_t gzip_count= 0, gunzip_count= 0;
|
||||
uint64_t used_blocks;
|
||||
int always= 0;
|
||||
|
||||
iso_zisofs_get_refcounts(&ziso_count, &osiz_count, 0);
|
||||
iso_gzip_get_refcounts(&gzip_count, &gunzip_count, 0);
|
||||
if(!(flag & 1)) {
|
||||
always= 1;
|
||||
} else if(filter != NULL) {
|
||||
if(filter[0] != 0)
|
||||
always= 1;
|
||||
}
|
||||
|
||||
#ifdef NIX
|
||||
if((flag & 1) && xorriso->zlib_level == xorriso->zlib_level_default &&
|
||||
xorriso->zisofs_block_size == xorriso->zisofs_block_size_default &&
|
||||
xorriso->zisofs_by_magic == 0 &&
|
||||
xorriso->zisofs_by_magic == 0 && xorriso->zisofs_v2_enabled == 0 &&
|
||||
xorriso->zisofs_max_file_blocks ==
|
||||
xorriso->zisofs_max_file_blocks_default &&
|
||||
xorriso->zisofs_v2_block_size == xorriso->zisofs_v2_block_size_default &&
|
||||
ziso_count == 0 && osiz_count == 0 &&
|
||||
gzip_count == 0 && gunzip_count == 0) {
|
||||
if(filter == NULL)
|
||||
@ -703,15 +741,52 @@ int Xorriso_status_zisofs(struct XorrisO *xorriso, char *filter, FILE *fp,
|
||||
if(filter[0] == 0)
|
||||
return 2;
|
||||
}
|
||||
sprintf(xorriso->result_line,
|
||||
"-zisofs level=%d:block_size=%dk:by_magic=%s:ziso_used=%.f:osiz_used=%.f",
|
||||
xorriso->zlib_level, xorriso->zisofs_block_size / 1024,
|
||||
xorriso->zisofs_by_magic ? "on" : "off",
|
||||
(double) ziso_count, (double) osiz_count);
|
||||
sprintf(xorriso->result_line + strlen(xorriso->result_line),
|
||||
":gzip_used=%.f:gunzip_used=%.f\n",
|
||||
#endif
|
||||
|
||||
if(always || !(
|
||||
xorriso->zlib_level == xorriso->zlib_level_default &&
|
||||
xorriso->zisofs_block_size == xorriso->zisofs_block_size_default &&
|
||||
xorriso->zisofs_by_magic == 0)) {
|
||||
sprintf(xorriso->result_line,
|
||||
"-zisofs level=%d:block_size=%dk:by_magic=%s\n",
|
||||
xorriso->zlib_level, xorriso->zisofs_block_size / 1024,
|
||||
xorriso->zisofs_by_magic ? "on" : "off");
|
||||
Xorriso_status_result(xorriso, filter, fp, flag & 2);
|
||||
}
|
||||
if(always || !(
|
||||
xorriso->zisofs_v2_enabled == 0 &&
|
||||
xorriso->zisofs_v2_block_size == xorriso->zisofs_v2_block_size_default)){
|
||||
sprintf(xorriso->result_line,
|
||||
"-zisofs version_2=%s:block_size_v2=%dk\n",
|
||||
xorriso->zisofs_v2_enabled ? xorriso->zisofs_v2_enabled == 1 ?
|
||||
"as_needed" : "on" : "off",
|
||||
xorriso->zisofs_v2_block_size / 1024);
|
||||
Xorriso_status_result(xorriso, filter, fp, flag & 2);
|
||||
}
|
||||
|
||||
used_blocks= Xorriso_zisofs_current_blocks(xorriso, 0);
|
||||
if(always || !(
|
||||
xorriso->zisofs_max_total_blocks ==
|
||||
xorriso->zisofs_max_total_blocks_default &&
|
||||
xorriso->zisofs_max_file_blocks ==
|
||||
xorriso->zisofs_max_file_blocks_default &&
|
||||
used_blocks == 0)) {
|
||||
sprintf(xorriso->result_line,
|
||||
"-zisofs max_bpt=%.f:bpt_used=%.f:max_bpt_f=%.f\n",
|
||||
(double) xorriso->zisofs_max_total_blocks * 8.0,
|
||||
(double) used_blocks * 8.0,
|
||||
(double) xorriso->zisofs_max_file_blocks * 8.0);
|
||||
Xorriso_status_result(xorriso, filter, fp, flag & 2);
|
||||
}
|
||||
if(always || !(
|
||||
ziso_count == 0 && osiz_count == 0 &&
|
||||
gzip_count == 0 && gunzip_count == 0)) {
|
||||
sprintf(xorriso->result_line,
|
||||
"-zisofs ziso_used=%.f:osiz_used=%.f:gzip_used=%.f:gunzip_used=%.f\n",
|
||||
(double) ziso_count, (double) osiz_count,
|
||||
(double) gzip_count, (double) gunzip_count);
|
||||
Xorriso_status_result(xorriso, filter, fp, flag&2);
|
||||
Xorriso_status_result(xorriso, filter, fp, flag & 2);
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user