From da0d20731ddd6d0f00675c88937a2cb9f3dc0515 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Wed, 24 Nov 2010 10:08:56 +0000 Subject: [PATCH] New pseudo extension isoburn_igopt_will_cancel to avoid MISHAP event --- libisoburn/isoburn.c | 4 +++- libisoburn/isoburn.h | 2 ++ libisoburn/libisoburn.h | 7 +++++++ xorriso/xorriso_timestamp.h | 2 +- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/libisoburn/isoburn.c b/libisoburn/isoburn.c index e16a3f09..51805f28 100644 --- a/libisoburn/isoburn.c +++ b/libisoburn/isoburn.c @@ -456,6 +456,7 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d, isoburn_report_iso_error(ret, "Cannot create iso_write_opts", 0, "FATAL",0); goto ex; } + iso_write_opts_set_will_cancel(wopts, opts->will_cancel); iso_write_opts_set_iso_level(wopts, opts->level); iso_write_opts_set_rockridge(wopts, opts->rockridge); iso_write_opts_set_joliet(wopts, opts->joliet); @@ -994,6 +995,7 @@ int isoburn_igopt_set_extensions(struct isoburn_imgen_opts *o, int ext) o->session_md5= !!(ext & 64); o->file_md5= (ext & (128 | 256)) >> 7; o->no_emul_toc= !!(ext & 512); + o->will_cancel= !!(ext & 1024); return(1); } @@ -1003,7 +1005,7 @@ 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->session_md5) << 6) | ((o->file_md5 & 3) << 7) | - ((!!o->no_emul_toc) << 9); + ((!!o->no_emul_toc) << 9) | ((o->will_cancel) << 10); return(1); } diff --git a/libisoburn/isoburn.h b/libisoburn/isoburn.h index 00acfed1..0304cb37 100644 --- a/libisoburn/isoburn.h +++ b/libisoburn/isoburn.h @@ -345,6 +345,8 @@ struct isoburn_imgen_opts { /* Options for image generation */ + int will_cancel :1; + int level; /**< ISO level to write at. */ /** Which extensions to support. */ diff --git a/libisoburn/libisoburn.h b/libisoburn/libisoburn.h index 98444dc2..c1fa094c 100644 --- a/libisoburn/libisoburn.h +++ b/libisoburn/libisoburn.h @@ -974,6 +974,12 @@ int isoburn_igopt_get_level(struct isoburn_imgen_opts *o, int *level); the first session to LBA 32 and do not copy the first 64kB of the first session to LBA 0, but rather write the first session to LBA 0 directly. + bit10= will_cancel + @since 0.6.6 + Announce to libisofs that only the image size is desired + and that the write thread will be cancelled by + isoburn_cancel_prepared_write() before actual image writing + occurs. Without this, cancellation can cause a MISHAP event. @return 1 success, <=0 failure */ #define isoburn_igopt_rockridge 1 @@ -985,6 +991,7 @@ int isoburn_igopt_get_level(struct isoburn_imgen_opts *o, int *level); #define isoburn_igopt_file_md5 128 #define isoburn_igopt_file_stability 256 #define isoburn_igopt_no_emul_toc 512 +#define isoburn_igopt_will_cancel 1024 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 ce6105ae..e60c67e1 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2010.11.23.200346" +#define Xorriso_timestamP "2010.11.24.100845"