New -zisofs option by_magic=on

This commit is contained in:
2009-04-14 09:23:06 +00:00
parent 572dfb1584
commit 1ee9e2a16f
5 changed files with 65 additions and 13 deletions

View File

@ -1140,7 +1140,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
struct burn_track **tracks;
enum burn_disc_status s;
IsoImage *image= NULL;
IsoNode *node;
IsoNode *node, *root_node;
ElToritoBootImage *bootimg;
enum eltorito_boot_media_type emul_type= ELTORITO_NO_EMUL;
int profile_number;
@ -1403,11 +1403,36 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
if(ret<0)
{ret= 0; goto ex;}
if(xorriso->zisofs_by_magic) {
sprintf(xorriso->info_text,
"Checking disk file content for zisofs compression headers.");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
root_node= (IsoNode *) iso_image_get_root(image);
ret= iso_node_zf_by_magic(root_node,
(xorriso->out_drive_handle == xorriso->in_drive_handle) | 2 | 16);
if(ret<0) {
Xorriso_report_iso_error(xorriso, "", ret,
"Error when examining file content for zisofs headers",
0, "FAILURE", 1);
}
ret= Xorriso_eval_problem_status(xorriso, 1, 0);
if(ret<0)
{ret= 0; goto ex;}
sprintf(xorriso->info_text,
"Check for zisofs compression headers done.");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
}
/* >>> omit iso_image_update_sizes if the image was filled up very quickly */;
ret= iso_image_update_sizes(image);
if(ret < 0) {
Xorriso_process_msg_queues(xorriso, 0);
if(ret<0) {
Xorriso_report_iso_error(xorriso, "", ret,
"Error when updating file sizes",
0, "FAILURE", 1);
}
ret= Xorriso_eval_problem_status(xorriso, 1, 0);
if(ret<0)
{ret= 0; goto ex;}
@ -10364,6 +10389,7 @@ int Xorriso_set_zisofs_params(struct XorrisO *xorriso, int flag)
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
*/
{
@ -10372,12 +10398,16 @@ int Xorriso_status_zisofs(struct XorrisO *xorriso, char *filter, FILE *fp,
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)
xorriso->zisofs_by_magic == 0 &&
ziso_count == 0 && osiz_count == 0 &&
filter[0] == 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);
"-zisofs level=%d:block_size=%dk:by_magic=%s:ziso_used=%.f:osiz_used=%.f\n",
xorriso->zlib_level, xorriso->zisofs_block_size / 1024,
xorriso->zisofs_by_magic ? "on" : "off",
(double) ziso_count, (double) osiz_count);
Xorriso_status_result(xorriso, filter, fp, flag&2);
return(1);
}