diff --git a/ChangeLog b/ChangeLog index 4b490df9..78d0f69e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +SVN trunk (to become libisoburn-0.6.r4pl00.tar.gz) +=============================================================================== +* New API calls isoburn_igopt_attach_jte() and isoburn_igopt_detach_jte() + + libisoburn-0.6.2.pl00.tar.gz Sat Sep 18 2010 =============================================================================== libisoburn novelties: diff --git a/libisoburn/isoburn.c b/libisoburn/isoburn.c index ddea8e34..9116f13d 100644 --- a/libisoburn/isoburn.c +++ b/libisoburn/isoburn.c @@ -437,6 +437,12 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d, 0, "FAILURE", 0); {ret= -2; goto ex;} } + if (state != BURN_DISC_BLANK && opts->libjte_handle != NULL) { + isoburn_msgs_submit(out_o, 0x00060000, + "Jigdo Template Extraction works only on blank target media", + 0, "FAILURE", 0); + {ret= -2; goto ex;} + } fifo_chunks= 32; if(opts->fifo_size >= 64*1024 && opts->fifo_size <= 1024.0 * 1024.0 * 1024.0){ @@ -496,11 +502,12 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d, opts->vol_creation_time, opts->vol_modification_time, opts->vol_expiration_time, opts->vol_effective_time, opts->vol_uuid); + iso_write_opts_attach_jte(wopts, opts->libjte_handle); ret= isoburn_adjust_target_iso_head(out_o, opts->partition_offset, 0); if(ret <= 0) {ret= -1; goto ex;} - if(opts->no_emul_toc) { + if(opts->no_emul_toc || opts->libjte_handle != NULL) { if(out_o->nwa == out_o->zero_nwa && out_o->zero_nwa == Libisoburn_overwriteable_starT + opts->partition_offset @@ -923,6 +930,7 @@ int isoburn_igopt_new(struct isoburn_imgen_opts **new_o, int flag) o->vol_modification_time= 0; o->vol_expiration_time= 0; o->vol_effective_time= 0; + o->libjte_handle= NULL; return(1); } @@ -1222,3 +1230,21 @@ int isoburn_igopt_get_part_offset(struct isoburn_imgen_opts *opts, return 1; } + +int isoburn_igopt_attach_jte(struct isoburn_imgen_opts *opts, + void *libjte_handle) +{ + opts->libjte_handle = libjte_handle; + return 1; +} + + +int isoburn_igopt_detach_jte(struct isoburn_imgen_opts *opts, + void **libjte_handle) +{ + if(libjte_handle != NULL) + *libjte_handle = opts->libjte_handle; + opts->libjte_handle = NULL; + return 1; +} + diff --git a/libisoburn/isoburn.h b/libisoburn/isoburn.h index d301c023..59509425 100644 --- a/libisoburn/isoburn.h +++ b/libisoburn/isoburn.h @@ -545,6 +545,10 @@ struct isoburn_imgen_opts { /* 1 to 255, 0= disabled/default */ int partition_heads_per_cyl; + /* Parameters and state of Jigdo Template Export environment. + */ + void *libjte_handle; + }; diff --git a/libisoburn/libisoburn.h b/libisoburn/libisoburn.h index defdc1f8..34b82166 100644 --- a/libisoburn/libisoburn.h +++ b/libisoburn/libisoburn.h @@ -1295,6 +1295,37 @@ int isoburn_igopt_get_pvd_times(struct isoburn_imgen_opts *opts, char uuid[17]); +/** Associate a libjte environment object to the upcomming write run. + libjte implements Jigdo Template Extraction as of Steve McIntyre and + Richard Atterer. + A non-NULL libjte_handle will cause failure to write if libjte was not + enabled in libisofs at compile time. + @since 0.6.4 + @param opts + The option set to work on + @param libjte_handle + Pointer to a struct libjte_env e.g. created by libjte_new(). + It must stay existent from the start of image writing by + isoburn_prepare_*() until the write thread has ended. + E.g. until libburn indicates the end of its write run. + @return 1 success, <=0 failure +*/ +int isoburn_igopt_attach_jte(struct isoburn_imgen_opts *opts, + void *libjte_handle); + +/** Remove eventual association to a libjte environment handle. + @since 0.6.4 + @param opts + The option set to work on + @param libjte_handle + If not submitted as NULL, this will return the previously set + libjte handle. + @return 1 success, <=0 failure +*/ +int isoburn_igopt_detach_jte(struct isoburn_imgen_opts *opts, + void **libjte_handle); + + /* ----------------------------------------------------------------------- */ /* End of Options for image generation */ /* ----------------------------------------------------------------------- */ diff --git a/libisoburn/libisoburn.ver b/libisoburn/libisoburn.ver index 861c8bd0..02bb1d60 100644 --- a/libisoburn/libisoburn.ver +++ b/libisoburn/libisoburn.ver @@ -21,7 +21,9 @@ isoburn_get_attached_image; isoburn_get_fifo_status; isoburn_get_min_start_byte; isoburn_get_mount_params; +isoburn_igopt_attach_jte; isoburn_igopt_destroy; +isoburn_igopt_detach_jte; isoburn_igopt_get_data_start; isoburn_igopt_get_effective_lba; isoburn_igopt_get_extensions; diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 99738545..b42fe8d6 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2010.09.24.110841" +#define Xorriso_timestamP "2010.09.29.091541"