From 8b5af86a6403ee5a775f237bfd241a9943463745 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Mon, 14 Jul 2008 12:04:51 +0000 Subject: [PATCH] New flag options with isoburn_read_iso_head() --- libisoburn/burn_wrap.c | 15 ++++++++++----- libisoburn/libisoburn.h | 2 ++ xorriso/xorriso_timestamp.h | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/libisoburn/burn_wrap.c b/libisoburn/burn_wrap.c index 6e9b4b72..63ac142d 100644 --- a/libisoburn/burn_wrap.c +++ b/libisoburn/burn_wrap.c @@ -989,6 +989,7 @@ int isoburn_read_iso_head_parse(struct burn_drive *d, unsigned char *data, 0= do not return anything in info (do not even touch it) 1= copy volume id to info (info needs 33 bytes) 2= copy 64 kB header to info (needs 65536 bytes) + bit13= do not read head from media but use first 64 kB from info bit14= check both half buffers (not only second) return 2 if found in first block bit15= return-1 on read error @@ -1004,13 +1005,17 @@ int isoburn_read_iso_head(struct burn_drive *d, int lba, info_mode= flag&255; *image_blocks= 0; - ret = burn_read_data(d, ((off_t) lba) * (off_t) 2048, (char *) buffer, + if(flag&(1<<13)) { + memcpy(buffer, info, 64*1024); + } else { + ret = burn_read_data(d, ((off_t) lba) * (off_t) 2048, (char *) buffer, (off_t) 64*1024, &data_count, 2); /* no error messages */ - if(ret<=0) - return(-1*!!(flag&(1<<15))); + if(ret<=0) + return(-1*!!(flag&(1<<15))); + if(info_mode==2) + memcpy(info, buffer, 64*1024); + } - if(info_mode==2) - memcpy(info, buffer, 64*1024); if(flag&(1<<14)) { ret= isoburn_read_iso_head_parse(d, buffer, image_blocks, info, info_mode); if(ret<0) diff --git a/libisoburn/libisoburn.h b/libisoburn/libisoburn.h index 51bfc46e..4cbd244c 100644 --- a/libisoburn/libisoburn.h +++ b/libisoburn/libisoburn.h @@ -583,6 +583,8 @@ void isoburn_toc_disc_free(struct isoburn_toc_disc *disc); 1= copy volume id to info (info needs 33 bytes) 2= @since 0.2.2 : copy 64 kB header to info (needs 65536 bytes) + bit13= @since 0.2.2: + do not read head from media but use first 64 kB from info bit14= check both half buffers (not only second) return 2 if found in first block bit15= return-1 on read error diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 3a327176..3fce1f9e 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2008.07.14.114613" +#define Xorriso_timestamP "2008.07.14.120527"