Made HFS creator, type, blessing persistent in AAIP isofs.hx isofs.hb

master
Thomas Schmitt 10 years ago
parent 396fe7db8a
commit f8f39c322f
  1. 68
      xorriso/drive_mgt.c
  2. 6
      xorriso/emulators.c
  3. 1
      xorriso/findjob.h
  4. 232
      xorriso/iso_manip.c
  5. 3
      xorriso/write_run.c
  6. 36
      xorriso/xorriso.1
  7. 210
      xorriso/xorriso.info
  8. 34
      xorriso/xorriso.texi
  9. 2
      xorriso/xorriso_timestamp.h

@ -154,6 +154,52 @@ ex:;
}
static int Xorriso_grasp_loaded_aaip(struct XorrisO *xorriso, IsoImage *volset,
int flag)
{
int ret;
IsoNode *root_node;
size_t value_length;
char *value= NULL;
double num;
struct FindjoB *job= NULL;
struct stat dir_stbuf;
/* Look for isofs.st and put it into xorriso->isofs_st_in */
root_node= (IsoNode *) iso_image_get_root(volset);
ret= iso_node_lookup_attr(root_node, "isofs.st", &value_length, &value, 0);
if(ret > 0) {
if(value_length > 0) {
sscanf(value, "%lf", &num);
if(num > 0)
xorriso->isofs_st_in= num;
}
free(value);
}
if(xorriso->do_hfsplus) {
/* Bring isofs.hx to iso_hfsplus_xinfo_func,
isofs.hb to IsoImage blessings
*/
ret= Findjob_new(&job, "/", 0);
if(ret<=0) {
Xorriso_no_findjob(xorriso, "xorriso", 0);
{ret= -1; goto ex;}
}
Findjob_set_action_target(job, 49, NULL, 0);
ret= Xorriso_findi(xorriso, job, NULL, (off_t) 0, NULL, "/",
&dir_stbuf, 0, 0);
if(ret <= 0)
goto ex;
}
ret= 1;
ex:;
Findjob_destroy(&job, 0);
return(ret);
}
/* @param flag bit0= aquire as isoburn input drive
bit1= aquire as libburn output drive (as isoburn drive if bit0)
bit2= regard overwriteable media as blank
@ -178,12 +224,8 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr,
struct burn_drive *drive= NULL, *out_drive= NULL, *in_drive= NULL;
enum burn_disc_status state;
IsoImage *volset = NULL;
IsoNode *root_node;
struct isoburn_read_opts *ropts= NULL;
char *libburn_adr= NULL, *off_adr= NULL, *boot_fate, *sev;
size_t value_length;
char *value= NULL;
double num;
char volid[33], *adr_data= NULL, *adr_pt;
Xorriso_alloc_meM(libburn_adr, char, SfileadrL);
@ -438,8 +480,8 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr,
ext= isoburn_ropt_noiso1999;
if((xorriso->ino_behavior & (1 | 2)) && !(xorriso->do_aaip & (1 | 4 | 32))
&& !(xorriso->do_md5 & 1))
ext|= isoburn_ropt_noaaip;
&& !(xorriso->do_md5 & 1) && !(xorriso->do_hfsplus))
ext|= isoburn_ropt_noaaip;
if(!(xorriso->do_aaip & 1))
ext|= isoburn_ropt_noacl;
if(!(xorriso->do_aaip & 4))
@ -572,17 +614,9 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr,
}
if(flag & 1) {
/* Look for isofs.st and put it into xorriso->isofs_st_in */;
root_node= (IsoNode *) iso_image_get_root(volset);
ret= iso_node_lookup_attr(root_node, "isofs.st", &value_length, &value, 0);
if(ret > 0) {
if(value_length > 0) {
sscanf(value, "%lf", &num);
if(num > 0)
xorriso->isofs_st_in= num;
}
free(value);
}
ret= Xorriso_grasp_loaded_aaip(xorriso, volset, 0);
if(ret <= 0)
goto ex;
}
if(!(flag&32)) {

@ -1300,6 +1300,10 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
} else if(strcmp(argpt, "--old-root-no-ino")==0) {
old_root_ino= 0;
} else if(strcmp(argpt, "-hfsplus") == 0) {
/* Already with -indev */
xorriso->do_hfsplus= 1;
} else if(strcmp(argpt, "--hardlinks")==0) {
Xorriso_option_hardlinks(xorriso, "on", 0);
} else if(strcmp(argpt, "--acl")==0) {
@ -1518,8 +1522,6 @@ illegal_c:;
if(argv[i] != argpt)
delay_opt_list[delay_opt_count - 1]|= 1<<31;
i+= arg_count;
} else if(strcmp(argpt, "-hfsplus") == 0) {
xorriso->do_hfsplus= 1;
} else if(strcmp(argpt, "-hfsplus-serial-no") == 0) {
if(i+1>=argc)
goto not_enough_args;

@ -165,6 +165,7 @@ struct FindjoB {
46= get_hfs_crtp
47= set_hfs_bless blessing
48= get_hfs_bless
49= internal: update creator, type, and blessings from persistent isofs.*
*/
int action;
int prune;

@ -2414,6 +2414,8 @@ int Xorriso_findi_action(struct XorrisO *xorriso, struct FindjoB *job,
struct stat dir_stbuf, stbuf;
void *xinfo;
struct iso_hfsplus_xinfo_data *hfsplus_xinfo;
size_t value_length;
char *value;
action= Findjob_get_action_parms(job, &target, &text_2, &user, &group,
&mode_and, &mode_or, &type, &date, &subjob, 0);
@ -2593,6 +2595,33 @@ int Xorriso_findi_action(struct XorrisO *xorriso, struct FindjoB *job,
Xorriso_result(xorriso, 0);
} else if(ret == 0)
ret= 1;
} else if(action == 49) {
/* internal: update creator, type, and blessings from persistent isofs.* */
ret= Xorriso_get_attr_value(xorriso, node, show_path, "isofs.hx",
&value_length, &value, 0);
if(ret < 0)
return(ret);
if(ret > 0 && value_length >= 10) {
ret= Xorriso_hfsplus_file_creator_type(xorriso, show_path, (void *) node,
value + 2, value + 6, 4);
free(value);
if(ret <= 0)
return(ret);
}
ret= Xorriso_get_attr_value(xorriso, node, show_path, "isofs.hb",
&value_length, &value, 0);
if(ret < 0)
return(ret);
if(ret > 0 && value_length >= 1) {
bless_code[0]= value[0];
bless_code[1]= 0;
ret= Xorriso_hfsplus_bless(xorriso, show_path, (void *) node,
bless_code, 0);
if(ret <= 0)
return(ret);
}
ret= 1;
} else { /* includes : 15 in_iso */
Text_shellsafe(show_path, xorriso->result_line, 0);
strcat(xorriso->result_line, "\n");
@ -3543,8 +3572,92 @@ set_error:;
}
/* flag bit0= in case of error talk of "overwrite" rather than "remove"
*/
static int Xorriso_remove_hfsplus_crtp(struct XorrisO *xorriso, IsoNode *node,
char *path, int flag)
{
int ret;
char *msg, buf[10], *bufpt;
size_t l;
static char *name= "isofs.hx";
ret= iso_node_remove_xinfo(node, iso_hfsplus_xinfo_func);
Xorriso_process_msg_queues(xorriso, 0);
if(ret < 0) {
if(flag & 1)
msg= "Cannot overwrite HFS+ creator and type of ISO node";
else
msg= "Cannot remove HFS+ creator and type of ISO node";
Xorriso_report_iso_error(xorriso, path, ret, msg, 0, "FAILURE", 1);
return(0);
}
/* Delete isofs.hx attribute */
bufpt= buf;
/* >>> ??? check whether there is isofs.hx attached ? */;
ret= Xorriso_setfattr(xorriso, node, path,
(size_t) 1, &name, &l, &bufpt, 4 | 8);
return(ret);
}
static int Xorriso_set_hfsplus_crtp(struct XorrisO *xorriso, IsoNode *node,
char *path, char *creator, char *hfs_type,
int flag)
{
struct iso_hfsplus_xinfo_data *hfs_data= NULL;
char buf[10], *bufpt;
size_t l;
int ret;
static char *name= "isofs.hx";
/* Register as non-persistent xinfo */
hfs_data= iso_hfsplus_xinfo_new(0);
if(hfs_data == NULL) {
Xorriso_no_malloc_memory(xorriso, NULL, 0);
return(-1);
}
memcpy(hfs_data->creator_code, creator, 4);
memcpy(hfs_data->type_code, hfs_type, 4);
ret= iso_node_add_xinfo(node, iso_hfsplus_xinfo_func, (void *) hfs_data);
Xorriso_process_msg_queues(xorriso, 0);
if(ret < 0) {
Xorriso_report_iso_error(xorriso, path, ret,
"Cannot attach HFS+ creator and type to ISO node", 0, "FAILURE", 1);
goto failure;
} else if(ret == 0) {
strcat(xorriso->info_text,
"Programm error: iso_node_add_xinfo refuses to attach HFS+ creator and type");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
goto failure;
}
/* Register as persistent attribute isofs.hx */
bufpt= buf;
l= 10;
buf[0]= 1;
buf[1]= 0;
memcpy(buf + 2, creator, 4);
memcpy(buf + 6, hfs_type, 4);
ret= Xorriso_setfattr(xorriso, node, path,
(size_t) 1, &name, &l, &bufpt, 2 | 8);
if(ret <= 0)
goto failure;
Xorriso_set_change_pending(xorriso, 0);
return(1);
failure:
if(hfs_data != NULL)
iso_hfsplus_xinfo_func(hfs_data, 1);
return(0);
}
/* @param flag bit0= only check creator and hfs_type for compliance.
bit1= with bit0: check for search rather than for setting
bit2= copy 2 times 4 bytes without any check
*/
int Xorriso_hfsplus_file_creator_type(struct XorrisO *xorriso, char *path,
void *in_node,
@ -3552,7 +3665,6 @@ int Xorriso_hfsplus_file_creator_type(struct XorrisO *xorriso, char *path,
{
int ret;
IsoNode *node;
struct iso_hfsplus_xinfo_data *hfs_data= NULL;
if(in_node == NULL && !(flag * 1)) {
ret= Xorriso_node_from_path(xorriso, NULL, path, &node, 0);
@ -3560,11 +3672,13 @@ int Xorriso_hfsplus_file_creator_type(struct XorrisO *xorriso, char *path,
return(ret);
} else
node= (IsoNode *) in_node;
if((creator[0] == 0 && hfs_type[0] == 0) ||
if(flag & 4) {
;
} else if((creator[0] == 0 && hfs_type[0] == 0) ||
strcmp(creator, "--delete") == 0) {
if(flag & 2) {
strcpy(xorriso->info_text,
"HFS+ file creator code for deletion shall be used for searching");
"Attempt to use HFS+ file pseudo-creator '--delete' for searching");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
strcpy(xorriso->info_text,
"Suitable are strings of length 4 or length 1");
@ -3573,14 +3687,9 @@ int Xorriso_hfsplus_file_creator_type(struct XorrisO *xorriso, char *path,
}
if(flag & 1)
return(1);
ret= iso_node_remove_xinfo(node, iso_hfsplus_xinfo_func);
Xorriso_process_msg_queues(xorriso, 0);
if(ret < 0) {
Xorriso_report_iso_error(xorriso, path, ret,
"Cannot remove HFS+ creator and type of ISO node",
0, "FAILURE", 1);
goto failure;
}
ret= Xorriso_remove_hfsplus_crtp(xorriso, node, path, 0);
if(ret < 0)
return(ret);
return(1);
} else if((strlen(creator) != 4 && !(strlen(creator) == 1 &&
(flag & 3) == 3)) ||
@ -3599,43 +3708,16 @@ int Xorriso_hfsplus_file_creator_type(struct XorrisO *xorriso, char *path,
if(flag & 1)
return(1);
hfs_data= iso_hfsplus_xinfo_new(0);
if(hfs_data == NULL) {
Xorriso_no_malloc_memory(xorriso, NULL, 0);
return(-1);
}
memcpy(hfs_data->creator_code, creator, 4);
memcpy(hfs_data->type_code, hfs_type, 4);
ret= iso_node_remove_xinfo(node, iso_hfsplus_xinfo_func);
Xorriso_process_msg_queues(xorriso, 0);
if(ret < 0) {
Xorriso_report_iso_error(xorriso, path, ret,
"Cannot overwrite HFS+ creator and type of ISO node",
0, "FAILURE", 1);
goto failure;
}
ret= iso_node_add_xinfo(node, iso_hfsplus_xinfo_func, (void *) hfs_data);
Xorriso_process_msg_queues(xorriso, 0);
if(ret < 0) {
Xorriso_report_iso_error(xorriso, path, ret,
"Cannot attach HFS+ creator and type to ISO node", 0, "FAILURE", 1);
goto failure;
} else if(ret == 0) {
strcat(xorriso->info_text,
"Programm error: iso_node_add_xinfo refuses to attach HFS+ creator and type");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
goto failure;
}
Xorriso_set_change_pending(xorriso, 0);
ret= Xorriso_remove_hfsplus_crtp(xorriso, node, path, 1);
if(ret <= 0)
return(ret);
ret= Xorriso_set_hfsplus_crtp(xorriso, node, path, creator, hfs_type, 0);
if(ret <= 0)
return(ret);
return(1);
failure:
if(hfs_data != NULL)
iso_hfsplus_xinfo_func(hfs_data, 1);
return(0);
}
/*
@param node
If node is NULL and path is empty, then the blessing will be
@ -3652,31 +3734,39 @@ failure:
int Xorriso_hfsplus_bless(struct XorrisO *xorriso, char *path,
void *in_node, char *blessing, int flag)
{
int ret;
IsoNode *node;
int ret, bless_max;
IsoNode *node, **blessed_nodes;
IsoImage *volume= NULL;
enum IsoHfsplusBlessings bless_code = ISO_HFSPLUS_BLESS_MAX; /* = invalid */
char *hb = "";
size_t l= 0;
static char *name= "isofs.hb";
if(strcmp(blessing, "ppc_bootdir") == 0 ||
strcmp(blessing, "p") == 0 || strcmp(blessing, "P") == 0)
strcmp(blessing, "p") == 0 || strcmp(blessing, "P") == 0) {
bless_code= ISO_HFSPLUS_BLESS_PPC_BOOTDIR;
else if(strcmp(blessing, "intel_bootfile") == 0 ||
strcmp(blessing, "i") == 0 || strcmp(blessing, "I") == 0)
hb= "p";
} else if(strcmp(blessing, "intel_bootfile") == 0 ||
strcmp(blessing, "i") == 0 || strcmp(blessing, "I") == 0) {
bless_code= ISO_HFSPLUS_BLESS_INTEL_BOOTFILE;
else if(strcmp(blessing, "show_folder") == 0 ||
strcmp(blessing, "s") == 0 || strcmp(blessing, "S") == 0)
hb= "i";
} else if(strcmp(blessing, "show_folder") == 0 ||
strcmp(blessing, "s") == 0 || strcmp(blessing, "S") == 0) {
bless_code= ISO_HFSPLUS_BLESS_SHOWFOLDER;
else if(strcmp(blessing, "os9_folder") == 0 ||
strcmp(blessing, "9") == 0)
hb= "s";
} else if(strcmp(blessing, "os9_folder") == 0 ||
strcmp(blessing, "9") == 0) {
bless_code= ISO_HFSPLUS_BLESS_OS9_FOLDER;
else if(strcmp(blessing, "osx_folder") == 0 ||
strcmp(blessing, "x") == 0 || strcmp(blessing, "X") == 0)
hb= "9";
} else if(strcmp(blessing, "osx_folder") == 0 ||
strcmp(blessing, "x") == 0 || strcmp(blessing, "X") == 0) {
bless_code= ISO_HFSPLUS_BLESS_OSX_FOLDER;
else if((flag & 8) && (flag & 4) &&
hb= "x";
} else if((flag & 8) && (flag & 4) &&
(strcmp(blessing, "any") == 0 ||
strcmp(blessing, "a") == 0 || strcmp(blessing, "A") == 0))
strcmp(blessing, "a") == 0 || strcmp(blessing, "A") == 0)) {
bless_code= ISO_HFSPLUS_BLESS_MAX;
else {
} else {
sprintf(xorriso->info_text, "Unknown blessing type ");
Text_shellsafe(blessing, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
@ -3695,6 +3785,24 @@ int Xorriso_hfsplus_bless(struct XorrisO *xorriso, char *path,
if(ret <= 0)
return(ret);
/* Remove persistent bless mark from current bearer */
ret= iso_image_hfsplus_get_blessed(volume, &blessed_nodes, &bless_max, 0);
Xorriso_process_msg_queues(xorriso, 0);
if(ret < 0) {
Xorriso_report_iso_error(xorriso, "", ret,
"Error when trying to bless a file",
0, "FAILURE", 1);
return(0);
}
if((int) bless_code < bless_max) {
if(blessed_nodes[(int) bless_code] != NULL) {
ret= Xorriso_setfattr(xorriso, node, path,
(size_t) 1, &name, &l, &hb, 4 | 8);
if(ret <= 0)
return(ret);
}
}
ret= iso_image_hfsplus_bless(volume, bless_code, node, flag & 3);
Xorriso_process_msg_queues(xorriso, 0);
if(ret == 0 && path[0]) {
@ -3717,6 +3825,12 @@ int Xorriso_hfsplus_bless(struct XorrisO *xorriso, char *path,
0, "FAILURE", 1);
return(0);
}
/* Attach persistent bless mark to node */
l= 1;
ret= Xorriso_setfattr(xorriso, node, path, (size_t) 1, &name, &l, &hb, 2 | 8);
if(ret <= 0)
return(ret);
Xorriso_set_change_pending(xorriso, 0);
return(1);
}

@ -817,7 +817,8 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
(( !(xorriso->ino_behavior & 2)) * isoburn_igopt_hardlinks) |
(( (!(xorriso->ino_behavior & 2)) ||
(xorriso->do_aaip & (2 | 8 | 16 | 256)) ||
(xorriso->do_md5 & (2 | 4))
(xorriso->do_md5 & (2 | 4)) ||
xorriso->do_hfsplus
) * isoburn_igopt_aaip) |
((!!(xorriso->do_md5 & 2)) * isoburn_igopt_session_md5) |
((!!(xorriso->do_md5 & 4)) * isoburn_igopt_file_md5) |

@ -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.2.3, Jun 06, 2012"
.TH XORRISO 1 "Version 1.2.3, Jun 07, 2012"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@ -1666,7 +1666,7 @@ Matches data files which have MD5 checksums.
.br
\fB\-has_hfs_crtp\fR creator type :
Matches files which have the given HFS+ creator and type attached.
These are codes of 4 characters which may get stored if \-hfsplus is
These are codes of 4 characters which get stored if \-hfsplus is
enabled. Use a single dash '\-' as wildcard that matches any such code.
E.g:.
.br
@ -1679,9 +1679,6 @@ Matches files which bear the given HFS+ blessing. It may be one of :
"ppc_bootdir", "intel_bootfile", "show_folder", "os9_folder", "osx_folder",
"any". See also action set_hfs_bless.
.br
Note that HFS+ information is not read with loaded images. So above two tests
are useful only for listing effective settings before a new image gets written.
.br
\fB\-has_filter\fR :
Matches files which are filtered by \-set_filter.
.br
@ -1881,6 +1878,12 @@ E.g.: \-exec set_hfs_crtp YYDN TEXT
.br
E.g.: \-find /my/dir \-prune \-exec set_hfs_crtp \-\-delete \-
.br
\fBget_hfs_crtp\fR
prints the HFS+ creator and type attributes together with the iso_rr_path,
if the file has such attributes at all.
.br
E.g.: \-exec get_hfs_crtp
.br
\fBset_hfs_bless\fR
applies or removes HFS+ blessings. They are roles which can be attributed to
up to four directories and a data file:
@ -1897,21 +1900,12 @@ No file object can bear more than one blessing.
.br
E.g.: \-find /my/blessed/directory \-exec set_hfs_bless p
.br
\fBget_hfs_crtp\fR
prints the HFS+ creator and type attributes together with the iso_rr_path,
if the file has such attributes at all.
.br
E.g.: \-exec get_hfs_crtp
.br
\fBget_hfs_bless\fR
prints the HFS+ blessing role and the iso_rr_path, if the file is blessed
at all.
.br
E.g.: \-exec get_hfs_bless
.br
Note that HFS+ information is not read with loaded images. So above two actions
are useful only for listing effective settings before a new image gets written.
.br
\fBset_filter\fR
applies or removes filters.
.br
@ -2282,6 +2276,20 @@ metadata. The second one marks the range from HFS+ metadata to the end
of file content data. If more ISO image data follow, then a third partition
entry gets produced. Other features of xorriso might cause the need for
more APM entries.
.br
The HFS+ filesystem is not suitable for add\-on sessions produced by the
multi\-session method of growing. An existing ISO image may nevertheless
be the base for a new image produced by the method of modifying.
If \-hfsplus is enabled when \-indev or \-dev gets executed, then AAIP
attributes get loaded from the input image and checked for information about
HFS creator, filetype, or blessing. If found, then they get enabled as
settings for the next image production.
Therefore it is advisable to perform \-hfsplus "on" before \-indev or \-dev.
.br
Information about HFS creator, type, and blessings gets stored by xorriso
if \-hfsplus is enabled at \-commit time. It is stored as copy outside the
HFS+ partition, but rather along with the Rock Ridge information.
xorriso does not read any information from the HFS+ meta data.
.TP
\fB\-rockridge\fR "on"|"off"
Mode "off" disables production of Rock Ridge information for the ISO 9660 file

@ -1510,9 +1510,9 @@ File: xorriso.info, Node: CmdFind, Next: Filter, Prev: Manip, Up: Options
Matches data files which have MD5 checksums.
-has_hfs_crtp creator type :
Matches files which have the given HFS+ creator and type
attached. These are codes of 4 characters which may get
stored if -hfsplus is enabled. Use a single dash '-' as
wildcard that matches any such code. E.g:.
attached. These are codes of 4 characters which get stored
if -hfsplus is enabled. Use a single dash '-' as wildcard
that matches any such code. E.g:.
-has_hfs_crtp YYDN TEXT
-has_hfs_crtp - -
-has_hfs_bless blessing :
@ -1520,9 +1520,6 @@ File: xorriso.info, Node: CmdFind, Next: Filter, Prev: Manip, Up: Options
one of : "ppc_bootdir", "intel_bootfile", "show_folder",
"os9_folder", "osx_folder", "any". See also action
set_hfs_bless.
Note that HFS+ information is not read with loaded images. So
above two tests are useful only for listing effective
settings before a new image gets written.
-has_filter :
Matches files which are filtered by -set_filter.
-hidden hide_state :
@ -1683,6 +1680,10 @@ File: xorriso.info, Node: CmdFind, Next: Filter, Prev: Manip, Up: Options
adds, changes, or removes HFS+ creator and type attributes.
E.g.: -exec set_hfs_crtp YYDN TEXT
E.g.: -find /my/dir -prune -exec set_hfs_crtp -delete -
get_hfs_crtp
prints the HFS+ creator and type attributes together with the
iso_rr_path, if the file has such attributes at all.
E.g.: -exec get_hfs_crtp
set_hfs_bless
applies or removes HFS+ blessings. They are roles which can
be attributed to up to four directories and a data file:
@ -1696,17 +1697,10 @@ File: xorriso.info, Node: CmdFind, Next: Filter, Prev: Manip, Up: Options
the blessing will lose it then. No file object can bear more
than one blessing.
E.g.: -find /my/blessed/directory -exec set_hfs_bless p
get_hfs_crtp
prints the HFS+ creator and type attributes together with the
iso_rr_path, if the file has such attributes at all.
E.g.: -exec get_hfs_crtp
get_hfs_bless
prints the HFS+ blessing role and the iso_rr_path, if the
file is blessed at all.
E.g.: -exec get_hfs_bless
Note that HFS+ information is not read with loaded images. So
above two actions are useful only for listing effective
settings before a new image gets written.
set_filter
applies or removes filters.
E.g.: -exec set_filter --zisofs --
@ -2036,6 +2030,20 @@ according to the setting of command -acl.
ISO image data follow, then a third partition entry gets produced.
Other features of xorriso might cause the need for more APM
entries.
The HFS+ filesystem is not suitable for add-on sessions produced
by the multi-session method of growing. An existing ISO image may
nevertheless be the base for a new image produced by the method of
modifying. If -hfsplus is enabled when -indev or -dev gets
executed, then AAIP attributes get loaded from the input image and
checked for information about HFS creator, filetype, or blessing.
If found, then they get enabled as settings for the next image
production. Therefore it is advisable to perform -hfsplus "on"
before -indev or -dev.
Information about HFS creator, type, and blessings gets stored by
xorriso if -hfsplus is enabled at -commit time. It is stored as
copy outside the HFS+ partition, but rather along with the Rock
Ridge information. xorriso does not read any information from the
HFS+ meta data.
-rockridge "on"|"off"
Mode "off" disables production of Rock Ridge information for the
@ -4441,7 +4449,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* # starts a comment line: Scripting. (line 162)
* -abort_on controls abort on error: Exception. (line 27)
* -abstract_file sets abstract file name: SetWrite. (line 211)
* -abstract_file sets abstract file name: SetWrite. (line 225)
* -acl controls handling of ACLs: Loading. (line 143)
* -add inserts one or more paths: Insert. (line 45)
* -add_plainly inserts one or more paths: Insert. (line 64)
@ -4449,13 +4457,13 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -alter_date_r sets timestamps in ISO image: Manip. (line 167)
* -append_partition adds arbitrary file after image end: Bootable.
(line 202)
* -application_id sets application id: SetWrite. (line 170)
* -application_id sets application id: SetWrite. (line 184)
* -as emulates mkisofs or cdrecord: Emulation. (line 13)
* -assert_volid rejects undesired images: Loading. (line 84)
* -auto_charset learns character set from image: Loading. (line 98)
* -backslash_codes enables backslash conversion: Scripting. (line 67)
* -ban_stdio_write demands real drive: Loading. (line 247)
* -biblio_file sets biblio file name: SetWrite. (line 218)
* -biblio_file sets biblio file name: SetWrite. (line 232)
* -blank erases media: Writing. (line 61)
* -boot_image controls bootability: Bootable. (line 26)
* -calm_drive reduces drive activity: Loading. (line 236)
@ -4474,7 +4482,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -chown sets ownership in ISO image: Manip. (line 42)
* -chown_r sets ownership in ISO image: Manip. (line 47)
* -clone copies ISO directory tree: Insert. (line 174)
* -close controls media closing: SetWrite. (line 313)
* -close controls media closing: SetWrite. (line 327)
* -close_damaged closes damaged track and session: Writing. (line 152)
* -close_filter_list bans filter registration: Filter. (line 52)
* -commit writes pending ISO image: Writing. (line 29)
@ -4482,8 +4490,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -compare reports ISO/disk differences: Navigate. (line 146)
* -compare_l reports ISO/disk differences: Navigate. (line 164)
* -compare_r reports ISO/disk differences: Navigate. (line 159)
* -compliance controls standard compliance: SetWrite. (line 38)
* -copyright_file sets copyright file name: SetWrite. (line 205)
* -compliance controls standard compliance: SetWrite. (line 52)
* -copyright_file sets copyright file name: SetWrite. (line 219)
* -cp_clone copies ISO directory tree: Insert. (line 186)
* -cp_rx copies file trees to disk: Restore. (line 108)
* -cpax copies files to disk: Restore. (line 104)
@ -4501,11 +4509,11 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
(line 36)
* -drive_class controls drive accessability: Loading. (line 54)
* -du show directory size in ISO image: Navigate. (line 89)
* -dummy controls write simulation: SetWrite. (line 302)
* -dummy controls write simulation: SetWrite. (line 316)
* -dus show directory size in ISO image: Navigate. (line 93)
* -dusx show directory size on disk: Navigate. (line 102)
* -dux show directory size on disk: Navigate. (line 97)
* -dvd_obs set write block size: SetWrite. (line 289)
* -dvd_obs set write block size: SetWrite. (line 303)
* -early_stdio_test classifies stdio drives: Loading. (line 252)
* -eject ejects drive tray: Writing. (line 52)
* -end writes pending session and ends program: Scripting. (line 156)
@ -4523,12 +4531,12 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -follow softlinks and mount points: SetInsert. (line 76)
* -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 185)
* -format formats media: Writing. (line 88)
* -fs sets size of fifo: SetWrite. (line 306)
* -fs sets size of fifo: SetWrite. (line 320)
* -getfacl shows ACL in ISO image: Navigate. (line 70)
* -getfacl_r shows ACL in ISO image: Navigate. (line 77)
* -getfattr shows xattr in ISO image: Navigate. (line 81)
* -getfattr_r shows xattr in ISO image: Navigate. (line 85)
* -gid sets global ownership: SetWrite. (line 246)
* -gid sets global ownership: SetWrite. (line 260)
* -grow_blindly overides next writeable address: AqDrive. (line 46)
* -hardlinks controls handling of hard links: Loading. (line 110)
* -help prints help text: Scripting. (line 20)
@ -4575,17 +4583,17 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -not_paths sets absolute exclusion paths: SetInsert. (line 55)
* -options_from_file reads commands from file: Scripting. (line 12)
* -osirrox enables ISO-to-disk copying: Restore. (line 18)
* -out_charset sets output character set: SetWrite. (line 236)
* -out_charset sets output character set: SetWrite. (line 250)
* -outdev acquires a drive for output: AqDrive. (line 31)
* -overwrite enables overwriting in ISO: SetInsert. (line 127)
* -pacifier controls pacifier text form: Emulation. (line 158)
* -padding sets amount or mode of image padding: SetWrite. (line 319)
* -padding sets amount or mode of image padding: SetWrite. (line 333)
* -page set terminal geometry: DialogCtl. (line 19)
* -paste_in copies file into disk file: Restore. (line 121)
* -path_list inserts paths from disk file: Insert. (line 78)
* -pathspecs sets meaning of = with -add: SetInsert. (line 118)
* -pkt_output consolidates text output: Frontend. (line 7)
* -preparer_id sets preparer id: SetWrite. (line 224)
* -preparer_id sets preparer id: SetWrite. (line 238)
* -print prints result text line: Scripting. (line 99)
* -print_info prints message text line: Scripting. (line 102)
* -print_mark prints synchronizing text line: Scripting. (line 105)
@ -4593,7 +4601,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -prog sets program name: Frontend. (line 30)
* -prog_help prints help text: Frontend. (line 33)
* -prompt prompts for enter key: Scripting. (line 110)
* -publisher sets publisher id: SetWrite. (line 164)
* -publisher sets publisher id: SetWrite. (line 178)
* -pvd_info shows image id strings: Inquiry. (line 93)
* -pwd tells working directory in ISO: Navigate. (line 20)
* -pwdx tells working directory on disk: Navigate. (line 23)
@ -4608,12 +4616,12 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -rm_r deletes trees from ISO image: Manip. (line 28)
* -rmdir deletes ISO directory: Manip. (line 32)
* -rockridge disables production of Rock Ridge info: SetWrite.
(line 32)
(line 46)
* -rollback discards pending changes: Writing. (line 9)
* -rollback_end ends program without writing: Scripting. (line 159)
* -rom_toc_scan searches for sessions: Loading. (line 211)
* -rr_reloc_dir sets name of relocation directory: SetWrite.
(line 121)
(line 135)
* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 168)
* -scsi_log reports SCSI commands: Scripting. (line 147)
* -session_log logs written sessions: Scripting. (line 138)
@ -4631,29 +4639,29 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -signal_handling controls handling of system signals: Exception.
(line 69)
* -sleep waits for a given time span: Scripting. (line 114)
* -speed set write speed: SetWrite. (line 262)
* -speed set write speed: SetWrite. (line 276)
* -split_size enables large file splitting: SetInsert. (line 140)
* -status shows current settings: Scripting. (line 47)
* -status_history_max curbs -status history: Scripting. (line 56)
* -stdio_sync controls stdio buffer: SetWrite. (line 296)
* -stream_recording controls defect management: SetWrite. (line 277)
* -system_id sets system id: SetWrite. (line 179)
* -stdio_sync controls stdio buffer: SetWrite. (line 310)
* -stream_recording controls defect management: SetWrite. (line 291)
* -system_id sets system id: SetWrite. (line 193)
* -tell_media_space reports free space: Inquiry. (line 89)
* -temp_mem_limit curbs memory consumption: Scripting. (line 92)
* -toc shows list of sessions: Inquiry. (line 28)
* -uid sets global ownership: SetWrite. (line 242)
* -uid sets global ownership: SetWrite. (line 256)
* -update inserts path if different: Insert. (line 102)
* -update_l inserts paths if different: Insert. (line 124)
* -update_r inserts paths if different: Insert. (line 113)
* -use_readline enables readline for dialog: DialogCtl. (line 28)
* -version prints help text: Scripting. (line 23)
* -volid sets volume id: SetWrite. (line 140)
* -volset_id sets volume set id: SetWrite. (line 159)
* -volume_date sets volume timestamp: SetWrite. (line 186)
* -volid sets volume id: SetWrite. (line 154)
* -volset_id sets volume set id: SetWrite. (line 173)
* -volume_date sets volume timestamp: SetWrite. (line 200)
* -x enables automatic execution order of arguments: ArgSort.
(line 16)
* -xattr controls handling of xattr (EA): Loading. (line 151)
* -zisofs controls zisofs production: SetWrite. (line 250)
* -zisofs controls zisofs production: SetWrite. (line 264)

File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
@ -4686,7 +4694,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Character Set, _definition: Charset. (line 6)
* Character Set, for input, -in_charset: Loading. (line 92)
* Character Set, for input/output, -charset: Charset. (line 43)
* Character Set, for output, -out_charset: SetWrite. (line 236)
* Character Set, for output, -out_charset: SetWrite. (line 250)
* Character set, learn from image, -auto_charset: Loading. (line 98)
* Character Set, of terminal, -local_charset: Charset. (line 47)
* Closed media, _definition: Media. (line 43)
@ -4741,8 +4749,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Filter, show chain, -show_stream: Navigate. (line 169)
* Filter, show chains of tree, -show_stream_r: Navigate. (line 183)
* Filter, unregister, -unregister_filter: Filter. (line 48)
* Filter, zisofs parameters, -zisofs: SetWrite. (line 250)
* Group, global in ISO image, -gid: SetWrite. (line 246)
* Filter, zisofs parameters, -zisofs: SetWrite. (line 264)
* Group, global in ISO image, -gid: SetWrite. (line 260)
* Group, in ISO image, -chgrp: Manip. (line 50)
* Group, in ISO image, -chgrp_r: Manip. (line 55)
* Growing, _definition: Methods. (line 19)
@ -4754,16 +4762,16 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Image, demand volume id, -assert_volid: Loading. (line 84)
* Image, discard pending changes, -rollback: Writing. (line 9)
* Image, override change status, -changes_pending: Writing. (line 13)
* Image, set abstract file name, -abstract_file: SetWrite. (line 211)
* Image, set application id, -application_id: SetWrite. (line 170)
* Image, set biblio file name, -biblio_file: SetWrite. (line 218)
* Image, set copyright file name, -copyright_file: SetWrite. (line 205)
* Image, set preparer id, -preparer_id: SetWrite. (line 224)
* Image, set publisher id, -publisher: SetWrite. (line 164)
* Image, set system id, -system_id: SetWrite. (line 179)
* Image, set volume id, -volid: SetWrite. (line 140)
* Image, set volume set id, -volset_id: SetWrite. (line 159)
* Image, set volume timestamp, -volume_date: SetWrite. (line 186)
* Image, set abstract file name, -abstract_file: SetWrite. (line 225)
* Image, set application id, -application_id: SetWrite. (line 184)
* Image, set biblio file name, -biblio_file: SetWrite. (line 232)
* Image, set copyright file name, -copyright_file: SetWrite. (line 219)
* Image, set preparer id, -preparer_id: SetWrite. (line 238)
* Image, set publisher id, -publisher: SetWrite. (line 178)
* Image, set system id, -system_id: SetWrite. (line 193)
* Image, set volume id, -volid: SetWrite. (line 154)
* Image, set volume set id, -volset_id: SetWrite. (line 173)
* Image, set volume timestamp, -volume_date: SetWrite. (line 200)
* Image, show id strings, -pvd_info: Inquiry. (line 93)
* Insert, enable overwriting, -overwrite: SetInsert. (line 127)
* Insert, file exclusion absolute, -not_paths: SetInsert. (line 55)
@ -4822,7 +4830,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Navigate, tell ISO working directory, -pwd: Navigate. (line 20)
* Next writeable address, -grow_blindly: AqDrive. (line 46)
* Overwriteable media, _definition: Media. (line 14)
* Ownership, global in ISO image, -uid: SetWrite. (line 242)
* Ownership, global in ISO image, -uid: SetWrite. (line 256)
* Ownership, in ISO image, -chown: Manip. (line 42)
* Ownership, in ISO image, -chown_r: Manip. (line 47)
* Partition offset, _definition: Bootable. (line 146)
@ -4865,7 +4873,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Program, wait a time span, -sleep: Scripting. (line 114)
* Quoted input, _definition: Processing. (line 46)
* Recovery, retrieve blocks, -check_media: Verify. (line 21)
* Relocation directory, set name, -rr_reloc_dir: SetWrite. (line 121)
* Relocation directory, set name, -rr_reloc_dir: SetWrite. (line 135)
* Rename, in ISO image, -mv: Manip. (line 35)
* Restore, copy file into disk file, -paste_in: Restore. (line 121)
* Restore, copy file piece to disk, -extract_cut: Restore. (line 81)
@ -4902,24 +4910,24 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Verify, file checksum, -check_md5: Verify. (line 153)
* Verify, file tree checksums, -check_md5_r: Verify. (line 169)
* Verify, preset -check_media, -check_media_defaults: Verify. (line 41)
* Write, block size, -dvd_obs: SetWrite. (line 289)
* Write, block size, -dvd_obs: SetWrite. (line 303)
* Write, bootability, -boot_image: Bootable. (line 26)
* Write, buffer syncing, -stdio_sync: SetWrite. (line 296)
* Write, close media, -close: SetWrite. (line 313)
* Write, compliance to specs, -compliance: SetWrite. (line 38)
* Write, defect management, -stream_recording: SetWrite. (line 277)
* Write, disable Rock Ridge, -rockridge: SetWrite. (line 32)
* Write, buffer syncing, -stdio_sync: SetWrite. (line 310)
* Write, close media, -close: SetWrite. (line 327)
* Write, compliance to specs, -compliance: SetWrite. (line 52)
* Write, defect management, -stream_recording: SetWrite. (line 291)
* Write, disable Rock Ridge, -rockridge: SetWrite. (line 46)
* Write, enable HFS+, -hfsplus: SetWrite. (line 14)
* Write, enable Joliet, -joliet: SetWrite. (line 10)
* Write, fifo size, -fs: SetWrite. (line 306)
* Write, fifo size, -fs: SetWrite. (line 320)
* Write, free space, -tell_media_space: Inquiry. (line 89)
* Write, log problematic disk files, -errfile_log: Scripting. (line 118)
* Write, log written sessions, -session_log: Scripting. (line 138)
* Write, padding image, -padding: SetWrite. (line 319)
* Write, padding image, -padding: SetWrite. (line 333)
* Write, pending ISO image, -commit: Writing. (line 29)
* Write, predict image size, -print_size: Inquiry. (line 80)
* Write, set speed, -speed: SetWrite. (line 262)
* Write, simulation, -dummy: SetWrite. (line 302)
* Write, set speed, -speed: SetWrite. (line 276)
* Write, simulation, -dummy: SetWrite. (line 316)
* xattr, _definition: Extras. (line 54)
* xattr, control handling, -xattr: Loading. (line 151)
* xattr, set in ISO image, -setfattr: Manip. (line 111)
@ -4948,43 +4956,43 @@ Node: Insert45211
Node: SetInsert55127
Node: Manip63703
Node: CmdFind72526
Node: Filter87015
Node: Writing91570
Node: SetWrite100534
Node: Bootable117479
Node: Jigdo130890
Node: Charset135136
Node: Exception137897
Node: DialogCtl144016
Node: Inquiry146613
Node: Navigate151479
Node: Verify159776
Node: Restore168742
Node: Emulation175651
Node: Scripting185462
Node: Frontend192622
Node: Examples193922
Node: ExDevices195099
Node: ExCreate195758
Node: ExDialog197043
Node: ExGrowing198308
Node: ExModifying199113
Node: ExBootable199617
Node: ExCharset200169
Node: ExPseudo200990
Node: ExCdrecord201888
Node: ExMkisofs202205
Node: ExGrowisofs203545
Node: ExException204680
Node: ExTime205134
Node: ExIncBackup205593
Node: ExRestore209584
Node: ExRecovery210544
Node: Files211114
Node: Seealso212413
Node: Bugreport213136
Node: Legal213717
Node: CommandIdx214728
Node: ConceptIdx230527
Node: Filter86633
Node: Writing91188
Node: SetWrite100152
Node: Bootable117985
Node: Jigdo131396
Node: Charset135642
Node: Exception138403
Node: DialogCtl144522
Node: Inquiry147119
Node: Navigate151985
Node: Verify160282
Node: Restore169248
Node: Emulation176157
Node: Scripting185968
Node: Frontend193128
Node: Examples194428
Node: ExDevices195605
Node: ExCreate196264
Node: ExDialog197549
Node: ExGrowing198814
Node: ExModifying199619
Node: ExBootable200123
Node: ExCharset200675
Node: ExPseudo201496
Node: ExCdrecord202394
Node: ExMkisofs202711
Node: ExGrowisofs204051
Node: ExException205186
Node: ExTime205640
Node: ExIncBackup206099
Node: ExRestore210090
Node: ExRecovery211050
Node: Files211620
Node: Seealso212919
Node: Bugreport213642
Node: Legal214223
Node: CommandIdx215234
Node: ConceptIdx231033

End Tag Table

@ -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.2.3, Jun 06, 2012"
@c man .TH XORRISO 1 "Version 1.2.3, Jun 07, 2012"
@c man .\" Please adjust this date whenever revising the manpage.
@c man .\"
@c man .\" Some roff macros, for reference:
@ -2050,9 +2050,6 @@ Matches files which bear the given HFS+ blessing. It may be one of :
"ppc_bootdir", "intel_bootfile", "show_folder", "os9_folder", "osx_folder",
"any". See also action set_hfs_bless.
@*
Note that HFS+ information is not read with loaded images. So above two tests
are useful only for listing effective settings before a new image gets written.
@*
@item -has_filter :
Matches files which are filtered by -set_filter.
@*
@ -2270,6 +2267,12 @@ E.g.: -exec set_hfs_crtp YYDN TEXT
@*
E.g.: -find /my/dir -prune -exec set_hfs_crtp --delete -
@*
@item get_hfs_crtp
prints the HFS+ creator and type attributes together with the iso_rr_path,
if the file has such attributes at all.
@*
E.g.: -exec get_hfs_crtp
@*
@item set_hfs_bless
applies or removes HFS+ blessings. They are roles which can be attributed to
up to four directories and a data file:
@ -2286,21 +2289,12 @@ No file object can bear more than one blessing.
@*
E.g.: -find /my/blessed/directory -exec set_hfs_bless p
@*
@item get_hfs_crtp
prints the HFS+ creator and type attributes together with the iso_rr_path,
if the file has such attributes at all.
@*
E.g.: -exec get_hfs_crtp
@*
@item get_hfs_bless
prints the HFS+ blessing role and the iso_rr_path, if the file is blessed
at all.
@*
E.g.: -exec get_hfs_bless
@*
Note that HFS+ information is not read with loaded images. So above two actions
are useful only for listing effective settings before a new image gets written.
@*
@item set_filter
applies or removes filters.
@*
@ -2726,6 +2720,20 @@ metadata. The second one marks the range from HFS+ metadata to the end
of file content data. If more ISO image data follow, then a third partition
entry gets produced. Other features of xorriso might cause the need for
more APM entries.
@*
The HFS+ filesystem is not suitable for add-on sessions produced by the
multi-session method of growing. An existing ISO image may nevertheless
be the base for a new image produced by the method of modifying.
If -hfsplus is enabled when -indev or -dev gets executed, then AAIP
attributes get loaded from the input image and checked for information about
HFS creator, filetype, or blessing. If found, then they get enabled as
settings for the next image production.
Therefore it is advisable to perform -hfsplus "on" before -indev or -dev.
@*
Information about HFS creator, type, and blessings gets stored by xorriso
if -hfsplus is enabled at -commit time. It is stored as copy outside the
HFS+ partition, but rather along with the Rock Ridge information.
xorriso does not read any information from the HFS+ meta data.
@sp 1
@c man .TP
@item -rockridge "on"|"off"

@ -1 +1 @@
#define Xorriso_timestamP "2012.06.06.184910"
#define Xorriso_timestamP "2012.06.08.071018"

Loading…
Cancel
Save