Adapted to libisofs revison 294
This commit is contained in:
@ -106,9 +106,11 @@ int isoburn_read_image(struct burn_drive *d,
|
||||
struct isoburn_read_opts *read_opts,
|
||||
IsoImage **image)
|
||||
{
|
||||
int ret;
|
||||
struct iso_read_opts ropts;
|
||||
struct iso_read_image_features features;
|
||||
int ret, int_num;
|
||||
IsoReadOpts *ropts= NULL;
|
||||
struct iso_read_image_features *features= NULL;
|
||||
uint32_t ms_block;
|
||||
|
||||
enum burn_disc_status status= BURN_DISC_BLANK;
|
||||
IsoDataSource *ds= NULL;
|
||||
struct isoburn *o= NULL;
|
||||
@ -164,35 +166,43 @@ int isoburn_read_image(struct burn_drive *d,
|
||||
|
||||
memset((char *) &ropts, 0, sizeof(ropts));
|
||||
|
||||
ret = isoburn_disc_get_msc1(d, (int*) &ropts.block);
|
||||
ret = isoburn_disc_get_msc1(d, &int_num);
|
||||
if (ret < 0)
|
||||
return -2;
|
||||
ropts.norock = read_opts->norock;
|
||||
ropts.nojoliet = read_opts->nojoliet;
|
||||
ropts.noiso1999 = read_opts->noiso1999;
|
||||
ropts.preferjoliet = read_opts->preferjoliet;
|
||||
ropts.mode = read_opts->mode;
|
||||
ropts.uid = read_opts->uid;
|
||||
ropts.gid = read_opts->gid;
|
||||
ropts.input_charset = read_opts->input_charset;
|
||||
ms_block= int_num;
|
||||
|
||||
/* create the data source */
|
||||
ret = iso_read_opts_new(&ropts, 0);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
/* Important: do not return until iso_read_opts_free() */
|
||||
iso_read_opts_set_start_block(ropts, ms_block);
|
||||
iso_read_opts_set_no_rockridge(ropts, read_opts->norock);
|
||||
iso_read_opts_set_no_joliet(ropts, read_opts->nojoliet);
|
||||
iso_read_opts_set_no_iso1999(ropts, read_opts->noiso1999);
|
||||
iso_read_opts_set_preferjoliet(ropts, read_opts->preferjoliet);
|
||||
iso_read_opts_set_default_permissions(ropts, read_opts->mode);
|
||||
iso_read_opts_set_default_uid(ropts, read_opts->uid);
|
||||
iso_read_opts_set_default_gid(ropts, read_opts->gid);
|
||||
iso_read_opts_set_input_charset(ropts, read_opts->input_charset);
|
||||
ds = isoburn_data_source_new(d);
|
||||
ret = iso_image_import(o->image, ds, &ropts, &features);
|
||||
ret = iso_image_import(o->image, ds, ropts, &features);
|
||||
iso_read_opts_free(ropts);
|
||||
iso_data_source_unref(ds);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
/* Important: do not return until free(features) */
|
||||
|
||||
if (image) {
|
||||
*image = o->image;
|
||||
iso_image_ref(*image); /*protects object from premature free*/
|
||||
}
|
||||
|
||||
read_opts->hasRR = features.hasRR;
|
||||
read_opts->hasJoliet = features.hasJoliet;
|
||||
read_opts->hasIso1999 = features.hasIso1999;
|
||||
read_opts->hasElTorito = features.hasElTorito;
|
||||
read_opts->size = features.size;
|
||||
read_opts->hasRR = features->hasRR;
|
||||
read_opts->hasJoliet = features->hasJoliet;
|
||||
read_opts->hasIso1999 = features->hasIso1999;
|
||||
read_opts->hasElTorito = features->hasElTorito;
|
||||
read_opts->size = features->size;
|
||||
free(features);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user