From 923bfa0be92b630f6c654418501149cc655b3331 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Sun, 3 Nov 2024 19:24:28 +0100 Subject: [PATCH] New flag bit 12 "do not ignore XFS-style project ids" with isoburn_drive_aquire(). New isoburn_read_opts extension isoburn_ropt_projid. --- libisoburn/burn_wrap.c | 7 +++++-- libisoburn/isoburn.c | 4 +++- libisoburn/isoburn.h | 6 +++++- libisoburn/isofs_wrap.c | 3 ++- libisoburn/libisoburn.h | 13 ++++++++++++- xorriso/xorriso_timestamp.h | 2 +- 6 files changed, 28 insertions(+), 7 deletions(-) diff --git a/libisoburn/burn_wrap.c b/libisoburn/burn_wrap.c index 6713e7e0..9973a8f5 100644 --- a/libisoburn/burn_wrap.c +++ b/libisoburn/burn_wrap.c @@ -346,6 +346,7 @@ 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 + bit12= load XFS-style project ids 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 @@ -395,6 +396,7 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d, iso_image_set_ignore_aclea((*o)->image, ((flag >> 5 ) & 3) | ((!!(flag & 1024)) << 3) | ((!!(flag & (1 << 11))) << 2) | + ((!!(flag & (1 << 12))) << 6) | ((!!(flag & (1 << 15))) << 5)); #ifdef Hardcoded_cd_rW @@ -548,6 +550,7 @@ ex: bit10= if not bit6: accept all xattr namespaces from external filesystems, not only "user.". bit11= load lfa_flags (chattr) from external filesystems + bit12= load XFS-style project ids 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 @@ -577,8 +580,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) | ( 1 << 15))) | - !!(flag & 2)); + (flag & (8 | 16 | 32 | 64 | 128 | 512 | 1024 | (1 << 11) | (1 << 12) | + (1 << 15))) | !!(flag & 2)); if(ret<=0) goto ex; diff --git a/libisoburn/isoburn.c b/libisoburn/isoburn.c index 6f7fb461..f7f06414 100644 --- a/libisoburn/isoburn.c +++ b/libisoburn/isoburn.c @@ -7,7 +7,7 @@ Class core of libisoburn. Copyright 2007 - 2009 Vreixo Formoso Lopes - Copyright 2007 - 2023 Thomas Schmitt + Copyright 2007 - 2024 Thomas Schmitt Provided under GPL version 2 or later. */ @@ -883,6 +883,7 @@ int isoburn_ropt_new(struct isoburn_read_opts **new_o, int flag) o->noacl= 1; o->noea= 1; o->lfa_flags= 0; + o->projid= 0; o->noino= 1; o->nomd5= 1; o->preferjoliet= 0; @@ -986,6 +987,7 @@ int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext) o->joliet_map_mode= !!(ext & 32768); o->lfa_flags= !!(ext & (1 << 16)); o->lfa_only_settable= !!(ext & (1 << 17)); + o->projid= !!(ext & (1 << 18)); return(1); } diff --git a/libisoburn/isoburn.h b/libisoburn/isoburn.h index 38a7ccba..d32e66ce 100644 --- a/libisoburn/isoburn.h +++ b/libisoburn/isoburn.h @@ -340,8 +340,12 @@ struct isoburn_read_opts { */ /* ts C40826 */ unsigned int lfa_only_settable:1; /* Ignore non-settable flags from - from external filesystem objects + external filesystem objects */ + /* ts C41010 */ + unsigned int projid:1; /* Read XFS-style project ids 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 2a665be5..c079874d 100644 --- a/libisoburn/isofs_wrap.c +++ b/libisoburn/isofs_wrap.c @@ -355,7 +355,8 @@ 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_only_settable << 5)); + | (read_opts->lfa_only_settable << 5) + | (read_opts->projid << 6)); /* Important: do not return until iso_read_opts_free() */ diff --git a/libisoburn/libisoburn.h b/libisoburn/libisoburn.h index eee97ce8..6d90e43e 100644 --- a/libisoburn/libisoburn.h +++ b/libisoburn/libisoburn.h @@ -462,6 +462,11 @@ 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 + bit12= do not ignore XFS-style project ids from external + filesystems. + 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 @@ -1011,7 +1016,12 @@ int isoburn_ropt_get_data_cache(struct isoburn_read_opts *o, 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 + Ignore 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 + bit18= projid + Obtain XFS-style project ids from external filesystem objects (e.g. local filesystem files). This overrides the setting by isoburn_drive_aquire(). @since 1.5.8 @@ -1036,6 +1046,7 @@ int isoburn_ropt_get_data_cache(struct isoburn_read_opts *o, #define isoburn_ropt_joliet_stripped ( 16384 | 32768) #define isoburn_ropt_lfa_flags (1 << 16) #define isoburn_ropt_lfa_only_settable (1 << 17) +#define isoburn_ropt_projid (1 << 18) 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 f53ad586..22f92a26 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2024.10.26.220214" +#define Xorriso_timestamP "2024.11.03.182329"