New -md5 mode "all"

This commit is contained in:
Thomas Schmitt 2009-08-19 18:07:44 +00:00
parent a0a380dbc8
commit 218cfa6a2d
5 changed files with 43 additions and 16 deletions

View File

@ -2,7 +2,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH XORRISO 1 "Aug 18, 2009"
.TH XORRISO 1 "Aug 19, 2009"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@ -727,7 +727,7 @@ Enable or disable processing of xattr attributes in user namespace.
If enabled, then xorriso will handle xattr similar to ACL.
See also options -getfattr, -setfattr and above paragraph about xattr.
.TP
\fB\-md5\fR "on"|"off"
\fB\-md5\fR "on"|"all"|"off"
Enable or disable processing of MD5 checksums for the overall session and for
each single data file. If enabled then images get loaded only if eventual
checksums tags of superblock and directory tree match properly. The MD5
@ -739,6 +739,10 @@ written into the new session. The checksums of files which have their data
in older sessions get copied into the new session. Superblock, tree and whole
session get a checksum tag each.
.br
Mode "all" will additionally check during image generation whether the checksum
of a data file changed between the time when its reading began and the time
when it ended. This implies reading every file twice.
.br
Checksums can be exploited via options -check_md5, -check_md5_r, via find
actions get_md5, check_md5, and via -check_media.
.TP

View File

@ -7106,8 +7106,9 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= ((xorriso->do_md5 & (1 | 2 | 4)) == 0);
sprintf(line,"-md5 %s\n", (xorriso->do_md5 & 1 ? "on" : "off"));
is_default= ((xorriso->do_md5 & (1 | 2 | 4 | 8)) == 0);
sprintf(line, "-md5 %s\n", (xorriso->do_md5 & 1 ?
xorriso->do_md5 & 8 ? "all" : "on" : "off"));
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
@ -15482,7 +15483,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" -disk_dev_ino \"on\"|\"ino_only\"|\"off\"",
" Enable resp. disable recording of disk file dev_t and ino_t",
" and their use in file comparison.",
" -md5 \"on\"|\"off\"",
" -md5 \"on\"|\"all\"|\"off\"",
" Enable resp. disable processing of MD5 checksums.",
" -ban_stdio_write",
" Allow for writing only the usage of optical drives.",
@ -16529,17 +16530,37 @@ int Xorriso_option_mark(struct XorrisO *xorriso, char *mark, int flag)
}
/* Option -md5 "on"|"off" */
/* Option -md5 "on"|"all"|"off" */
int Xorriso_option_md5(struct XorrisO *xorriso, char *mode, int flag)
{
if(strcmp(mode, "off")==0)
xorriso->do_md5&= ~7;
else if(strcmp(mode, "on")==0)
xorriso->do_md5|= (1 | 2 | 4);
else {
sprintf(xorriso->info_text, "-md5: unknown mode '%s'", mode);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
char *npt, *cpt;
int l;
npt= cpt= mode;
for(; npt!=NULL; cpt= npt+1) {
npt= strchr(cpt,':');
if(npt==NULL)
l= strlen(cpt);
else
l= npt-cpt;
if(l == 0)
continue;
if(l == 3 && strncmp(cpt, "off", l) == 0)
xorriso->do_md5&= ~15;
else if(l == 2 && strncmp(cpt, "on", l) == 0)
xorriso->do_md5|= 7;
else if(l == 3 && strncmp(cpt, "all", l) == 0)
xorriso->do_md5|= 15;
else if(l == 18 && strncmp(cpt, "stability_check_on", l) == 0)
xorriso->do_md5|= 8;
else if(l == 19 && strncmp(cpt, "stability_check_off", l) == 0)
xorriso->do_md5&= ~8;
else {
sprintf(xorriso->info_text, "-md5: unknown mode ");
Text_shellsafe(cpt, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
}
}
return(1);
}

View File

@ -127,6 +127,7 @@ struct XorrisO { /* the global context of xorriso */
int do_md5; /* bit0= read MD5 array
bit1= write session MD5
bit2= write MD5 for each data file
bit3= make file content stability check by double reading
*/
int relax_compliance; /* opaque bitfield to be set by xorrisoburn */

View File

@ -1 +1 @@
#define Xorriso_timestamP "2009.08.19.180632"
#define Xorriso_timestamP "2009.08.19.180842"

View File

@ -1801,7 +1801,8 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
(xorriso->do_md5 & (2 | 4))
) * isoburn_igopt_aaip) |
((!!(xorriso->do_md5 & 2)) * isoburn_igopt_session_md5) |
((!!(xorriso->do_md5 & 4)) * isoburn_igopt_file_md5);
((!!(xorriso->do_md5 & 4)) * isoburn_igopt_file_md5) |
((!!(xorriso->do_md5 & 8)) * isoburn_igopt_file_stability);
isoburn_igopt_set_extensions(sopts, ext);
isoburn_igopt_set_relaxed(sopts, relax);
isoburn_igopt_set_sort_files(sopts, 1);