diff --git a/libisoburn/burn_wrap.c b/libisoburn/burn_wrap.c index fb113048..7962f40d 100644 --- a/libisoburn/burn_wrap.c +++ b/libisoburn/burn_wrap.c @@ -346,6 +346,9 @@ int isoburn_is_intermediate_dvd_rw(struct burn_drive *d, int flag) bit10= if not bit6: accept all xattr namespaces from external filesystems, not only "user.". bit11= load lfa_flags (chattr) from external filesystems + bit15= ignore non-settable lfa_flags when importing files from + disk and do not record "isofs.fa" if the other flags + are all zero */ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d, int flag) @@ -391,7 +394,8 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d, (*o)->msgs_submit_flag= libisoburn_default_msgs_submit_flag; iso_image_set_ignore_aclea((*o)->image, ((flag >> 5 ) & 3) | ((!!(flag & 1024)) << 3) | - ((!!(flag & (1 << 11))) << 2)); + ((!!(flag & (1 << 11))) << 2) | + ((!!(flag & (1 << 15))) << 5)); #ifdef Hardcoded_cd_rW /* <<< A70929 : hardcoded CD-RW with fabricated -msinfo */ @@ -544,6 +548,9 @@ ex: bit10= if not bit6: accept all xattr namespaces from external filesystems, not only "user.". bit11= load lfa_flags (chattr) from external filesystems + bit15= ignore non-settable lfa_flags when importing files from + disk and do not record "isofs.fa" if the other flags + are all zero */ int isoburn_drive_aquire(struct burn_drive_info *drive_infos[], char *adr, int flag) @@ -570,8 +577,8 @@ int isoburn_drive_aquire(struct burn_drive_info *drive_infos[], goto ex; drive_grabbed= 1; ret= isoburn_welcome_media(&o, (*drive_infos)[0].drive, - (flag & (8 | 16 | 32 | 64 | 128 | 512 | 1024 | (1 << 11))) | - !!(flag & 2)); + (flag & (8 | 16 | 32 | 64 | 128 | 512 | 1024 | (1 << 11) | ( 1 << 15))) | + !!(flag & 2)); if(ret<=0) goto ex; diff --git a/libisoburn/isoburn.c b/libisoburn/isoburn.c index 282fa746..6f7fb461 100644 --- a/libisoburn/isoburn.c +++ b/libisoburn/isoburn.c @@ -985,6 +985,7 @@ int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext) o->do_joliet_map= !!(ext & 16384); o->joliet_map_mode= !!(ext & 32768); o->lfa_flags= !!(ext & (1 << 16)); + o->lfa_only_settable= !!(ext & (1 << 17)); return(1); } @@ -996,7 +997,8 @@ int isoburn_ropt_get_extensions(struct isoburn_read_opts *o, int *ext) ((!!o->noaaip) << 5) | ((!!o->noacl) << 6) | ((!!o->noea) << 7) | ((!!o->noino) << 8) | ((o->nomd5 & 3) << 9) | ((!!o->do_ecma119_map) << 11) | ((o->map_mode & 3) << 12) | - ((!!o->do_joliet_map) << 14) | ((!!o->joliet_map_mode) << 15); + ((!!o->do_joliet_map) << 14) | ((!!o->joliet_map_mode) << 15) | + ((!!o->lfa_flags) << 16) | ((!!o->lfa_only_settable) << 17); return(1); } diff --git a/libisoburn/isoburn.h b/libisoburn/isoburn.h index a47b6026..38a7ccba 100644 --- a/libisoburn/isoburn.h +++ b/libisoburn/isoburn.h @@ -335,8 +335,13 @@ struct isoburn_read_opts { unsigned int noea:1; /* Do not read XFS-style EA from externals */ /* ts C40716 */ - unsigned int lfa_flags:1; /* Read Linux file attribute flags (chattr) */ - + unsigned int lfa_flags:1; /* Read Linux file attribute flags (chattr) + from external filesystem objects + */ + /* ts C40826 */ + unsigned int lfa_only_settable:1; /* Ignore non-settable flags from + from external filesystem objects + */ /* ts A90508 */ unsigned int noino:1; /* Discard eventual PX inode numbers */ diff --git a/libisoburn/isofs_wrap.c b/libisoburn/isofs_wrap.c index 89dc4633..2a665be5 100644 --- a/libisoburn/isofs_wrap.c +++ b/libisoburn/isofs_wrap.c @@ -354,7 +354,8 @@ create_blank_image:; goto create_blank_image; } iso_image_set_ignore_aclea(o->image, read_opts->noacl | (read_opts->noea << 1) - | (read_opts->lfa_flags << 2)); + | (read_opts->lfa_flags << 2) + | (read_opts->lfa_only_settable << 5)); /* Important: do not return until iso_read_opts_free() */ diff --git a/libisoburn/libisoburn.h b/libisoburn/libisoburn.h index c66673be..763a438a 100644 --- a/libisoburn/libisoburn.h +++ b/libisoburn/libisoburn.h @@ -462,6 +462,9 @@ int isoburn_drive_scan_and_grab(struct burn_drive_info *drive_infos[], This can later be overriden by isoburn_read_image() according to its isoburn_read_opts. @since 1.5.8 + bit15= ignore non-settable lfa_flags when importing files from + disk and do not record "isofs.fa" if the other flags + are all zero @return 1 = success , 0 = drive not found , <0 = other error Please excuse the typo "aquire" in the function name. @@ -927,8 +930,9 @@ int isoburn_ropt_get_data_cache(struct isoburn_read_opts *o, int *set_flag, int flag); -/** Which existing ISO 9660 extensions in the image to read or not to read. - Whether to read the content of an existing image at all. +/** Which existing ISO 9660 extensions in the image or in external filesystems + to read or not to read, and whether to read the content of an existing + image at all. The bits can be combined by | and inquired by &. @since 0.1.0 @param ext Bitfield: @@ -1005,7 +1009,11 @@ int isoburn_ropt_get_data_cache(struct isoburn_read_opts *o, external filesystem objects (e.g. local filesystem files). This overrides the setting by isoburn_drive_aquire(). @since 1.5.8 - + bit17= lfa_only_settable + gnore non-settable lfa_flags when importing files from + external filesystem objects (e.g. local filesystem files). + This overrides the setting by isoburn_drive_aquire(). + @since 1.5.8 @return 1 success, <=0 failure */ #define isoburn_ropt_norock 1 @@ -1025,7 +1033,8 @@ int isoburn_ropt_get_data_cache(struct isoburn_read_opts *o, #define isoburn_ropt_map_lowercase ( 2048 | 12288 ) #define isoburn_ropt_joliet_unmapped ( 16384 | 0) #define isoburn_ropt_joliet_stripped ( 16384 | 32768) -#define isoburn_ropt_lfa_flags (1 << 16) +#define isoburn_ropt_lfa_flags (1 << 16) +#define isoburn_ropt_lfa_only_settable (1 << 17) 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 3ede3422..a5c99044 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2024.08.28.143041" +#define Xorriso_timestamP "2024.08.30.222518"