From 219aa7e4b65fee60f3faaa390dd53ab3defed2fc Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Mon, 10 Aug 2009 19:21:43 +0000 Subject: [PATCH] New write options session_md5, file_md5, read option nomd5 --- libisoburn/isoburn.c | 10 ++++++++-- libisoburn/isoburn.h | 9 +++++++++ libisoburn/isofs_wrap.c | 6 +----- libisoburn/libisoburn.h | 22 +++++++++++++++++----- xorriso/xorriso_timestamp.h | 2 +- 5 files changed, 36 insertions(+), 13 deletions(-) diff --git a/libisoburn/isoburn.c b/libisoburn/isoburn.c index 1499858d..0a77c9b0 100644 --- a/libisoburn/isoburn.c +++ b/libisoburn/isoburn.c @@ -433,6 +433,7 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d, iso_write_opts_set_dir_rec_mtime(wopts, opts->dir_rec_mtime); iso_write_opts_set_aaip_susp_1_10(wopts, opts->aaip_susp_1_10); iso_write_opts_set_sort_files(wopts, opts->sort_files); + iso_write_opts_set_record_md5(wopts, opts->session_md5, opts->file_md5); iso_write_opts_set_replace_mode(wopts, opts->replace_dir_mode, opts->replace_file_mode, opts->replace_uid, opts->replace_gid); iso_write_opts_set_default_dir_mode(wopts, opts->dir_mode); @@ -654,6 +655,7 @@ int isoburn_ropt_new(struct isoburn_read_opts **new_o, int flag) o->noacl= 1; o->noea= 1; o->noino= 1; + o->nomd5= 1; o->preferjoliet= 0; o->uid= geteuid(); o->gid= getegid(); @@ -691,6 +693,7 @@ int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext) o->noacl= !!(ext & 64); o->noea= !!(ext & 128); o->noino= !!(ext & 256); + o->nomd5= !!(ext & 512); return(1); } @@ -700,7 +703,7 @@ int isoburn_ropt_get_extensions(struct isoburn_read_opts *o, int *ext) *ext= (!!o->norock) | ((!!o->nojoliet)<<1) | ((!!o->noiso1999)<<2) | ((!!o->preferjoliet)<<3) | ((!!o->pretend_blank)<<4) | ((!!o->noaaip) << 5) | ((!!o->noacl) << 6) | ((!!o->noea) << 7) | - ((!!o->noino) << 8); + ((!!o->noino) << 8) | ((!!o->nomd5) << 9); return(1); } @@ -875,6 +878,8 @@ int isoburn_igopt_set_extensions(struct isoburn_imgen_opts *o, int ext) o->iso1999= !!(ext&4); o->hardlinks= !!(ext & 8); o->aaip= !!(ext & 32); + o->session_md5= !!(ext & 64); + o->file_md5= !!(ext & 128); return(1); } @@ -882,7 +887,8 @@ int isoburn_igopt_set_extensions(struct isoburn_imgen_opts *o, int ext) int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext) { *ext= (!!o->rockridge) | ((!!o->joliet)<<1) | ((!!o->iso1999)<<2) | - ((!!o->hardlinks) << 3) | ((!!o->aaip) << 5); + ((!!o->hardlinks) << 3) | ((!!o->aaip) << 5) | + ((!!o->session_md5) << 6) | ((!!o->file_md5) << 7); return(1); } diff --git a/libisoburn/isoburn.h b/libisoburn/isoburn.h index eb6e46e2..3ff8f4ca 100644 --- a/libisoburn/isoburn.h +++ b/libisoburn/isoburn.h @@ -261,6 +261,9 @@ struct isoburn_read_opts { /* ts A90508 */ unsigned int noino:1; /* Discard eventual PX inode numbers */ + /* ts A90810 */ + unsigned int nomd5:1; /* Do not read eventual MD5 array */ + unsigned int preferjoliet:1; /*< When both Joliet and RR extensions are present, the RR * tree is used. If you prefer using Joliet, set this to 1. */ @@ -328,6 +331,12 @@ struct isoburn_imgen_opts { /* Write eventual AAIP info containing ACL and EA */ unsigned int aaip :1; + /* Produce and write a MD5 checksum of the whole session stream. */ + unsigned int session_md5 :1; + + /* Produce and write MD5 checksums for each single IsoFile. */ + unsigned int file_md5 :1; + /* relaxed constraints */ /* diff --git a/libisoburn/isofs_wrap.c b/libisoburn/isofs_wrap.c index 0916ad0e..82c2c124 100644 --- a/libisoburn/isofs_wrap.c +++ b/libisoburn/isofs_wrap.c @@ -201,14 +201,10 @@ create_blank_image:; iso_read_opts_set_start_block(ropts, ms_block); iso_read_opts_set_no_rockridge(ropts, read_opts->norock); iso_read_opts_set_no_aaip(ropts, read_opts->noaaip); - - /* <<< #ifdef shall be removed when libisofs-0.6.20 is released */ -#ifdef Libisofs_hardlink_prooF + iso_read_opts_set_no_md5(ropts, read_opts->nomd5); iso_read_opts_set_new_inos(ropts, read_opts->noino); -#endif /* Libisofs_hardlink_prooF */ - iso_read_opts_set_no_joliet(ropts, read_opts->nojoliet); iso_read_opts_set_no_iso1999(ropts, read_opts->noiso1999); iso_read_opts_set_preferjoliet(ropts, read_opts->preferjoliet); diff --git a/libisoburn/libisoburn.h b/libisoburn/libisoburn.h index 30ea9c26..32813489 100644 --- a/libisoburn/libisoburn.h +++ b/libisoburn/libisoburn.h @@ -739,6 +739,9 @@ int isoburn_ropt_destroy(struct isoburn_read_opts **o, int flag); giving all family members the same inode number. libisofs keeps the PX inode numbers unaltered when IsoNode objects get written into an ISO image. + bit9= nomd5 + @since 0.4.2 + Do not load the eventual MD5 checksum array. @return 1 success, <=0 failure */ #define isoburn_ropt_norock 1 @@ -750,6 +753,7 @@ int isoburn_ropt_destroy(struct isoburn_read_opts **o, int flag); #define isoburn_ropt_noacl 64 #define isoburn_ropt_noea 128 #define isoburn_ropt_noino 256 +#define isoburn_ropt_nomd5 512 int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext); int isoburn_ropt_get_extensions(struct isoburn_read_opts *o, int *ext); @@ -924,13 +928,21 @@ int isoburn_igopt_get_level(struct isoburn_imgen_opts *o, int *level); bit5= aaip The libisofs specific SUSP based extension of ECMA-119 which can encode ACL and XFS-style Extended Attributes. + bit6= session_md5 + @since 0.4.2 + Produce and write a MD5 checksum of the whole session stream. + bit7= file_md5 + @since 0.4.2 + Produce and write MD5 checksums for each single IsoFile. @return 1 success, <=0 failure */ -#define isoburn_igopt_rockridge 1 -#define isoburn_igopt_joliet 2 -#define isoburn_igopt_iso1999 4 -#define isoburn_igopt_hardlinks 8 -#define isoburn_igopt_aaip 32 +#define isoburn_igopt_rockridge 1 +#define isoburn_igopt_joliet 2 +#define isoburn_igopt_iso1999 4 +#define isoburn_igopt_hardlinks 8 +#define isoburn_igopt_aaip 32 +#define isoburn_igopt_session_md5 64 +#define isoburn_igopt_file_md5 128 int isoburn_igopt_set_extensions(struct isoburn_imgen_opts *o, int ext); int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext); diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index da7c3c92..5f88786b 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2009.08.10.123146" +#define Xorriso_timestamP "2009.08.10.192240"