diff --git a/libisoburn/isoburn.c b/libisoburn/isoburn.c index 2a1fe786..9086c6b3 100644 --- a/libisoburn/isoburn.c +++ b/libisoburn/isoburn.c @@ -842,6 +842,8 @@ int isoburn_ropt_new(struct isoburn_read_opts **new_o, int flag) o->norock= 0; o->nojoliet= 0; o->noiso1999= 1; + o->do_ecma119_map= 0; + o->map_mode= 1; o->noaaip= 1; o->noacl= 1; o->noea= 1; @@ -940,6 +942,8 @@ int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext) o->noea= !!(ext & 128); o->noino= !!(ext & 256); o->nomd5= (ext >> 9) & 3; + o->do_ecma119_map= !!(ext & 2048); + o->map_mode= (ext >> 12) & 3; return(1); } @@ -949,7 +953,8 @@ int isoburn_ropt_get_extensions(struct isoburn_read_opts *o, int *ext) *ext= (!!o->norock) | ((!!o->nojoliet)<<1) | ((!!o->noiso1999)<<2) | ((!!o->preferjoliet)<<3) | ((!!o->pretend_blank)<<4) | ((!!o->noaaip) << 5) | ((!!o->noacl) << 6) | ((!!o->noea) << 7) | - ((!!o->noino) << 8) | ((o->nomd5 & 3) << 9); + ((!!o->noino) << 8) | ((o->nomd5 & 3) << 9) | + ((!!o->do_ecma119_map) << 11) | ((o->map_mode & 3) << 12); return(1); } diff --git a/libisoburn/isoburn.h b/libisoburn/isoburn.h index de4b7abb..26b0ff3f 100644 --- a/libisoburn/isoburn.h +++ b/libisoburn/isoburn.h @@ -322,6 +322,9 @@ struct isoburn_read_opts { unsigned int nojoliet:1; /*< Do not read Joliet extensions */ unsigned int noiso1999:1; /*< Do not read ISO 9660:1999 enhanced tree */ + unsigned int do_ecma119_map:1; /* call iso_read_opts_set_ecma119_map() */ + unsigned int map_mode:2; /* argument for do_ecma119_map */ + /* ts A90121 */ unsigned int noaaip:1; /* Do not read AAIP for ACL and EA */ unsigned int noacl:1; /* Do not read ACL from external file objects */ diff --git a/libisoburn/isofs_wrap.c b/libisoburn/isofs_wrap.c index 28f217d7..5986c8d5 100644 --- a/libisoburn/isofs_wrap.c +++ b/libisoburn/isofs_wrap.c @@ -268,6 +268,8 @@ displacement_rollover:; else int_num= 0; iso_read_opts_set_no_md5(ropts, int_num); + if(read_opts->do_ecma119_map) + iso_read_opts_set_ecma119_map(ropts, read_opts->map_mode); iso_read_opts_set_new_inos(ropts, read_opts->noino); iso_read_opts_set_no_joliet(ropts, read_opts->nojoliet); diff --git a/libisoburn/libisoburn.h b/libisoburn/libisoburn.h index 1eeb8283..7252b424 100644 --- a/libisoburn/libisoburn.h +++ b/libisoburn/libisoburn.h @@ -884,6 +884,21 @@ int isoburn_ropt_get_data_cache(struct isoburn_read_opts *o, @since 1.0.4 Do not check eventual session_md5 tags although bit9 is not set. + bit11= do_ecma119_map + @since 1.4.2 + Set iso_read_opts_set_ecma119_map() to map_mode rather + than relying on the default setting of libisofs. + bit12 - bit13= map_mode + @since 1.4.2 + How to convert file names if neither Rock Ridge nor + Joliet names are present and acceptable. + 0 = unmapped: Take name as recorded in ECMA-119 directory + record (not suitable for writing them to + a new ISO filesystem) + 1 = stripped: Like unmapped, but strip off trailing ";1" + or ".;1" + 2 = uppercase: Like stripped, but map {a-z} to {A-Z} + 3 = lowercase: Like stripped, but map {A-Z} to {a-z} @return 1 success, <=0 failure */ #define isoburn_ropt_norock 1 @@ -897,6 +912,10 @@ int isoburn_ropt_get_data_cache(struct isoburn_read_opts *o, #define isoburn_ropt_noino 256 #define isoburn_ropt_nomd5 512 #define isoburn_ropt_nomd5tag 1024 +#define isoburn_ropt_map_unmapped ( 2048 | 0 ) +#define isoburn_ropt_map_stripped ( 2048 | 4096 ) +#define isoburn_ropt_map_uppercase ( 2048 | 8192 ) +#define isoburn_ropt_map_lowercase ( 2048 | 12288 ) int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext); int isoburn_ropt_get_extensions(struct isoburn_read_opts *o, int *ext); diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index be20b872..3bd86a24 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2015.08.12.091220" +#define Xorriso_timestamP "2015.08.17.200155"