New commands -lfa_flags, -lsattr, -lsattrd, -chattr, -chattr_r, -find test -has_lfa_flags, -find actions lsattrd, chattr

This commit is contained in:
2024-07-20 23:12:16 +02:00
parent dfd0a8cc81
commit 0802689b11
26 changed files with 1222 additions and 165 deletions

View File

@ -2781,7 +2781,7 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
int part_table_implicit= 0;
char *line, *sfe= NULL, mode[80], *form, *treatment;
char *in_pt, *out_pt, *nl_charset, *local_charset, *mode_pt;
char *dev_filter= NULL, *xorriso_id= NULL;
char *dev_filter= NULL, *xorriso_id= NULL, *lfa_text= NULL;
static char channel_prefixes[4][4]= {".","R","I","M"};
static char load_names[][20]= {"auto", "session", "track", "lba", "volid"};
static int max_load_mode= 4;
@ -3775,12 +3775,61 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
sprintf(line,"-acl %s\n", (xorriso->do_aaip & 1 ? "on" : "off"));
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= ((xorriso->do_aaip & (2 | 8)) == 0);
sprintf(line,"-xattr %s\n", (xorriso->do_aaip & 4 ?
xorriso->do_aaip & 1024 ? "any" : "user"
: "off"));
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->lfa_flags_setting == xorriso->lfa_flags_default);
strcpy(line, "-lfa_flags ");
if(xorriso->lfa_flags_setting & 1)
strcat(line, "on");
else
strcat(line, "off");
if(xorriso->lfa_flags_setting & (1 << 11))
strcat(line, ":read");
else
strcat(line, ":no_read");
if(xorriso->lfa_flags_setting & (1 << 12))
strcat(line, ":restore");
else
strcat(line, ":no_restore");
if(xorriso->lfa_flags_setting & (1 << 13))
strcat(line, ":no_restore_su");
else
strcat(line, ":restore_su");
if(xorriso->lfa_flags_setting & 2)
strcat(line, ":restore_su_auto");
if(xorriso->lfa_flags_setting & (1 << 14))
strcat(line, ":restore_only_known");
else
strcat(line, ":restore_unknown");
strcat(line, "\n");
Xorriso_status_result(xorriso,filter,fp,flag&2);
strcpy(line, "-lfa_flags ");
if(xorriso->lfa_restore_mask == ~((uint64_t) 0)) {
strcat(line, "restore_mask=");
} else {
ret= Xorriso_encode_lfa_flags(xorriso, xorriso->lfa_restore_mask,
&lfa_text, 0);
if(ret > 0) {
strcat(line, "restore_mask=");
if(lfa_text[0] != 0)
strcat(line, lfa_text);
else
strcat(line, "-");
}
if(lfa_text != NULL)
free(lfa_text);
}
strcat(line, "\n");
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= ((xorriso->do_aaip & (16 | 32 | 64)) == 0);
sprintf(line,"-disk_dev_ino %s\n",
(xorriso->do_aaip & 16 ? (xorriso->do_aaip & 128 ? "ino_only" : "on" )