diff --git a/libisoburn/isoburn.c b/libisoburn/isoburn.c index d1eed224..a560325c 100644 --- a/libisoburn/isoburn.c +++ b/libisoburn/isoburn.c @@ -919,11 +919,13 @@ int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext) int isoburn_igopt_set_relaxed(struct isoburn_imgen_opts *o, int relax) { - o->omit_version_numbers= !!(relax&1); + o->omit_version_numbers= (!!(relax&1)) | + (2 * !!(relax & isoburn_igopt_only_iso_versions)); o->allow_deep_paths= !!(relax&2); o->allow_longer_paths= !!(relax&4); o->max_37_char_filenames= !!(relax&8); - o->no_force_dots= !!(relax&16); + o->no_force_dots= (!!(relax&16)) | + (2 * !!(relax & isoburn_igopt_no_j_force_dots)); o->allow_lowercase= !!(relax&32); o->allow_full_ascii= !!(relax&64); o->joliet_longer_paths= !!(relax&128); diff --git a/libisoburn/isoburn.h b/libisoburn/isoburn.h index a9b0e397..839f0a09 100644 --- a/libisoburn/isoburn.h +++ b/libisoburn/isoburn.h @@ -350,8 +350,10 @@ struct isoburn_imgen_opts { /** * Omit the version number (";1") at the end of the ISO-9660 identifiers. * Version numbers are usually not used. + * bit0= omit version number with ECMA-119 and Joliet + * bit1= omit version number with Joliet alone */ - unsigned int omit_version_numbers :1; + unsigned int omit_version_numbers :2; /** * Allow ISO-9660 directory hierarchy to be deeper than 8 levels. @@ -375,8 +377,10 @@ struct isoburn_imgen_opts { * ISO-9660 forces filenames to have a ".", that separates file name from * extension. libisofs adds it if original filename doesn't has one. Set * this to 1 to prevent this behavior + * bit0= no forced dot with ECMA-119 + * bit1= no forced dot with Joliet */ - unsigned int no_force_dots :1; + unsigned int no_force_dots :2; /** * Allow lowercase characters in ISO-9660 filenames. By default, only diff --git a/libisoburn/libisoburn.h b/libisoburn/libisoburn.h index 1624d015..c0947374 100644 --- a/libisoburn/libisoburn.h +++ b/libisoburn/libisoburn.h @@ -962,8 +962,8 @@ int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext); @param relax Bitfield: bit0= omit_version_numbers Omit the version number (";1") at the end of the - ISO-9660 identifiers. Version numbers are usually - not used. + ISO-9660 and Joliet identifiers. + Version numbers are usually not used by readers. bit1= allow_deep_paths Allow ISO-9660 directory hierarchy to be deeper than 8 levels. @@ -1012,7 +1012,18 @@ int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext); prefixed ES fields. This saves 5 to 10 bytes per file and might avoid problems with readers which only accept RRIP. SUSP-1.10 allows it, SUSP-1.12 frowns on it. - + bit12= only_iso_numbers + Same as bit1 omit_version_number but restricted to the names + in the eventual Joliet tree. + @since 0.5.4 + For reasons of backward compatibility it is not possible yet + to disable version numbers for ISO 9660 while enabling them + for Joliet. + bit13= no_j_force_dots + Same as no_force_dots but affecting the names in the eventual + Joliet tree rather than the ISO 9660 / ECMA-119 names. + @since 0.5.4 + Previous versions added dots to Joliet names unconditionally. @return 1 success, <=0 failure */ #define isoburn_igopt_omit_version_numbers 1 @@ -1027,6 +1038,8 @@ int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext); #define isoburn_igopt_rrip_version_1_10 512 #define isoburn_igopt_dir_rec_mtime 1024 #define isoburn_igopt_aaip_susp_1_10 2048 +#define isoburn_igopt_only_iso_versions 4096 +#define isoburn_igopt_no_j_force_dots 8192 int isoburn_igopt_set_relaxed(struct isoburn_imgen_opts *o, int relax); int isoburn_igopt_get_relaxed(struct isoburn_imgen_opts *o, int *relax); diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 186f1768..a272dbcf 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2010.04.12.111137" +#define Xorriso_timestamP "2010.04.13.103037"