New option -zisofs, builtin filters --zisofs and --zisofs-decode
This commit is contained in:
@ -135,6 +135,7 @@ int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag)
|
||||
int ret, major, minor, micro;
|
||||
char *handler_prefix= NULL;
|
||||
char *queue_sev, *print_sev, reason[1024];
|
||||
struct iso_zisofs_ctrl zisofs_ctrl= {0, 6, 15};
|
||||
|
||||
|
||||
/* First an ugly compile time check for header version compatibility.
|
||||
@ -230,6 +231,14 @@ LIBISOBURN_MISCONFIGURATION_ = 0;
|
||||
|
||||
sprintf(handler_prefix, "%s : ", xorriso->progname);
|
||||
burn_set_signal_handling(handler_prefix, NULL, 0);
|
||||
|
||||
ret = iso_zisofs_get_params(&zisofs_ctrl, 0);
|
||||
if (ret == 1) {
|
||||
xorriso->zisofs_block_size= xorriso->zisofs_block_size_default=
|
||||
(1 << zisofs_ctrl.block_size_log2);
|
||||
xorriso->zlib_level= xorriso->zlib_level_default=
|
||||
zisofs_ctrl.compression_level;
|
||||
}
|
||||
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(reason[0]) {
|
||||
@ -10022,6 +10031,7 @@ int Xorriso_set_filter(struct XorrisO *xorriso, void *in_node,
|
||||
xorriso->volset_change_pending= 1;
|
||||
*/
|
||||
ret= filter_ret;
|
||||
|
||||
ex:;
|
||||
if(old_name != NULL)
|
||||
free(old_name);
|
||||
@ -10326,3 +10336,49 @@ ex:;
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
int Xorriso_set_zisofs_params(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
int ret;
|
||||
struct iso_zisofs_ctrl ctrl;
|
||||
|
||||
ctrl.version= 0;
|
||||
ctrl.compression_level= xorriso->zlib_level;
|
||||
if(xorriso->zisofs_block_size == (1 << 16))
|
||||
ctrl.block_size_log2= 16;
|
||||
else if(xorriso->zisofs_block_size == (1 << 17))
|
||||
ctrl.block_size_log2= 17;
|
||||
else
|
||||
ctrl.block_size_log2= 15;
|
||||
ret= iso_zisofs_set_params(&ctrl, 0);
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(ret < 0) {
|
||||
Xorriso_report_iso_error(xorriso, "", ret,
|
||||
"Error when setting zisofs parameters", 0, "FAILURE", 1);
|
||||
return(0);
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
int Xorriso_status_zisofs(struct XorrisO *xorriso, char *filter, FILE *fp,
|
||||
int flag)
|
||||
/*
|
||||
bit1= do only report to fp
|
||||
*/
|
||||
{
|
||||
off_t ziso_count= 0, osiz_count= 0;
|
||||
|
||||
iso_zisofs_get_refcounts(&ziso_count, &osiz_count, 0);
|
||||
if((flag & 1) && xorriso->zlib_level == xorriso->zlib_level_default &&
|
||||
xorriso->zisofs_block_size == xorriso->zisofs_block_size_default &&
|
||||
ziso_count == 0 && osiz_count == 0)
|
||||
return 2;
|
||||
sprintf(xorriso->result_line,
|
||||
"-zisofs level=%d:block_size=%dk:ziso_used=%.f:osiz_used=%.f\n",
|
||||
xorriso->zlib_level, xorriso->zisofs_block_size / 1024,
|
||||
(double) ziso_count, (double) osiz_count);
|
||||
Xorriso_status_result(xorriso, filter, fp, flag&2);
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user