New -lfa_flags mode "restore_single"

This commit is contained in:
Thomas Schmitt 2024-09-08 12:22:27 +02:00
parent 66a7440b0c
commit b2ae46a4cf
9 changed files with 188 additions and 90 deletions

View File

@ -147,8 +147,8 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->do_iso1999= 0;
m->ecma119_map= 1;
m->joliet_map= 1;
/* off:read:restore:restore_su_auto:restore_only_known */
m->lfa_flags_default= 2 | (11 << 11);
/* off:read:restore:restore_su_auto:restore_only_known:restore_single */
m->lfa_flags_default= 2 | (11 << 11) | (1 << 16);
if(geteuid() != 0) {
/* do not restore known superuser lfa_flags */
m->lfa_flags_default|= (1 << 13);

View File

@ -217,7 +217,7 @@ int Xorriso_option_lfa_flags(struct XorrisO *xorriso, char *mode, int flag)
}
}
} else if(l >= 14 && strncmp(cpt, "restore_error=", 14) == 0) {
Xorriso__to_upper(cpt + 14, severity, (int) (int) sizeof(severity), 0);
Xorriso__to_upper(cpt + 14, severity, (int) sizeof(severity), 0);
if(strcmp(severity, "SILENT") != 0) {
ret= Xorriso__text_to_sev(severity, &sev, 0);
if(ret<=0) {
@ -239,6 +239,12 @@ int Xorriso_option_lfa_flags(struct XorrisO *xorriso, char *mode, int flag)
Xorriso__to_lower(severity, xorriso->lfa_restore_err_sev,
sizeof(xorriso->lfa_restore_err_sev), 0);
} else if(l >= 14 && strncmp(cpt, "restore_single", 14) == 0) {
xorriso->lfa_flags_setting|= 1 << 16;
} else if(l >= 14 && strncmp(cpt, "no_restore_single", 14) == 0) {
xorriso->lfa_flags_setting&= ~(1 << 16);
} else if(l == 7 && strncmp(cpt, "default", l) == 0) {
xorriso->lfa_flags_setting= xorriso->lfa_flags_default;
xorriso->lfa_restore_mask= ~((uint64_t) 0);
@ -258,7 +264,7 @@ int Xorriso_option_lfa_flags(struct XorrisO *xorriso, char *mode, int flag)
}
xorriso->do_aaip&= ~(31 << 11);
if(xorriso->lfa_flags_setting & 1)
xorriso->do_aaip|= xorriso->lfa_flags_setting & (31 << 11);
xorriso->do_aaip|= xorriso->lfa_flags_setting & (63 << 11);
ret= Xorriso_set_ignore_aclea(xorriso, 0);
if(ret <= 0)
goto ex;

View File

@ -303,11 +303,16 @@ ex:;
}
/*
@flag bit0= do not report error in case of error worth of single flag try
@return 0=failure, 1=ok, 2=pardoned,
3=pardoned error worth of single flag try
*/
int Xorriso_report_chattr_outcome(struct XorrisO *xorriso, char *disk_path,
uint64_t lfa_flags, uint64_t lfa_mask,
int iso_ret, int os_errno, int flag)
{
int ret, eps_ret, sev;
int ret, eps_ret, sev, lfa_error= 0;
char msg[101], *lfa_text= NULL, severity[20];
if(iso_ret == 1)
@ -323,11 +328,15 @@ int Xorriso_report_chattr_outcome(struct XorrisO *xorriso, char *disk_path,
if(lfa_text == NULL)
lfa_text= strdup("-unknown-attributes-");
if(iso_ret < 0) {
if(iso_ret == (int) ISO_LFA_NO_SET_LOCAL) {
lfa_error= 1;
if(flag & 1)
{ret= 3; goto ex;}
}
strcpy(msg, "Could not set chattr '");
if(lfa_text != NULL)
strcat(msg, lfa_text);
strcat(msg, "'");
/* Adjust severity to event_pt.
Number 0x7f000000 comes from libisofs.h, iso_error_get_severity */
Xorriso__text_to_sev(severity, &sev, 0);
@ -355,7 +364,7 @@ ex:;
if(ret == 0) {
eps_ret= Xorriso_eval_problem_status(xorriso, 0, 1);
if(eps_ret >= 0)
ret= 2;
ret= 2 + !!lfa_error;
}
if(lfa_text != NULL)
free(lfa_text);
@ -363,6 +372,58 @@ ex:;
}
/*
@param flag bit0= try single attribute flags if the whole change_mask fails
possibly because of inappropriate attributes
@return 0=failure
1= ok
2= pardoned
3= pardoned error worth of single flag try
4= with bit0: partial success
*/
int Xorriso_local_set_lfa_flags(struct XorrisO *xorriso, char *disk_path,
uint64_t lfa_flags, int max_bit,
uint64_t change_mask, int *os_errno, int flag)
{
int ret, partial_success= 0, os_errno_mem, i, count;
uint64_t single_mask, single_lfa;
ret= iso_local_set_lfa_flags(disk_path, lfa_flags, max_bit, change_mask,
os_errno, 4);
ret= Xorriso_report_chattr_outcome(xorriso, disk_path, lfa_flags, change_mask,
ret, *os_errno, flag & 1);
if(ret != 3 || !(flag & 1))
return(ret);
/* Try with single flag calls */
count= 0;
for(i= 0; i <= max_bit && i < 64; i++)
if(change_mask & (((uint64_t) 1) << i))
count++;
if(count < 2)
return(ret); /* was already a single flag call */
os_errno_mem= *os_errno;
for(i= 0; i <= max_bit && i < 64; i++) {
single_mask= ((uint64_t) 1) << i;
if(!(single_mask & change_mask))
continue;
single_lfa= lfa_flags & single_mask;
*os_errno= 0;
ret= iso_local_set_lfa_flags(disk_path, single_lfa, max_bit, single_mask,
os_errno, 4);
ret= Xorriso_report_chattr_outcome(xorriso, disk_path, single_lfa,
single_mask, ret, *os_errno, 0);
if(ret <= 0)
return(ret);
if(ret == 1)
partial_success= 1;
}
*os_errno= os_errno_mem;
return(3 + !!partial_success);
}
uint64_t Xorriso__lfa_bits(char *lfa_text)
{
int ret;
@ -459,10 +520,9 @@ int Xorriso_early_chattr_CF(struct XorrisO *xorriso, IsoNode *node,
set_mask&= xorriso_mask;
if(set_mask == 0)
return(4);
ret= iso_local_set_lfa_flags(disk_path, lfa_flags, max_bit, set_mask,
os_errno, 4);
ret= Xorriso_report_chattr_outcome(xorriso, disk_path, lfa_flags, set_mask,
ret, *os_errno, 0);
ret= Xorriso_local_set_lfa_flags(xorriso, disk_path, lfa_flags, max_bit,
set_mask, os_errno,
!!(xorriso->do_aaip & (1 << 16)));
if(ret <= 0)
return(ret);
return(1);
@ -668,10 +728,9 @@ cannot_set_perm:;
if(xorriso->do_aaip & (1 << 12)) {
if(mask != 0) {
ret= iso_local_set_lfa_flags(disk_path, lfa_flags, max_bit, mask,
&os_errno, 4);
ret= Xorriso_report_chattr_outcome(xorriso, disk_path, lfa_flags,
mask, ret, os_errno, 0);
ret= Xorriso_local_set_lfa_flags(xorriso, disk_path, lfa_flags, max_bit,
mask, &os_errno,
!!(xorriso->do_aaip & (1 << 16)));
if(ret <= 0)
goto ex;
}

View File

@ -3829,7 +3829,12 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso, filter, fp, flag & 2);
sprintf(line, "-lfa_flags restore_error=%s\n", xorriso->lfa_restore_err_sev);
sprintf(line, "-lfa_flags restore_error=%s", xorriso->lfa_restore_err_sev);
if(xorriso->lfa_flags_setting & (1 << 16))
strcat(line, ":restore_single");
else
strcat(line, ":no_restore_single");
strcat(line, "\n");
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso, filter, fp, flag & 2);

View File

@ -9,7 +9,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH XORRISO 1 "Version 1.5.7, Sep 05, 2024"
.TH XORRISO 1 "Version 1.5.7, Sep 07, 2024"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@ -1128,11 +1128,20 @@ considerations caused by restore attemps of attribute flags. Else the error
message is issued with the given severity. Then it depends on the setting
of command \-abort_on whether restoring goes on or gets aborted.
.br
Mode "restore_single" tries to set the attribute flags of a file one\-by\-one
if the attempt fails to set them all at once. This happens only if the
"restore_error=" severity and the setting of command \-abort_on do not
demand to abort the program run.
Note that some flags in some situations get ignored silently by some kernels.
.br
Mode "no_restore_single" disables this attempt to get at least some of the
attribute flags into effect.
.br
Mode "default" reinstates the default settings:
.br
\-lfa_flags off:read:restore:restore_su_auto:restore_only_known
.br
\-lfa_flags restore_mask=:restore_error=sorry
\-lfa_flags restore_mask=:restore_error=sorry:restore_single
.br
Use "default:on" to get default settings with enabled processing.
.TP

View File

@ -1010,9 +1010,17 @@ activate them only after image loading.
flags. Else the error message is issued with the given severity.
Then it depends on the setting of command -abort_on whether
restoring goes on or gets aborted.
Mode "restore_single" tries to set the attribute flags of a file
one-by-one if the attempt fails to set them all at once. This
happens only if the "restore_error=" severity and the setting of
command -abort_on do not demand to abort the program run. Note
that some flags in some situations get ignored silently by some
kernels.
Mode "no_restore_single" disables this attempt to get at least some
of the attribute flags into effect.
Mode "default" reinstates the default settings:
-lfa_flags off:read:restore:restore_su_auto:restore_only_known
-lfa_flags restore_mask=:restore_error=sorry
-lfa_flags restore_mask=:restore_error=sorry:restore_single
Use "default:on" to get default settings with enabled processing.
-md5 "on"|"all"|"off"|"load_check_off"
Enable or disable processing of MD5 checksums for the overall
@ -6025,11 +6033,11 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -assess_indev_features shows filesystem features: Inquiry. (line 61)
* -auto_charset learns character set from image: Loading. (line 141)
* -backslash_codes enables backslash conversion: Scripting. (line 73)
* -ban_stdio_write demands real drive: Loading. (line 446)
* -ban_stdio_write demands real drive: Loading. (line 454)
* -biblio_file sets biblio file name: SetWrite. (line 277)
* -blank erases media: Writing. (line 57)
* -boot_image controls bootability: Bootable. (line 75)
* -calm_drive reduces drive activity: Loading. (line 436)
* -calm_drive reduces drive activity: Loading. (line 444)
* -cd sets working directory in ISO: Navigate. (line 7)
* -cdx sets working directory on disk: Navigate. (line 15)
* -changes_pending overrides change status: Writing. (line 12)
@ -6065,12 +6073,12 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -cp_rx copies file trees to disk: Restore. (line 131)
* -cp_rx copies file trees to disk <1>: Restore. (line 139)
* -cut_out inserts piece of data file or device: Insert. (line 139)
* -data_cache_size adjusts read cache size: Loading. (line 462)
* -data_cache_size adjusts read cache size: Loading. (line 470)
* -dev acquires one drive for input and output: AqDrive. (line 12)
* -devices gets list of drives: Inquiry. (line 7)
* -device_links gets list of drives: Inquiry. (line 17)
* -dialog enables dialog mode: DialogCtl. (line 7)
* -disk_dev_ino fast incremental backup: Loading. (line 356)
* -disk_dev_ino fast incremental backup: Loading. (line 364)
* -disk_pattern controls pattern expansion: Insert. (line 34)
* -displacement compensate altered image start address: Loading.
(line 102)
@ -6082,8 +6090,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -dusx show directory size on disk: Navigate. (line 96)
* -dux show directory size on disk: Navigate. (line 92)
* -dvd_obs set write block size and end alignment: SetWrite. (line 421)
* -early_stdio_test classifies stdio drives: Loading. (line 450)
* -ecma119_map names w/o Rock Ridge, Joliet: Loading. (line 329)
* -early_stdio_test classifies stdio drives: Loading. (line 458)
* -ecma119_map names w/o Rock Ridge, Joliet: Loading. (line 337)
* -eject ejects drive tray: Writing. (line 50)
* -end writes pending session and ends program: Scripting. (line 153)
* -errfile_log logs problematic disk files: Scripting. (line 118)
@ -6096,13 +6104,13 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -extract_cut copies file piece to disk: Restore. (line 108)
* -extract_l copies files to disk: Restore. (line 104)
* -extract_single copies file to disk: Restore. (line 101)
* -file_name_limit curbs length of file names: Loading. (line 376)
* -file_name_limit curbs length of file names: Loading. (line 384)
* -file_size_limit limits data file size: SetInsert. (line 7)
* -find traverses and alters ISO tree: CmdFind. (line 7)
* -findx traverses disk tree: Navigate. (line 99)
* -follow softlinks and mount points: SetInsert. (line 77)
* -format formats media: Writing. (line 87)
* -for_backup acl,xattr,hardlinks,md5,lfa_flags: Loading. (line 304)
* -for_backup acl,xattr,hardlinks,md5,lfa_flags: Loading. (line 312)
* -fs sets size of fifo: SetWrite. (line 500)
* -genisoimage_completion completion of genisoimage options: Emulation.
(line 166)
@ -6120,11 +6128,11 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -indev acquires a drive for input: AqDrive. (line 23)
* -in_charset sets input character set: Loading. (line 136)
* -iso_nowtime fixed "now" time for ISO 9660 objects: Loading.
(line 350)
(line 358)
* -iso_rr_pattern controls pattern expansion: Manip. (line 10)
* -jigdo clears JTE or or adds parameter to JTE: Jigdo. (line 37)
* -joliet enables production of Joliet tree: SetWrite. (line 10)
* -joliet_map Joliet names: Loading. (line 342)
* -joliet_map Joliet names: Loading. (line 350)
* -launch_frontend starts frontend program at pipes: Frontend.
(line 141)
* -lfa_flags controls handling of Linux file attributes: Loading.
@ -6152,7 +6160,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -map_l inserts paths from disk file: Insert. (line 96)
* -map_single inserts path: Insert. (line 93)
* -mark sets synchronizing message: Frontend. (line 23)
* -md5 controls handling of MD5 sums: Loading. (line 273)
* -md5 controls handling of MD5 sums: Loading. (line 281)
* -mkdir creates ISO directory: Insert. (line 188)
* -modesty_on_drive keep drive buffer hungry: SetWrite. (line 440)
* -mount issues mount command for ISO session: Restore. (line 204)
@ -6209,7 +6217,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
(line 57)
* -rollback discards pending changes: Writing. (line 9)
* -rollback_end ends program without writing: Scripting. (line 156)
* -rom_toc_scan searches for sessions: Loading. (line 408)
* -rom_toc_scan searches for sessions: Loading. (line 416)
* -rr_reloc_dir sets name of relocation directory: SetWrite. (line 171)
* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 197)
* -scsi_dev_family choose Linux device file type: AqDrive. (line 95)
@ -6287,8 +6295,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Appended partitions, MBR: Bootable. (line 480)
* Automatic execution order, of arguments, -x: ArgSort. (line 16)
* Backslash Interpretation, _definition: Processing. (line 57)
* Backup, enable fast incremental, -disk_dev_ino: Loading. (line 356)
* Backup, enable features, -for_backup: Loading. (line 304)
* Backup, enable fast incremental, -disk_dev_ino: Loading. (line 364)
* Backup, enable features, -for_backup: Loading. (line 312)
* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 197)
* Blank media, _definition: Media. (line 34)
* Blank, format, Immed bit, -use_immed_bit: SetWrite. (line 478)
@ -6327,8 +6335,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Directory, delete, -rmdir: Manip. (line 29)
* disk_path, _definition: Insert. (line 6)
* Drive, accessability, -drive_class: AqDrive. (line 43)
* Drive, classify stdio, -early_stdio_test: Loading. (line 450)
* Drive, demand real MMC, -ban_stdio_write: Loading. (line 446)
* Drive, classify stdio, -early_stdio_test: Loading. (line 458)
* Drive, demand real MMC, -ban_stdio_write: Loading. (line 454)
* Drive, eject tray, -eject: Writing. (line 50)
* Drive, for input and output, -dev: AqDrive. (line 12)
* Drive, for input, -indev: AqDrive. (line 23)
@ -6336,7 +6344,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Drive, get drive list, -devices: Inquiry. (line 7)
* Drive, get drive list, -device_links: Inquiry. (line 17)
* Drive, list supported media, -list_profiles: Writing. (line 163)
* Drive, reduce activity, -calm_drive: Loading. (line 436)
* Drive, reduce activity, -calm_drive: Loading. (line 444)
* Drive, report SCSI commands, -scsi_log: Scripting. (line 145)
* Drive, write and eject, -commit_eject: Writing. (line 53)
* Drive, _definition: Drives. (line 6)
@ -6354,9 +6362,9 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Examples: Examples. (line 6)
* extattr, _definition: Extras. (line 66)
* File content, copy, -concat: Restore. (line 148)
* File names, curb length, -file_name_limit: Loading. (line 376)
* File names, if Joliet is loaded: Loading. (line 342)
* File names, if neither Rock Ridge nor Joliet: Loading. (line 329)
* File names, curb length, -file_name_limit: Loading. (line 384)
* File names, if Joliet is loaded: Loading. (line 350)
* File names, if neither Rock Ridge nor Joliet: Loading. (line 337)
* Filesytem features, show, -assess_indev_features: Inquiry. (line 61)
* Filter, apply to file tree, -set_filter_r: Filter. (line 84)
* Filter, apply to file, -set_filter: Filter. (line 58)
@ -6382,7 +6390,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* HFS+ serial number: Bootable. (line 455)
* hidden, set in ISO image, -hide: Manip. (line 211)
* HP-PA boot sector, production: Bootable. (line 430)
* Image reading, cache size, -data_cache_size: Loading. (line 462)
* Image reading, cache size, -data_cache_size: Loading. (line 470)
* Image, demand volume ID, -assert_volid: Loading. (line 129)
* Image, discard pending changes, -rollback: Writing. (line 9)
* Image, filesystem to load, -read_fs: Loading. (line 120)
@ -6434,7 +6442,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Jigdo Template Extraction, -jigdo: Jigdo. (line 37)
* Jigdo Template Extraction, _definition: Jigdo. (line 6)
* LBA, _definition: Drives. (line 17)
* libisofs, fixed "now" time: Loading. (line 350)
* libisofs, fixed "now" time: Loading. (line 358)
* Linux device type, -scsi_dev_family: AqDrive. (line 95)
* Linux file attributes, control handling, -lfa_flags: Loading.
(line 207)
@ -6448,7 +6456,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* MBR bootable/active flag, enforce: Bootable. (line 388)
* MBR, set, -boot_image system_area=: Bootable. (line 227)
* MBR, _definition: Extras. (line 27)
* MD5, control handling, -md5: Loading. (line 273)
* MD5, control handling, -md5: Loading. (line 281)
* Media, erase, -blank: Writing. (line 57)
* Media, format, -format: Writing. (line 87)
* Media, list formats, -list_formats: Writing. (line 128)
@ -6557,7 +6565,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* System area, _definition: Bootable. (line 227)
* Table-of-content, choose info to show, -toc_info_type: Inquiry.
(line 49)
* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 408)
* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 416)
* Table-of-content, show parts of, -toc_of: Inquiry. (line 41)
* Table-of-content, show, -toc: Inquiry. (line 27)
* Timestamps, set in ISO image, -alter_date: Manip. (line 173)
@ -6617,48 +6625,48 @@ Node: Commands26634
Node: ArgSort28311
Node: AqDrive29805
Node: Loading36962
Node: Insert64975
Node: SetInsert77170
Node: Manip87406
Node: CmdFind99526
Node: Filter120848
Node: Writing125470
Node: SetWrite137964
Node: Bootable169239
Node: Jigdo200521
Node: Charset205524
Node: Exception208853
Node: DialogCtl215042
Node: Inquiry217644
Node: Navigate230209
Node: Verify241426
Node: Restore252575
Node: Emulation264782
Node: Scripting276358
Node: Frontend284252
Node: Examples293878
Node: ExDevices295056
Node: ExCreate295717
Node: ExDialog297017
Node: ExGrowing298288
Node: ExModifying299097
Node: ExBootable299607
Node: ExCharset300162
Node: ExPseudo301058
Node: ExCdrecord301985
Node: ExMkisofs302305
Node: ExGrowisofs304202
Node: ExException305355
Node: ExTime305813
Node: ExIncBackup306271
Node: ExRestore310297
Node: ExRecovery311243
Node: Files311815
Node: Environ313149
Node: Seealso313897
Node: Bugreport314661
Node: Legal315252
Node: CommandIdx316264
Node: ConceptIdx334738
Node: Insert65464
Node: SetInsert77659
Node: Manip87895
Node: CmdFind100015
Node: Filter121337
Node: Writing125959
Node: SetWrite138453
Node: Bootable169728
Node: Jigdo201010
Node: Charset206013
Node: Exception209342
Node: DialogCtl215531
Node: Inquiry218133
Node: Navigate230698
Node: Verify241915
Node: Restore253064
Node: Emulation265271
Node: Scripting276847
Node: Frontend284741
Node: Examples294367
Node: ExDevices295545
Node: ExCreate296206
Node: ExDialog297506
Node: ExGrowing298777
Node: ExModifying299586
Node: ExBootable300096
Node: ExCharset300651
Node: ExPseudo301547
Node: ExCdrecord302474
Node: ExMkisofs302794
Node: ExGrowisofs304691
Node: ExException305844
Node: ExTime306302
Node: ExIncBackup306760
Node: ExRestore310786
Node: ExRecovery311732
Node: Files312304
Node: Environ313638
Node: Seealso314386
Node: Bugreport315150
Node: Legal315741
Node: CommandIdx316753
Node: ConceptIdx335227

