Change burn_source implementation to fit libburn requirements.
This commit is contained in:
parent
f4ad1c630b
commit
6546f1a197
@ -867,10 +867,19 @@ bs_read(struct burn_source *bs, unsigned char *buf, int size)
|
|||||||
{
|
{
|
||||||
struct ecma119_write_target *t = (struct ecma119_write_target*)bs->data;
|
struct ecma119_write_target *t = (struct ecma119_write_target*)bs->data;
|
||||||
|
|
||||||
assert(size == t->block_size);
|
if (size != t->block_size) {
|
||||||
|
printf("[ERROR] You can only read in %d chunks\n", t->block_size);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (t->curblock >= t->vol_space_size) {
|
if (t->curblock >= t->vol_space_size) {
|
||||||
return 0;
|
/* total_size could be setted by libburn */
|
||||||
|
if ( t->curblock >= (t->total_size / (off_t) t->block_size) ) {
|
||||||
|
/* we pad the image */
|
||||||
|
memset(buf, 0, size);
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
if (t->state_data_valid)
|
if (t->state_data_valid)
|
||||||
write_data_chunk(t, buf);
|
write_data_chunk(t, buf);
|
||||||
@ -908,8 +917,10 @@ bs_free_data(struct burn_source *bs)
|
|||||||
t->state_files.src->close(t->state_files.src);
|
t->state_files.src->close(t->state_files.src);
|
||||||
}
|
}
|
||||||
|
|
||||||
int bs_set_size(struct burn_source *source, off_t size)
|
int bs_set_size(struct burn_source *bs, off_t size)
|
||||||
{
|
{
|
||||||
|
struct ecma119_write_target *t = (struct ecma119_write_target*)bs->data;
|
||||||
|
t->total_size = size;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user