New API calls isoburn_igopt_set_stdio_endsync(), isoburn_igopt_get_stdio_endsync()

This commit is contained in:
Thomas Schmitt 2014-04-13 12:05:58 +00:00
parent 4b05b45237
commit 6e0b43440d
6 changed files with 56 additions and 10 deletions

View File

@ -150,6 +150,7 @@ int isoburn_new(struct isoburn **objpt, int flag)
o->msgs_submit_handle= NULL;
o->msgs_submit_flag= 0;
o->do_tao= 0;
o->do_fsync= 1;
o->prev= NULL;
o->next= NULL;
o->target_iso_head= calloc(1, o->target_iso_head_size);
@ -599,6 +600,7 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
}
out_o->do_tao = opts->do_tao;
out_o->do_fsync = opts->do_fsync;
state = isoburn_disc_get_status(in_d);
if (state != BURN_DISC_BLANK && state != BURN_DISC_APPENDABLE &&
@ -1134,6 +1136,7 @@ int isoburn_igopt_new(struct isoburn_imgen_opts **new_o, int flag)
o->hfsp_block_size= 0;
o->apm_block_size= 0;
o->do_tao= 0;
o->do_fsync= 0;
return(1);
}
@ -1755,6 +1758,19 @@ int isoburn_igopt_get_write_type(struct isoburn_imgen_opts *opts, int *do_tao)
return(1);
}
int isoburn_igopt_set_stdio_endsync(struct isoburn_imgen_opts *opts,
int do_sync)
{
opts->do_fsync= !!do_sync;
return(1);
}
int isoburn_igopt_get_stdio_endsync(struct isoburn_imgen_opts *opts,
int *do_sync)
{
*do_sync= opts->do_fsync;
return(1);
}
int isoburn_conv_name_chars(struct isoburn_imgen_opts *opts,
char *name, size_t name_len,

View File

@ -166,6 +166,9 @@ struct isoburn {
/* Forwarding an image generation option to the burn wrapper */
int do_tao;
/* Forwarding an image generation option to the burn wrapper */
int do_fsync;
};
@ -705,6 +708,9 @@ struct isoburn_imgen_opts {
*/
int do_tao;
/* Whether to fsync() stdio_drives after isoburn_activate_session() */
int do_fsync;
};

View File

@ -375,7 +375,7 @@ int isoburn_attach_start_lba(struct burn_drive *d, int lba, int flag)
*/
int isoburn_activate_session(struct burn_drive *drive)
{
int ret;
int ret, do_sync = 1;
struct isoburn *o;
ret = isoburn_find_emulator(&o, drive, 0);
@ -391,9 +391,12 @@ int isoburn_activate_session(struct burn_drive *drive)
(o->fabricated_disc_status == BURN_DISC_BLANK &&
o->zero_nwa > 0)))
return 1;
ret = burn_drive_get_drive_role(drive);
if (ret != 1)
do_sync = !! o->do_fsync;
ret = burn_random_access_write(drive, (off_t) 0, (char*)o->target_iso_head,
o->target_iso_head_size, 1);
o->target_iso_head_size, do_sync);
return ret;
}

View File

@ -1532,7 +1532,7 @@ int isoburn_igopt_get_scdbackup_tag(struct isoburn_imgen_opts *o,
numbers 2 to 8.
This will overwrite the first 512 bytes of
the submitted data.
@since 1.3.6
@since 1.3.8
4= HP-PA PALO boot sector header version 4
Submit all five parameters of
iso_image_set_hppa_palo() as non-NULL texts.
@ -1899,6 +1899,30 @@ int isoburn_igopt_get_hfsp_block_size(struct isoburn_imgen_opts *opts,
int isoburn_igopt_set_write_type(struct isoburn_imgen_opts *opts, int do_tao);
int isoburn_igopt_get_write_type(struct isoburn_imgen_opts *opts, int *do_tao);
/** Set or inquire whether a final fsync(2) is performed when updating the
multi-session information of libburn stdio pseudo-drives by
isoburn_activate_session().
Note:
fsync(2) calls during and at the end of isoburn_disc_write() are controlled
by libburn call burn_write_opts_set_stdio_fsync().
@since 1.2.4
@param opts
The option set to be manipulated or inquired.
@parm do_sync
1= call fsync(2) with stdio drives in isoburn_activate_session()
0= do not
@return
<=0 = error, 1 = success
*/
int isoburn_igopt_set_stdio_endsync(struct isoburn_imgen_opts *opts,
int do_sync);
int isoburn_igopt_get_stdio_endsync(struct isoburn_imgen_opts *opts,
int *do_sync);
/* ----------------------------------------------------------------------- */
/* End of Options for image generation */
/* ----------------------------------------------------------------------- */
/** Frontend of libisofs call iso_conv_name_chars() controlled by
struct isoburn_imgen_opts rather than IsoWriteOpts.
@ -1940,11 +1964,6 @@ int isoburn_conv_name_chars(struct isoburn_imgen_opts *opts,
char **result, size_t *result_len, int flag);
/* ----------------------------------------------------------------------- */
/* End of Options for image generation */
/* ----------------------------------------------------------------------- */
/** Get the image attached to a drive, if any.
@since 0.1.0
@param d The drive to inquire

View File

@ -46,6 +46,7 @@ isoburn_igopt_get_relaxed;
isoburn_igopt_get_rr_reloc;
isoburn_igopt_get_scdbackup_tag;
isoburn_igopt_get_sort_files;
isoburn_igopt_get_stdio_endsync;
isoburn_igopt_get_system_area;
isoburn_igopt_get_tail_blocks;
isoburn_igopt_get_untranslated_name_len;
@ -68,6 +69,7 @@ isoburn_igopt_set_relaxed;
isoburn_igopt_set_rr_reloc;
isoburn_igopt_set_scdbackup_tag;
isoburn_igopt_set_sort_files;
isoburn_igopt_set_stdio_endsync;
isoburn_igopt_set_system_area;
isoburn_igopt_set_tail_blocks;
isoburn_igopt_set_untranslated_name_len;

View File

@ -1 +1 @@
#define Xorriso_timestamP "2014.04.13.071908"
#define Xorriso_timestamP "2014.04.13.120421"