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->do_iso1999= 0;
m->ecma119_map= 1; m->ecma119_map= 1;
m->joliet_map= 1; m->joliet_map= 1;
/* off:read:restore:restore_su_auto:restore_only_known */ /* off:read:restore:restore_su_auto:restore_only_known:restore_single */
m->lfa_flags_default= 2 | (11 << 11); m->lfa_flags_default= 2 | (11 << 11) | (1 << 16);
if(geteuid() != 0) { if(geteuid() != 0) {
/* do not restore known superuser lfa_flags */ /* do not restore known superuser lfa_flags */
m->lfa_flags_default|= (1 << 13); 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) { } 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) { if(strcmp(severity, "SILENT") != 0) {
ret= Xorriso__text_to_sev(severity, &sev, 0); ret= Xorriso__text_to_sev(severity, &sev, 0);
if(ret<=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, Xorriso__to_lower(severity, xorriso->lfa_restore_err_sev,
sizeof(xorriso->lfa_restore_err_sev), 0); 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) { } else if(l == 7 && strncmp(cpt, "default", l) == 0) {
xorriso->lfa_flags_setting= xorriso->lfa_flags_default; xorriso->lfa_flags_setting= xorriso->lfa_flags_default;
xorriso->lfa_restore_mask= ~((uint64_t) 0); 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); xorriso->do_aaip&= ~(31 << 11);
if(xorriso->lfa_flags_setting & 1) 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); ret= Xorriso_set_ignore_aclea(xorriso, 0);
if(ret <= 0) if(ret <= 0)
goto ex; 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, int Xorriso_report_chattr_outcome(struct XorrisO *xorriso, char *disk_path,
uint64_t lfa_flags, uint64_t lfa_mask, uint64_t lfa_flags, uint64_t lfa_mask,
int iso_ret, int os_errno, int flag) 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]; char msg[101], *lfa_text= NULL, severity[20];
if(iso_ret == 1) if(iso_ret == 1)
@ -323,11 +328,15 @@ int Xorriso_report_chattr_outcome(struct XorrisO *xorriso, char *disk_path,
if(lfa_text == NULL) if(lfa_text == NULL)
lfa_text= strdup("-unknown-attributes-"); lfa_text= strdup("-unknown-attributes-");
if(iso_ret < 0) { 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 '"); strcpy(msg, "Could not set chattr '");
if(lfa_text != NULL) if(lfa_text != NULL)
strcat(msg, lfa_text); strcat(msg, lfa_text);
strcat(msg, "'"); strcat(msg, "'");
/* Adjust severity to event_pt. /* Adjust severity to event_pt.
Number 0x7f000000 comes from libisofs.h, iso_error_get_severity */ Number 0x7f000000 comes from libisofs.h, iso_error_get_severity */
Xorriso__text_to_sev(severity, &sev, 0); Xorriso__text_to_sev(severity, &sev, 0);
@ -355,7 +364,7 @@ ex:;
if(ret == 0) { if(ret == 0) {
eps_ret= Xorriso_eval_problem_status(xorriso, 0, 1); eps_ret= Xorriso_eval_problem_status(xorriso, 0, 1);
if(eps_ret >= 0) if(eps_ret >= 0)
ret= 2; ret= 2 + !!lfa_error;
} }
if(lfa_text != NULL) if(lfa_text != NULL)
free(lfa_text); 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) uint64_t Xorriso__lfa_bits(char *lfa_text)
{ {
int ret; int ret;
@ -459,10 +520,9 @@ int Xorriso_early_chattr_CF(struct XorrisO *xorriso, IsoNode *node,
set_mask&= xorriso_mask; set_mask&= xorriso_mask;
if(set_mask == 0) if(set_mask == 0)
return(4); return(4);
ret= iso_local_set_lfa_flags(disk_path, lfa_flags, max_bit, set_mask, ret= Xorriso_local_set_lfa_flags(xorriso, disk_path, lfa_flags, max_bit,
os_errno, 4); set_mask, os_errno,
ret= Xorriso_report_chattr_outcome(xorriso, disk_path, lfa_flags, set_mask, !!(xorriso->do_aaip & (1 << 16)));
ret, *os_errno, 0);
if(ret <= 0) if(ret <= 0)
return(ret); return(ret);
return(1); return(1);
@ -668,10 +728,9 @@ cannot_set_perm:;
if(xorriso->do_aaip & (1 << 12)) { if(xorriso->do_aaip & (1 << 12)) {
if(mask != 0) { if(mask != 0) {
ret= iso_local_set_lfa_flags(disk_path, lfa_flags, max_bit, mask, ret= Xorriso_local_set_lfa_flags(xorriso, disk_path, lfa_flags, max_bit,
&os_errno, 4); mask, &os_errno,
ret= Xorriso_report_chattr_outcome(xorriso, disk_path, lfa_flags, !!(xorriso->do_aaip & (1 << 16)));
mask, ret, os_errno, 0);
if(ret <= 0) if(ret <= 0)
goto ex; 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)) if(!(is_default && no_defaults))
Xorriso_status_result(xorriso, filter, fp, flag & 2); 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)) if(!(is_default && no_defaults))
Xorriso_status_result(xorriso, filter, fp, flag & 2); Xorriso_status_result(xorriso, filter, fp, flag & 2);

View File

@ -9,7 +9,7 @@
.\" First parameter, NAME, should be all caps .\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1) .\" 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. .\" Please adjust this date whenever revising the manpage.
.\" .\"
.\" Some roff macros, for reference: .\" 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 message is issued with the given severity. Then it depends on the setting
of command \-abort_on whether restoring goes on or gets aborted. of command \-abort_on whether restoring goes on or gets aborted.
.br .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: Mode "default" reinstates the default settings:
.br .br
\-lfa_flags off:read:restore:restore_su_auto:restore_only_known \-lfa_flags off:read:restore:restore_su_auto:restore_only_known
.br .br
\-lfa_flags restore_mask=:restore_error=sorry \-lfa_flags restore_mask=:restore_error=sorry:restore_single
.br .br
Use "default:on" to get default settings with enabled processing. Use "default:on" to get default settings with enabled processing.
.TP .TP

View File

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

View File

@ -50,7 +50,7 @@
@c man .\" First parameter, NAME, should be all caps @c man .\" First parameter, NAME, should be all caps
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection @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 .\" 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 .\" Please adjust this date whenever revising the manpage.
@c man .\" @c man .\"
@c man .\" Some roff macros, for reference: @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 message is issued with the given severity. Then it depends on the setting
of command -abort_on whether restoring goes on or gets aborted. 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: Mode "default" reinstates the default settings:
@* @*
-lfa_flags off:read:restore:restore_su_auto:restore_only_known -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. Use "default:on" to get default settings with enabled processing.
@c man .TP @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 bit15= ignore non-settable lfa_flags when importing files from
disk and do not record "isofs.fa" if the other flags disk and do not record "isofs.fa" if the other flags
are all zero 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 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) compiled with lfa enabled)
bit3= libisofs indeed has lfa enabled bit3= libisofs indeed has lfa enabled
(to be set only at program start) (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. get put into .do_aaip if bit0 is on.
Else the lfa bits of do_aaip will be set Else the lfa bits of do_aaip will be set
to 0. to 0.

View File

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