diff --git a/libisoburn/isoburn.c b/libisoburn/isoburn.c index 17c86c9b..f7919bfb 100644 --- a/libisoburn/isoburn.c +++ b/libisoburn/isoburn.c @@ -466,6 +466,7 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d, iso_write_opts_set_rrip_1_10_px_ino(wopts, 1); iso_write_opts_set_aaip(wopts, opts->aaip); iso_write_opts_set_untranslated_name_len(wopts, opts->untranslated_name_len); + 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_allow_longer_paths(wopts, opts->allow_longer_paths); @@ -934,6 +935,7 @@ int isoburn_igopt_new(struct isoburn_imgen_opts **new_o, int flag) o->hardlinks= 0; o->aaip = 0; o->untranslated_name_len = 0; + o->allow_dir_id_ext = 0; o->omit_version_numbers= 0; o->allow_deep_paths= 1; o->allow_longer_paths= 0; @@ -1048,6 +1050,7 @@ int isoburn_igopt_set_relaxed(struct isoburn_imgen_opts *o, int relax) o->rrip_version_1_10= !!(relax & isoburn_igopt_rrip_version_1_10); o->dir_rec_mtime= !!(relax & isoburn_igopt_dir_rec_mtime); o->aaip_susp_1_10= !!(relax & isoburn_igopt_aaip_susp_1_10); + o->allow_dir_id_ext= !!(relax & isoburn_igopt_allow_dir_id_ext); return(1); } @@ -1061,7 +1064,8 @@ int isoburn_igopt_get_relaxed(struct isoburn_imgen_opts *o, int *relax) ((!!o->always_gmt)<<8) | ((!!o->rrip_version_1_10)<<9) | ((!!o->dir_rec_mtime)<<10) | ((!!o->aaip_susp_1_10)<<11) | ((!!(o->omit_version_numbers & 2))<<12) | - ((!!(o->no_force_dots & 2))<<13); + ((!!(o->no_force_dots & 2))<<13) | + ((!!o->allow_dir_id_ext) << 14); return(1); } diff --git a/libisoburn/isoburn.h b/libisoburn/isoburn.h index 76ad5786..572a384d 100644 --- a/libisoburn/isoburn.h +++ b/libisoburn/isoburn.h @@ -395,6 +395,15 @@ struct isoburn_imgen_opts { */ unsigned int untranslated_name_len; + /* + * Convert directory names for ECMA-119 similar to other file names, but do + * not force a dot or add a version number. + * This violates ECMA-119 by allowing one "." and especially ISO level 1 + * by allowing DOS style 8.3 names rather than only 8 characters. + * (mkisofs and its clones seem to do this violation.) + */ + unsigned int allow_dir_id_ext :1; + /** * Omit the version number (";1") at the end of the ISO-9660 identifiers. * Version numbers are usually not used. diff --git a/libisoburn/libisoburn.h b/libisoburn/libisoburn.h index a38906ff..d6d72467 100644 --- a/libisoburn/libisoburn.h +++ b/libisoburn/libisoburn.h @@ -1090,6 +1090,14 @@ int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext); Joliet tree rather than the ISO 9660 / ECMA-119 names. @since 0.5.4 Previous versions added dots to Joliet names unconditionally. + bit14= allow_dir_id_ext + Convert directory names for ECMA-119 similar to other file + names, but do not force a dot or add a version number. + This violates ECMA-119 by allowing one "." and especially + ISO level 1 by allowing DOS style 8.3 names rather than + only 8 characters. + (mkisofs and its clones obviously do this violation.) + @since 0.6.8 @return 1 success, <=0 failure */ #define isoburn_igopt_omit_version_numbers 1 @@ -1106,6 +1114,7 @@ int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext); #define isoburn_igopt_aaip_susp_1_10 2048 #define isoburn_igopt_only_iso_versions 4096 #define isoburn_igopt_no_j_force_dots 8192 +#define isoburn_igopt_allow_dir_id_ext 16384 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 3f65c794..02d2d546 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2010.12.25.071522" +#define Xorriso_timestamP "2010.12.25.091515"