New -md5 modes load_check_off and load_check_on

This commit is contained in:
Thomas Schmitt 2011-03-09 07:14:49 +00:00
parent a08a753967
commit 060484494d
6 changed files with 24 additions and 10 deletions

View File

@ -368,11 +368,10 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
ext|= isoburn_ropt_noea; ext|= isoburn_ropt_noea;
if(xorriso->ino_behavior & 1) if(xorriso->ino_behavior & 1)
ext|= isoburn_ropt_noino; ext|= isoburn_ropt_noino;
#ifdef isoburn_ropt_nomd5
if(!(xorriso->do_md5 & 1)) if(!(xorriso->do_md5 & 1))
ext|= isoburn_ropt_nomd5; ext|= isoburn_ropt_nomd5;
#endif if(xorriso->do_md5 & 32)
ext|= isoburn_ropt_nomd5tag;
isoburn_ropt_set_extensions(ropts, ext); isoburn_ropt_set_extensions(ropts, ext);
@ -422,8 +421,11 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, sev, 0); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, sev, 0);
if(read_ret == ISO_SB_TREE_CORRUPTED && (xorriso->do_md5 & 1)) { if(read_ret == ISO_SB_TREE_CORRUPTED && (xorriso->do_md5 & 1)) {
Xorriso_msgs_submit(xorriso, 0, Xorriso_msgs_submit(xorriso, 0,
"You might get a questionable ISO image tree by option -md5 'off'.", "This might be false MD5 alarm if an add-on session was written by growisofs.",
0, "HINT", 0); 0, "HINT", 0);
Xorriso_msgs_submit(xorriso, 0,
"In this case you get an ISO image tree by option -md5 'load_check_off'",
0, "HINT", 0);
} else if(xorriso->img_read_error_mode!=0) { } else if(xorriso->img_read_error_mode!=0) {
Xorriso_msgs_submit(xorriso, 0, "You might get a partial or altered ISO image tree by option -error_behavior 'image_loading' 'best_effort' if -abort_on is set to be tolerant enough.", Xorriso_msgs_submit(xorriso, 0, "You might get a partial or altered ISO image tree by option -error_behavior 'image_loading' 'best_effort' if -abort_on is set to be tolerant enough.",
0, "HINT", 0); 0, "HINT", 0);

View File

@ -899,7 +899,7 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
int do_print_size= 0, fd, idx, iso_level= 1, emul_boot= 2; int do_print_size= 0, fd, idx, iso_level= 1, emul_boot= 2;
int option_b= 0, was_failure= 0, fret, lower_r= 0, zero= 0; int option_b= 0, was_failure= 0, fret, lower_r= 0, zero= 0;
int dir_mode= -1, file_mode= -1, count, partition_number, allow_dir_id_ext= 1; int dir_mode= -1, file_mode= -1, count, partition_number, allow_dir_id_ext= 1;
int root_seen= 0; int root_seen= 0, do_md5_mem;
mode_t mode_and, mode_or; mode_t mode_and, mode_or;
int with_boot_image= 0, with_cat_path= 0, with_emul_toc= 0; int with_boot_image= 0, with_cat_path= 0, with_emul_toc= 0;
int old_root_md5= 1, old_root_dev= 0, old_root_ino= 1; int old_root_md5= 1, old_root_dev= 0, old_root_ino= 1;
@ -1188,7 +1188,12 @@ illegal_c:;
Xorriso_option_hardlinks(xorriso, "without_update", 0); Xorriso_option_hardlinks(xorriso, "without_update", 0);
} }
if(indev[0]) { if(indev[0]) {
do_md5_mem= xorriso->do_md5;
if(xorriso->do_md5 & 1) /* MD5 loading is enabled */
xorriso->do_md5|= 32; /* Do not check tags of superblock,tree,session
because growisofs preserves the first sb tag.*/
ret= Xorriso_option_dev(xorriso, indev, 1); ret= Xorriso_option_dev(xorriso, indev, 1);
xorriso->do_md5= do_md5_mem;
if(ret<=0) if(ret<=0)
goto ex; goto ex;
} }

View File

@ -641,6 +641,10 @@ int Xorriso_option_md5(struct XorrisO *xorriso, char *mode, int flag)
xorriso->do_md5|= 8; xorriso->do_md5|= 8;
else if(l == 19 && strncmp(cpt, "stability_check_off", l) == 0) else if(l == 19 && strncmp(cpt, "stability_check_off", l) == 0)
xorriso->do_md5&= ~8; xorriso->do_md5&= ~8;
else if(l == 13 && strncmp(cpt, "load_check_on", l) == 0)
xorriso->do_md5&= ~32;
else if(l == 14 && strncmp(cpt, "load_check_off", l) == 0)
xorriso->do_md5|= 32;
else { else {
sprintf(xorriso->info_text, "-md5: unknown mode "); sprintf(xorriso->info_text, "-md5: unknown mode ");
Text_shellsafe(cpt, xorriso->info_text, 1); Text_shellsafe(cpt, xorriso->info_text, 1);

View File

@ -1803,14 +1803,16 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
is_default= ((xorriso->do_md5 & 31) == 0); is_default= ((xorriso->do_md5 & 31) == 0);
sprintf(line, "-md5 "); sprintf(line, "-md5 ");
if(xorriso->do_md5 & 1) { if(xorriso->do_md5 & 1) {
if((xorriso->do_md5 & (8)) == (8)) { if((xorriso->do_md5 & 8) == 8) {
strcat(line, "all\n"); strcat(line, "all");
} else { } else {
strcat(line, "on"); strcat(line, "on");
if(xorriso->do_md5 & 8) if(xorriso->do_md5 & 8)
strcat(line, ":stability_check_on"); strcat(line, ":stability_check_on");
strcat(line, "\n");
} }
if(xorriso->do_md5 & 32)
strcat(line, ":load_check_off");
strcat(line, "\n");
} else } else
strcat(line, "off\n"); strcat(line, "off\n");
if(!(is_default && no_defaults)) if(!(is_default && no_defaults))

View File

@ -150,6 +150,7 @@ struct XorrisO { /* the global context of xorriso */
bit2= write MD5 for each data file bit2= write MD5 for each data file
bit3= make file content stability check by double reading bit3= make file content stability check by double reading
bit4= use recorded MD5 as proxy of ISO file bit4= use recorded MD5 as proxy of ISO file
bit5= with bit0: do not check tags of superblock,tree,session
*/ */
int no_emul_toc; /* bit0= On overwriteables: int no_emul_toc; /* bit0= On overwriteables:

View File

@ -1 +1 @@
#define Xorriso_timestamP "2011.03.09.071325" #define Xorriso_timestamP "2011.03.09.071502"