Introduced burn_offst_source_new() flag bit0 which bans size changes

This commit is contained in:
Thomas Schmitt 2012-01-23 09:56:53 +00:00
parent a88039e222
commit 6549072dcd
3 changed files with 14 additions and 5 deletions

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2012.01.19.210418" #define Cdrskin_timestamP "2012.01.20.091016"

View File

@ -2619,8 +2619,15 @@ struct burn_source *burn_fd_source_new(int datafd, int subfd, off_t size);
@param start The byte address where to start reading bytes for the @param start The byte address where to start reading bytes for the
consumer. inp bytes may get skipped to reach this address. consumer. inp bytes may get skipped to reach this address.
@param size The number of bytes to be delivered to the consumer. @param size The number of bytes to be delivered to the consumer.
@param flag Bitfield for control purposes (unused yet, submit 0). If size is <= 0 then it may be set later by a call of method
>>> bit0 = allow set_size() to override existing sizes > 0 set_size(). If it is >= 0, then it can only be changed if
flag bit0 was set with burn_offst_source_new().
@param flag Bitfield for control purposes
bit0 = Prevent set_size() from overriding interval sizes > 0.
If such a size is already set, then the new one will
only affect the reply of get_size().
See also above struct burn_source.
@since 1.2.0
@return Pointer to a burn_source object, later to be freed by @return Pointer to a burn_source object, later to be freed by
burn_source_free(). NULL indicates failure. burn_source_free(). NULL indicates failure.
@since 0.8.8 @since 0.8.8

View File

@ -1784,7 +1784,7 @@ overlapping_ba:;
else else
inp_src = crs->file_source; inp_src = crs->file_source;
src = burn_offst_source_new(inp_src, crs->offst_source, src = burn_offst_source_new(inp_src, crs->offst_source,
(off_t) (file_ba * crs->block_size), (off_t) 0, 0); (off_t) (file_ba * crs->block_size), (off_t) 0, 1);
if (src == NULL) if (src == NULL)
goto out_of_mem; goto out_of_mem;
@ -2051,8 +2051,10 @@ cannot_open:;
0, 0); 0, 0);
ret = 0; goto ex; ret = 0; goto ex;
} }
burn_track_set_size(crs->track, crs->source_size - ret = burn_track_set_size(crs->track, crs->source_size -
(off_t) (crs->current_file_ba * crs->block_size)); (off_t) (crs->current_file_ba * crs->block_size));
if (ret <= 0)
goto ex;
ret = cue_attach_track(session, crs, 0); ret = cue_attach_track(session, crs, 0);
if (ret <= 0) if (ret <= 0)