diff --git a/libisoburn/isoburn.c b/libisoburn/isoburn.c index c5c77638..c16a62fb 100644 --- a/libisoburn/isoburn.c +++ b/libisoburn/isoburn.c @@ -743,14 +743,28 @@ int isoburn_ropt_set_input_charset(struct isoburn_read_opts *o, } -int isoburn_igopt_get_in_charset(struct isoburn_read_opts *o, - char **input_charset) +int isoburn_ropt_get_input_charset(struct isoburn_read_opts *o, + char **input_charset) { *input_charset= o->input_charset; return(1); } +int isoburn_ropt_set_auto_incharset(struct isoburn_read_opts *o, int mode) +{ + o->auto_input_charset= mode & 1; + return(1); +} + + +int isoburn_ropt_get_auto_incharset(struct isoburn_read_opts *o, int *mode) +{ + *mode= o->auto_input_charset; + return(1); +} + + int isoburn_ropt_get_size_what(struct isoburn_read_opts *o, uint32_t *size, int *has_what) { diff --git a/libisoburn/isoburn.h b/libisoburn/isoburn.h index 4a9ec2af..ab26d91c 100644 --- a/libisoburn/isoburn.h +++ b/libisoburn/isoburn.h @@ -270,6 +270,15 @@ struct isoburn_read_opts { */ char *input_charset; + /** + * Enable or disable methods to automatically choose an input charset. + * This eventually overrides input_charset. + * + * bit0= allow to set the input character set automatically from + * attribute "isofs.cs" of root directory + */ + int auto_input_charset; + /* modified by the function isoburn_read_image */ unsigned int hasRR:1; /*< It will be set to 1 if RR extensions are present, to 0 if not. */ diff --git a/libisoburn/isofs_wrap.c b/libisoburn/isofs_wrap.c index 5629166e..05fcc015 100644 --- a/libisoburn/isofs_wrap.c +++ b/libisoburn/isofs_wrap.c @@ -216,9 +216,9 @@ create_blank_image:; iso_read_opts_set_default_gid(ropts, read_opts->gid); iso_read_opts_set_input_charset(ropts, read_opts->input_charset); - /* <<< experimental API call of libisofs - iso_read_opts_set_error_behavior(ropts, 1); - */ +#ifdef Libisofs_has_auto_input_charseT + iso_read_opts_auto_input_charset(ropts, read_opts->auto_input_charset); +#endif ds = isoburn_data_source_new(d); if(o->iso_data_source!=NULL) diff --git a/libisoburn/libisoburn.h b/libisoburn/libisoburn.h index 21feb185..d56498dc 100644 --- a/libisoburn/libisoburn.h +++ b/libisoburn/libisoburn.h @@ -764,7 +764,7 @@ int isoburn_ropt_get_default_dirperms(struct isoburn_read_opts *o, /** Set the character set for reading RR file names from ISO images. @since 0.1.0 @param o The option set to work on - @param input_charset Set this to NULL to use the default locale charset. + @param input_charset Set this to NULL to use the default locale charset For selecting a particular character set, submit its name, e.g. as listed by program iconv -l. Example: "UTF-8". @@ -775,6 +775,20 @@ int isoburn_ropt_set_input_charset(struct isoburn_read_opts *o, int isoburn_ropt_get_input_charset(struct isoburn_read_opts *o, char **input_charset); +/** + Enable or disable methods to automatically choose an input charset. + This eventually overrides the name set via isoburn_ropt_set_input_charset() + @since 0.3.8 + + @param mode Bitfield for control purposes: + bit0= allow to set the input character set automatically from + attribute "isofs.cs" of root directory. + Submit any other bits with value 0. + @return 1 success, <=0 failure + */ +int isoburn_ropt_set_auto_incharset(struct isoburn_read_opts *o, int mode); +int isoburn_ropt_get_auto_incharset(struct isoburn_read_opts *o, int *mode); + /** After calling function isoburn_read_image() there are informations available in the option set. @@ -803,7 +817,7 @@ int isoburn_ropt_get_input_charset(struct isoburn_read_opts *o, /* ts A90122 */ /* >>> to be implemented: #define isoburn_ropt_has_acl 64 -#define isoburn_ropt_ihas_ea 128 +#define isoburn_ropt_has_ea 128 */ int isoburn_ropt_get_size_what(struct isoburn_read_opts *o, diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 729d6258..8bd898fc 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2009.03.19.172806" +#define Xorriso_timestamP "2009.03.20.192910"