New API calls isoburn_igopt_set_rr_reloc(), isoburn_igopt_get_rr_reloc()
This commit is contained in:
parent
1cd812e25a
commit
5d00144aa6
@ -481,6 +481,7 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
|
||||
iso_write_opts_set_allow_dir_id_ext(wopts, opts->allow_dir_id_ext);
|
||||
iso_write_opts_set_omit_version_numbers(wopts, opts->omit_version_numbers);
|
||||
iso_write_opts_set_allow_deep_paths(wopts, opts->allow_deep_paths);
|
||||
iso_write_opts_set_rr_reloc(wopts, opts->rr_reloc_dir, opts->rr_reloc_flags);
|
||||
iso_write_opts_set_allow_longer_paths(wopts, opts->allow_longer_paths);
|
||||
iso_write_opts_set_max_37_char_filenames(wopts, opts->max_37_char_filenames);
|
||||
iso_write_opts_set_no_force_dots(wopts, opts->no_force_dots);
|
||||
@ -974,6 +975,8 @@ int isoburn_igopt_new(struct isoburn_imgen_opts **new_o, int flag)
|
||||
o->allow_dir_id_ext = 0;
|
||||
o->omit_version_numbers= 0;
|
||||
o->allow_deep_paths= 1;
|
||||
o->rr_reloc_dir= NULL;
|
||||
o->rr_reloc_flags= 0;
|
||||
o->allow_longer_paths= 0;
|
||||
o->max_37_char_filenames= 0;
|
||||
o->no_force_dots= 0;
|
||||
@ -1023,6 +1026,8 @@ int isoburn_igopt_destroy(struct isoburn_imgen_opts **o, int flag)
|
||||
|
||||
if(*o==NULL)
|
||||
return(0);
|
||||
if((*o)->rr_reloc_dir != NULL)
|
||||
free((*o)->rr_reloc_dir);
|
||||
for(i= 0; i < Libisoburn_max_appended_partitionS; i++)
|
||||
if((*o)->appended_partitions[i] != NULL)
|
||||
free((*o)->appended_partitions[i]);
|
||||
@ -1114,6 +1119,38 @@ int isoburn_igopt_get_relaxed(struct isoburn_imgen_opts *o, int *relax)
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
int isoburn_igopt_set_rr_reloc(struct isoburn_imgen_opts *o, char *name,
|
||||
int flags)
|
||||
{
|
||||
if(o->rr_reloc_dir != name) {
|
||||
if(o->rr_reloc_dir != NULL)
|
||||
free(o->rr_reloc_dir);
|
||||
o->rr_reloc_dir= NULL;
|
||||
if(name != NULL) {
|
||||
o->rr_reloc_dir= strdup(name);
|
||||
if(o->rr_reloc_dir == NULL) {
|
||||
isoburn_msgs_submit(NULL, 0x00060000,
|
||||
"Cannot allocate memory for image generation options",
|
||||
0, "FATAL", 0);
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
o->rr_reloc_flags = flags & 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int isoburn_igopt_get_rr_reloc(struct isoburn_imgen_opts *o, char **name,
|
||||
int *flags)
|
||||
{
|
||||
*name= o->rr_reloc_dir;
|
||||
*flags= o->rr_reloc_flags;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
int isoburn_igopt_set_untranslated_name_len(struct isoburn_imgen_opts *o,
|
||||
int len)
|
||||
{
|
||||
|
@ -443,6 +443,21 @@ struct isoburn_imgen_opts {
|
||||
*/
|
||||
unsigned int allow_deep_paths :1;
|
||||
|
||||
/**
|
||||
* If not allow_deep_paths is in effect, then it may become
|
||||
* necessary to relocate directories so that no ECMA-119 file path
|
||||
* has more than 8 components. These directories are grafted into either
|
||||
* the root directory of the ISO image or into a dedicated relocation
|
||||
* directory. For details see libisofs.h, iso_write_opts_set_rr_reloc().
|
||||
*/
|
||||
char *rr_reloc_dir; /* IsoNode name in root directory. NULL or
|
||||
empty text means root itself. */
|
||||
int rr_reloc_flags; /* bit0= mark auto-created rr_reloc_dir by RE
|
||||
bit1= not settable via API (used internally)
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Allow path in the ISO-9660 tree to have more than 255 characters.
|
||||
*/
|
||||
|
@ -242,7 +242,7 @@ void isoburn_version(int *major, int *minor, int *micro);
|
||||
*/
|
||||
#define isoburn_libisofs_req_major 1
|
||||
#define isoburn_libisofs_req_minor 2
|
||||
#define isoburn_libisofs_req_micro 0
|
||||
#define isoburn_libisofs_req_micro 1
|
||||
|
||||
/** The minimum version of libburn to be used with this version of libisoburn
|
||||
at compile time.
|
||||
@ -1187,6 +1187,45 @@ int isoburn_igopt_set_relaxed(struct isoburn_imgen_opts *o, int relax);
|
||||
int isoburn_igopt_get_relaxed(struct isoburn_imgen_opts *o, int *relax);
|
||||
|
||||
|
||||
/** If not isoburn_igopt_allow_deep_paths is in effect, then it may become
|
||||
necessary to relocate directories so that no ECMA-119 file path
|
||||
has more than 8 components. These directories are grafted into either
|
||||
the root directory of the ISO image or into a dedicated relocation
|
||||
directory. For details see libisofs.h.
|
||||
Wrapper for: iso_write_opts_set_rr_reloc()
|
||||
@since 1.2.2
|
||||
@param o The option set to work on
|
||||
@param name The name of the relocation directory in the root directory.
|
||||
Do not prepend "/". An empty name or NULL will direct
|
||||
relocated directories into the root directory. This is the
|
||||
default.
|
||||
If the given name does not exist in the root directory when
|
||||
isoburn_disc_write() is called, and if there are directories
|
||||
at path level 8, then directory /name will be created
|
||||
automatically.
|
||||
@param flags Bitfield for control purposes.
|
||||
bit0= Mark the relocation directory by a Rock Ridge RE entry,
|
||||
if it gets created during isoburn_disc_write(). This
|
||||
will make it invisible for most Rock Ridge readers.
|
||||
bit1= not settable via API (used internally)
|
||||
@return > 0 success, <= 0 failure
|
||||
*/
|
||||
int isoburn_igopt_set_rr_reloc(struct isoburn_imgen_opts *o, char *name,
|
||||
int flags);
|
||||
|
||||
/** Obtain the settings of isoburn_igopt_set_rr_reloc().
|
||||
@since 1.2.2
|
||||
@param o The option set to work on
|
||||
@param name Will return NULL or a pointer to the name of the relocation
|
||||
directory in the root directory. Do not alter or dispose the
|
||||
memory which holds this name.
|
||||
@param flags Will return the flags bitfield.
|
||||
@return > 0 success, <= 0 failure
|
||||
*/
|
||||
int isoburn_igopt_get_rr_reloc(struct isoburn_imgen_opts *o, char **name,
|
||||
int *flags);
|
||||
|
||||
|
||||
/** Caution: This option breaks any assumptions about names that
|
||||
are supported by ECMA-119 specifications.
|
||||
Try to omit any translation which would make a file name compliant to the
|
||||
|
@ -38,6 +38,7 @@ isoburn_igopt_get_over_ugid;
|
||||
isoburn_igopt_get_partition_img;
|
||||
isoburn_igopt_get_pvd_times;
|
||||
isoburn_igopt_get_relaxed;
|
||||
isoburn_igopt_get_rr_reloc;
|
||||
isoburn_igopt_get_scdbackup_tag;
|
||||
isoburn_igopt_get_sort_files;
|
||||
isoburn_igopt_get_system_area;
|
||||
@ -54,6 +55,7 @@ isoburn_igopt_set_over_ugid;
|
||||
isoburn_igopt_set_partition_img;
|
||||
isoburn_igopt_set_pvd_times;
|
||||
isoburn_igopt_set_relaxed;
|
||||
isoburn_igopt_set_rr_reloc;
|
||||
isoburn_igopt_set_scdbackup_tag;
|
||||
isoburn_igopt_set_sort_files;
|
||||
isoburn_igopt_set_system_area;
|
||||
|
@ -1 +1 @@
|
||||
#define Xorriso_timestamP "2012.03.10.112727"
|
||||
#define Xorriso_timestamP "2012.03.10.145124"
|
||||
|
Loading…
Reference in New Issue
Block a user