Adapted to libisofs revison 294

This commit is contained in:
2008-01-28 17:20:10 +00:00
parent 4697182efd
commit 55b155efb9
6 changed files with 78 additions and 71 deletions

View File

@ -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;
}