Browse Source

New -xattr mode "any" to process all xattr namespaces of local filesystem

master
Thomas Schmitt 4 years ago
parent
commit
cbc5dbf496
  1. 5
      xorriso/drive_mgt.c
  2. 2
      xorriso/iso_img.c
  3. 4
      xorriso/opts_d_h.c
  4. 7
      xorriso/opts_p_z.c
  5. 4
      xorriso/parse_exec.c
  6. 81
      xorriso/read_run.c
  7. 4
      xorriso/text_io.c
  8. 4
      xorriso/write_run.c
  9. 41
      xorriso/xorriso.1
  10. 5
      xorriso/xorriso.h
  11. 174
      xorriso/xorriso.info
  12. 41
      xorriso/xorriso.texi
  13. 4
      xorriso/xorriso_private.h
  14. 2
      xorriso/xorriso_timestamp.h

5
xorriso/drive_mgt.c

@ -325,8 +325,11 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr,
aquire_flag|= 512;
if(!(xorriso->do_aaip & 1))
aquire_flag|= 32;
if((xorriso->ino_behavior & (1 | 2)) && !(xorriso->do_aaip & (4 | 32)))
if((xorriso->ino_behavior & (1 | 2)) && !(xorriso->do_aaip & (4 | 32))) {
aquire_flag|= 64;
} else if(xorriso->do_aaip & 1024) {
aquire_flag|= 1024;
}
if(flag & 128)
aquire_flag|= 256;
burn_preset_device_open(xorriso->drives_exclusive |

2
xorriso/iso_img.c

@ -47,6 +47,8 @@ int Xorriso_set_ignore_aclea(struct XorrisO *xorriso, int flag)
hflag= (~xorriso->do_aaip) & 1;
if((xorriso->ino_behavior & (1 | 2)) && !(xorriso->do_aaip & (4 | 16)))
hflag|= 2;
if(xorriso->do_aaip & 1024)
hflag|= 8;
iso_image_set_ignore_aclea(volume, hflag);
return(1);
}

4
xorriso/opts_d_h.c

@ -1778,12 +1778,12 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" \"cheap_sorted_extract\", \"normal_extract\"",
" -acl \"on\"|\"off\"",
" Enable or disable reading and writing of ACLs.",
" -xattr \"on\"|\"off\"",
" -xattr \"on\"|\"user\"|\"any\"|\"off\"",
" Enable or disable reading and writing of xattr.",
" -md5 \"on\"|\"all\"|\"off\"",
" Enable or disable processing of MD5 checksums.",
" -for_backup",
" Shortcut for: -hardlinks on -acl on -xattr on -md5 on",
" Shortcut for: -hardlinks on -acl on -xattr any -md5 on",
" -ecma119_map \"unmapped\"|\"stripped\"|\"uppercase\"|\"lowercase\"",
" Choose conversion of file names if neither Rock Ridge",
" nor Joliet is present in the loaded ISO session.",

7
xorriso/opts_p_z.c

