/* Class struct of libisoburn. Copyright 2007 Vreixo Formoso Lopes and Thomas Schmitt */ #ifndef Isoburn_includeD #define Isoburn_includeD /* for uint8_t */ #include struct isoburn { /* The libburn drive to which this isoburn object is related */ /* Most isoburn calls will use a burn_drive as object handle */ struct burn_drive *drive; /* -1= inappropriate media state detected */ /* 0= libburn multi-session media, resp. undecided yet */ /* 1= random access media */ /* 2= standard i/o file */ int emulation_mode; /* Although rarely used, libburn can operate on several */ /* drives simultaneously. */ /* >>> I propose to design isoburn as chain link of a list with its */ /* >>> start stored globally. */ struct isoburn *prev; struct isoburn *next; /* --- My part --- */ /* Start address as given by image examination (bytes, not blocks) */ off_t min_start_byte; /* Aligned start address to be used for processing (counted in blocks) */ int nwa; #ifdef NIX /* Path for eventual stdandard i/o (see .emulation_mode) */ char *stdio_path; /* File descriptor for stdandard i/o. Points to stdio_path object if not -1 */ int stdio_fd; #endif /* NIX */ /* --- Vreixo's part --- */ /* The options for reading the old image. */ /* target_ropts.size will contain the number of blocks of the image. */ struct ecma119_read_opts *target_ropts; /* Buffered ISO head from media (should that become part of ecma119_read_opts ?) */ uint8_t target_iso_head[65536]; /* The filesystem structure of the old image from media. */ struct iso_volset *target_volset; /* The output options of the current run of libisofs. */ /* Element .overwrite eventually points to a buffered new head */ /* with size fields describing the new size alone, not the */ /* new combined size counted from block 0. */ /* (This head is to be merged with above target_iso_head.) */ struct ecma119_source_opts *new_wopts; }; /* Creation and disposal function */ int isoburn_new(struct isoburn **objpt, int flag); int isoburn_destroy(struct isoburn **objpt, int flag); /* Eventual readers for public attributes */ /* ( put into separate .h file then ) */ int isoburn_get_emulation_mode(struct isoburn *o, int *pt, int flag); int isoburn_get_target_volset(struct isoburn *o, struct iso_volset **pt, int flag); /* List management */ int isoburn_get_prev(struct isoburn *o, struct isoburn **pt, int flag); int isoburn_get_next(struct isoburn *o, struct isoburn **pt, int flag); int isoburn_destroy_all(struct isoburn **objpt, int flag); int isoburn_link(struct isoburn *o, struct isoburn *link, int flag); int isoburn_count(struct isoburn *o, int flag); int isoburn_by_idx(struct isoburn *o, int idx, struct isoburn **pt, int flag); int isoburn_find_by_drive(struct isoburn **pt, struct burn_drive *d, int flag); /* Non API inner interfaces */ 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_invalidate_iso(struct isoburn *o, int flag); #endif /* Isoburn_includeD */