Browse Source

Replace rwopts management with data_source related functions

master
Vreixo Formoso Lopes 15 years ago
parent
commit
cff1144b0e
  1. 7
      src/isoburn.c
  2. 4
      src/isoburn.h
  3. 42
      src/isofs_wrap.c

7
src/isoburn.c

@ -55,21 +55,15 @@ int isoburn_new(struct isoburn **objpt, int flag)
o->target_volset= NULL;
o->prev= NULL;
o->next= NULL;
if(isoburn_new_rwopts(o)<=0)
goto failed;
isoburn_link(o, isoburn_list_start, 1);
return(1);
failed:;
isoburn_destroy(objpt,0);
return(-1);
}
int isoburn_destroy(struct isoburn **objpt, int flag)
{
struct isoburn *o;
int isoburn_free_rwopts(struct isoburn *o);
o= *objpt;
if(o==NULL)
@ -88,7 +82,6 @@ int isoburn_destroy(struct isoburn **objpt, int flag)
if(o->drive!=NULL)
burn_drive_release(o->drive, 0);
isoburn_free_rwopts(o);
if(o->target_volset!=NULL)
iso_volset_free(o->target_volset);

4
src/isoburn.h

@ -84,8 +84,8 @@ int isoburn_find_by_drive(struct isoburn **pt, struct burn_drive *d, int flag);
/* Calls from burn_wrap.c into isofs_wrap.c */
int isoburn_start_emulation(struct isoburn *o, int flag);
int isoburn_new_rwopts(struct isoburn *o);
int isoburn_free_rwopts(struct isoburn *o);
int isoburn_create_data_source(struct isoburn *o);
int isoburn_free_data_source(struct isoburn *o);
int isoburn_invalidate_iso(struct isoburn *o, int flag);

42
src/isofs_wrap.c

@ -88,6 +88,9 @@ int isoburn_read_volset(struct burn_drive *d, struct isoburn_read_opts *read_opt
return -1;
}
// TODO replace with isoburn_disc_get_status()
// Check for suitable FULL or APPENDABLE status. Full only useful for image
// modification
if (o->fabricated_disc_status == BURN_DISC_BLANK) {
// FIXME construct an empty volset!!
*volset = NULL;
@ -139,38 +142,24 @@ int isoburn_activate_session(struct burn_drive *drive)
}
/** Allocate and initialize memory for libisofs related objects in
struct isoburn.
@param o A freshly created isoburn object with NULL pointers
/** Create a new data source suitable for reading from the given drive.
@param o A freshly created isoburn object, without any data_source
(src field == NULL), but with the drive field set.
@return <=0 error , 1 = success
*/
int isoburn_new_rwopts(struct isoburn *o)
int isoburn_create_data_source(struct isoburn *o)
{
// FIXME
/* <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
* This should call isoburn_data_source_new(), that now is in
* isoburn_start_emulation(). That is wrong, as for true ms discs
* isoburn_start_emulation() is never called, and thus we haven't a
* source for read previous session volset.
* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
*/
/* create and initialize the data source */
// o->src = isoburn_data_source_new(o->drive);
// if (!o->src)
// return -1;
return 1;
o->src = isoburn_data_source_new(o->drive);
return (o->src ? 1 : -1);
}
/** Dispose memory objects created by isoburn_new_rwopts(). This function
expect that the pointers in struct isoburn might still be NULL, i.e.
that isoburn_new_rwopts() was not called before.
/** Dispose the data source created by isoburn_create_data_source().
@return <=0 error , 1 = success
*/
int isoburn_free_rwopts(struct isoburn *o)
int isoburn_free_data_source(struct isoburn *o)
{
if (o->src)
data_source_free(o->src);
@ -180,7 +169,7 @@ int isoburn_free_rwopts(struct isoburn *o)
/** Initialize the emulation of multi-session on random access media.
The need for emulation is confirmed already.
@param o A freshly created isoburn object. isoburn_new_rwopts() was
@param o A freshly created isoburn object. isoburn_create_data_source() was
already called, nevertheless.
@return <=0 error , 1 = success
*/
@ -206,13 +195,6 @@ int isoburn_start_emulation(struct isoburn *o, int flag)
return 1;
}
// TODO remove >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
/* create and initialize the data source */
o->src = isoburn_data_source_new(o->drive);
if (!o->src)
return -1;
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
/* check first 64K. If 0's, the disc is treated as a blank disc, and thus
overwritten without extra check. */
i = sizeof(o->target_iso_head);

Loading…
Cancel
Save