@ -2189,10 +2189,13 @@ int Xorriso_option_xattr(struct XorrisO *xorriso, char *mode, int flag)
{
int ret;
xorriso->do_aaip&= ~(4 | 8 | 1024);
if(strcmp(mode, "off")==0)
xorriso->do_aaip&= ~12;
else if(strcmp(mode, "on")==0)
;
else if(strcmp(mode, "on") == 0 || strcmp(mode, "user") == 0)
xorriso->do_aaip|= (4 | 8);
else if(strcmp(mode, "any")==0)
xorriso->do_aaip|= (4 | 8 | 1024);
else {
sprintf(xorriso->info_text, "-xattr: unknown mode '%s'", mode);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);

4
xorriso/parse_exec.c

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2016 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2017 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -1346,7 +1346,7 @@ next_command:;
} else if(strcmp(cmd,"for_backup")==0) {
Xorriso_option_hardlinks(xorriso, "on", 0);
Xorriso_option_acl(xorriso, "on", 0);
Xorriso_option_xattr(xorriso, "on", 0);
Xorriso_option_xattr(xorriso, "any", 0);
Xorriso_option_md5(xorriso, "on", 0);
ret= 1;

81
xorriso/read_run.c

@ -309,14 +309,15 @@ ex:;
int Xorriso_restore_properties(struct XorrisO *xorriso, char *disk_path,
IsoNode *node, int flag)
{
int ret, is_dir= 0, errno_copy= 0;
int ret, is_dir= 0, errno_copy= 0, local_attrs_set= 0, i, err_count;
mode_t mode;
uid_t uid;
gid_t gid;
uid_t uid, disk_uid;
gid_t gid, disk_gid;
struct utimbuf utime_buffer;
struct stat stbuf;
size_t num_attrs= 0, *value_lengths= NULL;
char **names= NULL, **values= NULL;
int *errnos= NULL;
ret= lstat(disk_path, &stbuf);
if(ret==-1) {
@ -326,7 +327,8 @@ int Xorriso_restore_properties(struct XorrisO *xorriso, char *disk_path,
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE", 0);
{ret= 0; goto ex;}
}
uid= stbuf.st_uid;
disk_uid= uid= stbuf.st_uid;
disk_gid= stbuf.st_gid;
is_dir= S_ISDIR(stbuf.st_mode);
@ -342,22 +344,46 @@ int Xorriso_restore_properties(struct XorrisO *xorriso, char *disk_path,
{ret= 0; goto ex;}
}
if(num_attrs > 0) {
ret= iso_local_set_attrs(disk_path, num_attrs, names, value_lengths,
values, (!(xorriso->do_strict_acl & 1)) << 6);
Xorriso_alloc_meM(errnos, int, num_attrs);
ret= iso_local_set_attrs_errno(disk_path, num_attrs, names, value_lengths,
values, errnos,
((!(xorriso->do_strict_acl & 1)) << 6) |
((!!(xorriso->do_aaip & 1024)) << 3) );
if(ret < 0) {
cannot_set_xattr:;
errno_copy= errno;
if(ret != (int) ISO_AAIP_NO_SET_LOCAL)
errno_copy= 0;
Xorriso_report_iso_error(xorriso, "", ret,
"Error on iso_local_set_attrs",
0, "FAILURE", 1 | ((ret == -1)<<2) );
sprintf(xorriso->info_text,
"Cannot change ACL or xattr of disk file ");
sprintf(xorriso->info_text, "Disk file ");
Text_shellsafe(disk_path, xorriso->info_text, 1);
err_count= 0;
for(i= 0; (unsigned int) i < num_attrs; i++) {
if(errnos[i] == 0)
continue;
if(err_count >= 3) {
strcat(xorriso->info_text, " , and more");
break;
}
err_count++;
errno_copy= 0; /* Detail errno overrides final errno */
if(names[i][0] == 0)
sprintf(xorriso->info_text + strlen(xorriso->info_text), " , ACL ");
else
sprintf(xorriso->info_text + strlen(xorriso->info_text),
" , xattr %s ", names[i]);
if(errnos[i] < 0)
Text_shellsafe("Unknown error", xorriso->info_text, 1);
else
Text_shellsafe(strerror(errnos[i]), xorriso->info_text, 1);
}
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno_copy,
"FAILURE",0);
{ret= 0; goto ex;}
}
local_attrs_set= 1;
}
Xorriso_process_msg_queues(xorriso,0);
}
@ -381,6 +407,7 @@ int Xorriso_restore_properties(struct XorrisO *xorriso, char *disk_path,
}
ret= chmod(disk_path, mode);
if(ret==-1) {
cannot_set_perm:;
sprintf(xorriso->info_text,
"Cannot change access permissions of disk file ");
Text_shellsafe(disk_path, xorriso->info_text, 1);
@ -391,10 +418,6 @@ int Xorriso_restore_properties(struct XorrisO *xorriso, char *disk_path,
if(flag&1)
{ret= 1; goto ex;}
gid= iso_node_get_gid(node);
if(!(S_ISDIR(stbuf.st_mode) && (flag&2)))
uid= iso_node_get_uid(node);
ret= chown(disk_path, uid, gid); /* don't complain if it fails */
utime_buffer.actime= iso_node_get_atime(node);
utime_buffer.modtime= iso_node_get_mtime(node);
ret= utime(disk_path,&utime_buffer);
@ -405,9 +428,43 @@ int Xorriso_restore_properties(struct XorrisO *xorriso, char *disk_path,
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE", 0);
{ret= 0; goto ex;}
}
gid= iso_node_get_gid(node);
if(!(S_ISDIR(stbuf.st_mode) && (flag&2)))
uid= iso_node_get_uid(node);
if(uid != disk_uid || gid != disk_gid) {
ret= chown(disk_path, uid, gid); /* don't complain if it fails */
/* Check whether xattr are still set and try to set them again if needed.
E.g. Linux 3.16 removes security.capability on chown(2).
*/
if(local_attrs_set && (xorriso->do_aaip & 1024)) {
ret= iso_local_set_attrs_errno(disk_path, num_attrs, names, value_lengths,
values, errnos,
1 | ((!!(xorriso->do_aaip & 1024)) << 3) |
128);
if(ret < 0)
goto cannot_set_xattr;
}
/* Check whether setuid or setgid bits got reset */
ret= lstat(disk_path, &stbuf);
if(ret != -1) {
if((mode ^ stbuf.st_mode) & (S_ISUID | S_ISGID)) {
ret= chmod(disk_path, mode);
if(ret==-1)
goto cannot_set_perm;
}
}
}
ret= 1;
ex:;
iso_node_get_attrs(node, &num_attrs, &names, &value_lengths, &values,1 << 15);
if(errnos != NULL)
free(errnos);
return(ret);
}

4
xorriso/text_io.c

@ -3696,7 +3696,9 @@ 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);
is_default= ((xorriso->do_aaip & (2 | 8)) == 0);
sprintf(line,"-xattr %s\n", (xorriso->do_aaip & 4 ? "on" : "off"));
sprintf(line,"-xattr %s\n", (xorriso->do_aaip & 4 ?
xorriso->do_aaip & 1024 ? "any" : "on"
: "off"));
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= ((xorriso->do_aaip & (16 | 32 | 64)) == 0);

4
xorriso/write_run.c

@ -1214,6 +1214,10 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
if(ret<=0)
goto ex;
}
if(iso_image_was_blind_attrs(image, 0))
Xorriso_msgs_submit(xorriso, 0,
"Some file xattr namespace could not be explored",
0, "WARNING", 0);
if(image!=NULL && 12+strlen(Xorriso_timestamP)<80) {
strcpy(xorriso_id, xorriso->preparer_id);

41
xorriso/xorriso.1

@ -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.4.9, Sep 16, 2017"
.TH XORRISO 1 "Version 1.4.9, Oct 10, 2017"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@ -464,9 +464,15 @@ only on GNU/Linux and FreeBSD.
.PP
\fBxattr\fR (aka EA, or extattr)
are pairs of name and value which can be attached to file objects. AAIP is
able to represent them and \fBxorriso\fR can record and restore pairs which
have names out of the user namespace. I.e. those which begin with "user.",
like "user.x" or "user.whatever". Name has to be a 0 terminated string.
able to represent them and \fBxorriso\fR can record and restore them.
.br
But be aware that pairs with names of non\-user namespaces are not necessarily
portable between operating systems and not even between filesystems.
I.e. only those which begin with "user.", like "user.x" or "user.whatever",
can unconditionally be expected to be appropriate on other machines and disks.
Processing of other xattr may need administrator privileges.
.br
Name has to be a 0 terminated string.
Value may be any array of bytes which does not exceed the size of 4095 bytes.
xattr processing happens only if it is enabled by command
\fB\-xattr\fR.
@ -930,10 +936,18 @@ load AAIP data from ISO images, test ACL during file comparison,
and restore ACLs to disk files when extracting them from ISO images.
See also commands \-getfacl, \-setfacl.
.TP
\fB\-xattr\fR "on"|"off"
Enable or disable processing of xattr attributes in user namespace.
\fB\-xattr\fR "on"|"user"|"any"|"off"
Enable or disable processing of xattr attributes.
If enabled, then \fBxorriso\fR will handle xattr similar to ACL.
See also commands \-getfattr, \-setfattr and above paragraph about xattr.
.br
Modes "on" and "user" read and write only attributes from namespace "user".
.br
Mode "any" processes attributes of all namespaces. This might need adminstrator
privileges, even if the owner of the disk file tries to read or write the
attributes.
.br
Note that xattr from namespace "isofs." are never restored to disk.
.TP
\fB\-md5\fR "on"|"all"|"off"|"load_check_off"
Enable or disable processing of MD5 checksums for the overall session and for
@ -970,8 +984,19 @@ actions get_md5, check_md5, and via \-check_media.
.TP
\fB\-for_backup\fR
Enable all extra features which help to produce or to restore backups with
highest fidelity of file properties.
Currently this is a shortcut for: \-hardlinks on \-acl on \-xattr on \-md5 on.
highest fidelity of file properties. Currently this is a shortcut for:
.br
\-hardlinks on \-acl on \-xattr any \-md5 on
.br
If you restore a backup with xattr from non\-user namespaces, then make sure
that the target operating system and filesystem know what these attributes
mean. Possibly you will need administrator privileges to record or restore
such attributes. At recording time, xorriso will try to tolerate missing
privileges and just record what is readable.
But at restore time, missing privileges will cause failure events.
.br
Command \-xattr "user" after command \-for_backup excludes non\-user attributes
from being recorded or restored.
.TP
\fB\-ecma119_map\fR "stripped"|"unmapped"|"lowercase"|"uppercase"
Choose the conversion of file names from the loaded session if neither

5
xorriso/xorriso.h

@ -1593,10 +1593,13 @@ int Xorriso_option_follow(struct XorrisO *xorriso, char *mode, int flag);
/* Command -for_backup is a shortcut for
Xorriso_option_hardlinks(xorriso, "on", 0);
Xorriso_option_acl(xorriso, "on", 0);
Xorriso_option_xattr(xorriso, "on", 0);
Xorriso_option_xattr(xorriso, "any", 0);
Xorriso_option_md5(xorriso, "on", 0);
*/
/* @since 0.4.0 */
/* xattr "any"
@since 1.5.0
*/
/* Command -fs */
/* @since 0.1.0 */

174
xorriso/xorriso.info

@ -405,8 +405,13 @@ only on GNU/Linux and FreeBSD.
*xattr* (aka EA, or extattr) are pairs of name and value which can be
attached to file objects. AAIP is able to represent them and 'xorriso'
can record and restore pairs which have names out of the user namespace.
I.e. those which begin with "user.", like "user.x" or "user.whatever".
can record and restore them.
But be aware that pairs with names of non-user namespaces are not
necessarily portable between operating systems and not even between
filesystems. I.e. only those which begin with "user.", like "user.x"
or "user.whatever", can unconditionally be expected to be appropriate on
other machines and disks. Processing of other xattr may need
administrator privileges.
Name has to be a 0 terminated string. Value may be any array of bytes
which does not exceed the size of 4095 bytes. xattr processing happens
only if it is enabled by command *-xattr*.
@ -842,10 +847,17 @@ activate them only after image loading.
ISO images, test ACL during file comparison, and restore ACLs to
disk files when extracting them from ISO images. See also commands
-getfacl, -setfacl.
-xattr "on"|"off"
Enable or disable processing of xattr attributes in user namespace.
If enabled, then 'xorriso' will handle xattr similar to ACL. See
also commands -getfattr, -setfattr and above paragraph about xattr.
-xattr "on"|"user"|"any"|"off"
Enable or disable processing of xattr attributes. If enabled, then
'xorriso' will handle xattr similar to ACL. See also commands
-getfattr, -setfattr and above paragraph about xattr.
Modes "on" and "user" read and write only attributes from namespace
"user".
Mode "any" processes attributes of all namespaces. This might need
adminstrator privileges, even if the owner of the disk file tries
to read or write the attributes.
Note that xattr from namespace "isofs." are never restored to
disk.
-md5 "on"|"all"|"off"|"load_check_off"
Enable or disable processing of MD5 checksums for the overall
session and for each single data file. If enabled then images with
@ -877,7 +889,17 @@ activate them only after image loading.
-for_backup
Enable all extra features which help to produce or to restore
backups with highest fidelity of file properties. Currently this
is a shortcut for: -hardlinks on -acl on -xattr on -md5 on.
is a shortcut for:
-hardlinks on -acl on -xattr any -md5 on
If you restore a backup with xattr from non-user namespaces, then
make sure that the target operating system and filesystem know what
these attributes mean. Possibly you will need administrator
privileges to record or restore such attributes. At recording
time, xorriso will try to tolerate missing privileges and just
record what is readable. But at restore time, missing privileges
will cause failure events.
Command -xattr "user" after command -for_backup excludes non-user
attributes from being recorded or restored.
-ecma119_map "stripped"|"unmapped"|"lowercase"|"uppercase"
Choose the conversion of file names from the loaded session if
neither a Rock Ridge name nor a Joliet name was read from the
@ -5224,11 +5246,11 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -assert_volid rejects undesired images: Loading. (line 111)
* -auto_charset learns character set from image: Loading. (line 123)
* -backslash_codes enables backslash conversion: Scripting. (line 71)
* -ban_stdio_write demands real drive: Loading. (line 316)
* -ban_stdio_write demands real drive: Loading. (line 333)
* -biblio_file sets biblio file name: SetWrite. (line 250)
* -blank erases media: Writing. (line 57)
* -boot_image controls bootability: Bootable. (line 75)
* -calm_drive reduces drive activity: Loading. (line 306)
* -calm_drive reduces drive activity: Loading. (line 323)
* -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)
@ -5262,12 +5284,12 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -cp_rx copies file trees to disk: Restore. (line 103)
* -cp_rx copies file trees to disk <1>: Restore. (line 111)
* -cut_out inserts piece of data file: Insert. (line 139)
* -data_cache_size adjusts read cache size: Loading. (line 332)
* -data_cache_size adjusts read cache size: Loading. (line 349)
* -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 226)
* -disk_dev_ino fast incremental backup: Loading. (line 243)
* -disk_pattern controls pattern expansion: Insert. (line 34)
* -displacement compensate altered image start address: Loading.
(line 57)
@ -5278,8 +5300,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -dusx show directory size on disk: Navigate. (line 85)
* -dux show directory size on disk: Navigate. (line 81)
* -dvd_obs set write block size: SetWrite. (line 330)
* -early_stdio_test classifies stdio drives: Loading. (line 320)
* -ecma119_map names w/o Rock Ridge, Joliet: Loading. (line 214)
* -early_stdio_test classifies stdio drives: Loading. (line 337)
* -ecma119_map names w/o Rock Ridge, Joliet: Loading. (line 231)
* -eject ejects drive tray: Writing. (line 50)
* -end writes pending session and ends program: Scripting. (line 151)
* -errfile_log logs problematic disk files: Scripting. (line 116)
@ -5290,13 +5312,13 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -extract_cut copies file piece to disk: Restore. (line 80)
* -extract_l copies files to disk: Restore. (line 76)
* -extract_single copies file to disk: Restore. (line 73)
* -file_name_limit curbs length of file names: Loading. (line 246)
* -file_name_limit curbs length of file names: Loading. (line 263)
* -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 88)
* -follow softlinks and mount points: SetInsert. (line 69)
* -format formats media: Writing. (line 87)
* -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 210)
* -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 217)
* -fs sets size of fifo: SetWrite. (line 396)
* -getfacl shows ACL in ISO image: Navigate. (line 60)
* -getfacl_r shows ACL in ISO image: Navigate. (line 66)
@ -5338,7 +5360,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 182)
* -md5 controls handling of MD5 sums: Loading. (line 189)
* -mkdir creates ISO directory: Insert. (line 177)
* -modesty_on_drive keep drive buffer hungry: SetWrite. (line 336)
* -mount issues mount command for ISO session: Restore. (line 146)
@ -5395,7 +5417,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
(line 51)
* -rollback discards pending changes: Writing. (line 9)
* -rollback_end ends program without writing: Scripting. (line 154)
* -rom_toc_scan searches for sessions: Loading. (line 278)
* -rom_toc_scan searches for sessions: Loading. (line 295)
* -rr_reloc_dir sets name of relocation directory: SetWrite. (line 144)
* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 179)
* -scsi_dev_family choose Linux device file type: AqDrive. (line 43)
@ -5469,8 +5491,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Appended partition, in MBR or GPT: Bootable. (line 276)
* Automatic execution order, of arguments, -x: ArgSort. (line 16)
* Backslash Interpretation, _definition: Processing. (line 53)
* Backup, enable fast incremental, -disk_dev_ino: Loading. (line 226)
* Backup, enable features, -for_backup: Loading. (line 210)
* Backup, enable fast incremental, -disk_dev_ino: Loading. (line 243)
* Backup, enable features, -for_backup: Loading. (line 217)
* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 179)
* Blank media, _definition: Media. (line 29)
* Blank, format, Immed bit, -use_immed_bit: SetWrite. (line 374)
@ -5508,8 +5530,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: Loading. (line 73)
* Drive, classify stdio, -early_stdio_test: Loading. (line 320)
* Drive, demand real MMC, -ban_stdio_write: Loading. (line 316)
* Drive, classify stdio, -early_stdio_test: Loading. (line 337)
* Drive, demand real MMC, -ban_stdio_write: Loading. (line 333)
* Drive, eject tray, -eject: Writing. (line 50)
* Drive, for input and output, -dev: AqDrive. (line 12)
* Drive, for input, -indev: AqDrive. (line 23)
@ -5517,7 +5539,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 177)
* Drive, reduce activity, -calm_drive: Loading. (line 306)
* Drive, reduce activity, -calm_drive: Loading. (line 323)
* Drive, report SCSI commands, -scsi_log: Scripting. (line 143)
* Drive, write and eject, -commit_eject: Writing. (line 53)
* Drive, _definition: Drives. (line 6)
@ -5533,8 +5555,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Examples: Examples. (line 6)
* extattr, _definition: Extras. (line 66)
* File content, copy, -concat: Restore. (line 118)
* File names, curb length, -file_name_limit: Loading. (line 246)
* File names, if neither Rock Ridge nor Joliet: Loading. (line 214)
* File names, curb length, -file_name_limit: Loading. (line 263)
* File names, if neither Rock Ridge nor Joliet: Loading. (line 231)
* Filter, apply to file tree, -set_filter_r: Filter. (line 84)
* Filter, apply to file, -set_filter: Filter. (line 58)
* Filter, ban registration, -close_filter_list: Filter. (line 50)
@ -5557,7 +5579,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* HFS+ serial number: Bootable. (line 400)
* hidden, set in ISO image, -hide: Manip. (line 174)
* HP-PA boot sector, production: Bootable. (line 375)
* Image reading, cache size, -data_cache_size: Loading. (line 332)
* Image reading, cache size, -data_cache_size: Loading. (line 349)
* Image, demand volume ID, -assert_volid: Loading. (line 111)
* Image, discard pending changes, -rollback: Writing. (line 9)
* Image, filesystem to load, -read_fs: Loading. (line 102)
@ -5615,7 +5637,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* MBR bootable/active flag, enforce: Bootable. (line 343)
* MBR, set, -boot_image system_area=: Bootable. (line 200)
* MBR, _definition: Extras. (line 27)
* MD5, control handling, -md5: Loading. (line 182)
* MD5, control handling, -md5: Loading. (line 189)
* Media, erase, -blank: Writing. (line 57)
* Media, format, -format: Writing. (line 87)
* Media, list formats, -list_formats: Writing. (line 129)
@ -5719,7 +5741,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* SUN SPARC boot images, activation: Bootable. (line 438)
* Symbolic link, create, -lns: Insert. (line 181)
* System area, _definition: Bootable. (line 200)
* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 278)
* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 295)
* Table-of-content, show, -toc: Inquiry. (line 27)
* Timestamps, set in ISO image, -alter_date: Manip. (line 136)
* Timestamps, set in ISO image, -alter_date_r: Manip. (line 171)
@ -5771,54 +5793,54 @@ Node: Media6346
Node: Methods9033
Node: Drives11619
Node: Extras15561
Node: Processing20030
Node: Dialog23665
Node: Commands25354
Node: ArgSort27031
Node: AqDrive28525
Node: Loading32639
Node: Insert52746
Node: SetInsert64249
Node: Manip73681
Node: CmdFind83640
Node: Filter102412
Node: Writing107034
Node: SetWrite117190
Node: Bootable141949
Node: Jigdo168121
Node: Charset172380
Node: Exception175709
Node: DialogCtl181838
Node: Inquiry184440
Node: Navigate193324
Node: Verify201619
Node: Restore211497
Node: Emulation220110
Node: Scripting230569
Node: Frontend238352
Node: Examples247978
Node: ExDevices249156
Node: ExCreate249817
Node: ExDialog251117
Node: ExGrowing252388
Node: ExModifying253197
Node: ExBootable253707
Node: ExCharset254262
Node: ExPseudo255158
Node: ExCdrecord256085
Node: ExMkisofs256405
Node: ExGrowisofs257762
Node: ExException258916
Node: ExTime259374
Node: ExIncBackup259832
Node: ExRestore263858
Node: ExRecovery264804
Node: Files265376
Node: Environ266710
Node: Seealso267419
Node: Bugreport268136
Node: Legal268727
Node: CommandIdx269739
Node: ConceptIdx287073
Node: Processing20280
Node: Dialog23915
Node: Commands25604
Node: ArgSort27281
Node: AqDrive28775
Node: Loading32889
Node: Insert53913
Node: SetInsert65416
Node: Manip74848
Node: CmdFind84807
Node: Filter103579
Node: Writing108201
Node: SetWrite118357
Node: Bootable143116
Node: Jigdo169288
Node: Charset173547
Node: Exception176876
Node: DialogCtl183005
Node: Inquiry185607
Node: Navigate194491
Node: Verify202786
Node: Restore212664
Node: Emulation221277
Node: Scripting231736
Node: Frontend239519
Node: Examples249145
Node: ExDevices250323
Node: ExCreate250984
Node: ExDialog252284
Node: ExGrowing253555
Node: ExModifying254364
Node: ExBootable254874
Node: ExCharset255429
Node: ExPseudo256325
Node: ExCdrecord257252
Node: ExMkisofs257572
Node: ExGrowisofs258929
Node: ExException260083
Node: ExTime260541
Node: ExIncBackup260999
Node: ExRestore265025
Node: ExRecovery265971
Node: Files266543
Node: Environ267877
Node: Seealso268586
Node: Bugreport269303
Node: Legal269894
Node: CommandIdx270906
Node: ConceptIdx288240