End Tag Table

View File

@ -50,7 +50,7 @@
@c man .\" First parameter, NAME, should be all caps
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
@c man .\" other parameters are allowed: see man(7), man(1)
@c man .TH XORRISO 1 "Version 1.5.7, Sep 05, 2024"
@c man .TH XORRISO 1 "Version 1.5.7, Sep 07, 2024"
@c man .\" Please adjust this date whenever revising the manpage.
@c man .\"
@c man .\" Some roff macros, for reference:
@ -1380,11 +1380,20 @@ considerations caused by restore attemps of attribute flags. Else the error
message is issued with the given severity. Then it depends on the setting
of command -abort_on whether restoring goes on or gets aborted.
@*
Mode "restore_single" tries to set the attribute flags of a file one-by-one
if the attempt fails to set them all at once. This happens only if the
"restore_error=" severity and the setting of command -abort_on do not
demand to abort the program run.
Note that some flags in some situations get ignored silently by some kernels.
@*
Mode "no_restore_single" disables this attempt to get at least some of the
attribute flags into effect.
@*
Mode "default" reinstates the default settings:
@*
-lfa_flags off:read:restore:restore_su_auto:restore_only_known
@*
-lfa_flags restore_mask=:restore_error=sorry
-lfa_flags restore_mask=:restore_error=sorry:restore_single
@*
Use "default:on" to get default settings with enabled processing.
@c man .TP

View File

@ -190,6 +190,8 @@ struct XorrisO { /* the global context of xorriso */
bit15= ignore non-settable lfa_flags when importing files from
disk and do not record "isofs.fa" if the other flags
are all zero
bit16= try to restore lfa_flags one-by-one if the whole set
fails possibly because of inappropriate attributes
*/
int lfa_flags_setting; /* Current settings of command -lfa_flags
@ -199,7 +201,7 @@ struct XorrisO { /* the global context of xorriso */
compiled with lfa enabled)
bit3= libisofs indeed has lfa enabled
(to be set only at program start)
bit11-15= at the end of the command these bits
bit11-16= at the end of the command these bits
get put into .do_aaip if bit0 is on.
Else the lfa bits of do_aaip will be set
to 0.

View File

@ -1 +1 @@
#define Xorriso_timestamP "2024.09.05.195024"
#define Xorriso_timestamP "2024.09.08.102135"