End Tag Table

41
xorriso/xorriso.texi

@ -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.4.9, Sep 16, 2017"
@c man .TH XORRISO 1 "Version 1.4.9, Oct 10, 2017"
@c man .\" Please adjust this date whenever revising the manpage.
@c man .\"
@c man .\" Some roff macros, for reference:
@ -613,9 +613,15 @@ only on GNU/Linux and FreeBSD.
@cindex extattr, _definition
@strong{xattr} (aka EA, or extattr)
are pairs of name and value which can be attached to file objects. AAIP is
able to represent them and @command{xorriso} can record and restore pairs which
have names out of the user namespace. I.e. those which begin with "user.",
like "user.x" or "user.whatever". Name has to be a 0 terminated string.
able to represent them and @command{xorriso} can record and restore them.
@*
But be aware that pairs with names of non-user namespaces are not necessarily
portable between operating systems and not even between filesystems.
I.e. only those which begin with "user.", like "user.x" or "user.whatever",
can unconditionally be expected to be appropriate on other machines and disks.
Processing of other xattr may need administrator privileges.
@*
Name has to be a 0 terminated string.
Value may be any array of bytes which does not exceed the size of 4095 bytes.
xattr processing happens only if it is enabled by command
@strong{-xattr}.
@ -1172,12 +1178,20 @@ load AAIP data from ISO images, test ACL during file comparison,
and restore ACLs to disk files when extracting them from ISO images.
See also commands -getfacl, -setfacl.
@c man .TP
@item -xattr "on"|"off"
@item -xattr "on"|"user"|"any"|"off"
@kindex -xattr controls handling of xattr (EA)
@cindex xattr, control handling, -xattr
Enable or disable processing of xattr attributes in user namespace.
Enable or disable processing of xattr attributes.
If enabled, then @command{xorriso} will handle xattr similar to ACL.
See also commands -getfattr, -setfattr and above paragraph about xattr.
@*
Modes "on" and "user" read and write only attributes from namespace "user".
@*
Mode "any" processes attributes of all namespaces. This might need adminstrator
privileges, even if the owner of the disk file tries to read or write the
attributes.
@*
Note that xattr from namespace "isofs." are never restored to disk.
@c man .TP
@item -md5 "on"|"all"|"off"|"load_check_off"
@kindex -md5 controls handling of MD5 sums
@ -1218,8 +1232,19 @@ actions get_md5, check_md5, and via -check_media.
@kindex -for_backup -acl,-xattr,-hardlinks,-md5
@cindex Backup, enable features, -for_backup
Enable all extra features which help to produce or to restore backups with
highest fidelity of file properties.
Currently this is a shortcut for: -hardlinks on -acl on -xattr on -md5 on.
highest fidelity of file properties. Currently this is a shortcut for:
@*
-hardlinks on -acl on -xattr any -md5 on
@*
If you restore a backup with xattr from non-user namespaces, then make sure
that the target operating system and filesystem know what these attributes
mean. Possibly you will need administrator privileges to record or restore
such attributes. At recording time, xorriso will try to tolerate missing
privileges and just record what is readable.
But at restore time, missing privileges will cause failure events.
@*
Command -xattr "user" after command -for_backup excludes non-user attributes
from being recorded or restored.
@c man .TP
@item -ecma119_map "stripped"|"unmapped"|"lowercase"|"uppercase"
@kindex -ecma119_map names w/o Rock Ridge, Joliet

4
xorriso/xorriso_private.h

@ -161,6 +161,10 @@ struct XorrisO { /* the global context of xorriso */
bit7= omit dev check with bit5
bit8= store output charset in xattr "isofs.cs"
bit9= set input charset from xattr "isofs.cs"
bit10= if bit2: import from local filesystem all xattr
namespaces, not only "user."
if bit3: export to local filesystem all xattr
namespaces, not only "user."
*/
int do_md5; /* bit0= read MD5 array

2
xorriso/xorriso_timestamp.h

@ -1 +1 @@
#define Xorriso_timestamP "2017.10.23.095252"
#define Xorriso_timestamP "2017.10.23.100749"

Loading…
Cancel
Save