Browse Source

New command -drive_access, new -as cdrecord option --drive_not_exclusive

tags/release-1.5.2
Thomas Schmitt 10 months ago
parent
commit
901939986a
15 changed files with 509 additions and 288 deletions
  1. +4
    -0
      xorriso/base_obj.c
  2. +49
    -19
      xorriso/drive_mgt.c
  3. +3
    -0
      xorriso/emulators.c
  4. +42
    -2
      xorriso/opts_d_h.c
  5. +10
    -3
      xorriso/parse_exec.c
  6. +40
    -21
      xorriso/text_io.c
  7. +12
    -2
      xorriso/xorrecord.1
  8. +47
    -36
      xorriso/xorrecord.info
  9. +15
    -3
      xorriso/xorrecord.texi
  10. +62
    -38
      xorriso/xorriso.1
  11. +7
    -0
      xorriso/xorriso.h
  12. +147
    -122
      xorriso/xorriso.info
  13. +67
    -41
      xorriso/xorriso.texi
  14. +3
    -0
      xorriso/xorriso_private.h
  15. +1
    -1
      xorriso/xorriso_timestamp.h

+ 4
- 0
xorriso/base_obj.c View File

@@ -207,6 +207,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->displacement_sign= 0;
m->read_fs= 0;
m->drives_exclusive= 1;
m->drives_access= 1;
m->linux_scsi_dev_family= 0;
m->early_stdio_test= 0;
m->cache_num_tiles= 0;
@@ -219,6 +220,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->in_charset= NULL;
m->isofs_st_out= time(0) - 1;
m->indev_is_exclusive= 1;
m->indev_access= 1;
m->indev_off_adr[0]= 0;
m->isofs_st_in= 0;
m->volset_change_pending= 0;
@@ -231,6 +233,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->out_charset= NULL;
m->dev_fd_1= -1;
m->outdev_is_exclusive= 1;
m->outdev_access= 1;
m->outdev_off_adr[0]= 0;
m->grow_blindly_msc2= -1;
m->ban_stdio_write= 0;
@@ -475,6 +478,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
if(strcmp(leafname, "osirrox")==0) {
m->allow_restore= 1;
m->drives_exclusive= 0;
m->drives_access= 0;
} else if(strcmp(leafname, "xorrisofs")==0 || strcmp(leafname, "genisofs")==0 ||
strcmp(leafname, "mkisofs")==0 || strcmp(leafname, "genisoimage")==0) {
m->argument_emulation= 1;


+ 49
- 19
xorriso/drive_mgt.c View File

@@ -1,7 +1,7 @@

/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.

Copyright 2007-2017 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2019 Thomas Schmitt, <scdbackup@gmx.net>

Provided under GPL version 2 or later.

@@ -279,12 +279,16 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr,
Xorriso_get_drive_handles(xorriso, &out_dinfo, &out_drive, "", 2 | 16);
if(in_dinfo != NULL && (out_dinfo == NULL || out_dinfo == in_dinfo)) {
dinfo= in_dinfo;
if(flag & 2)
if(flag & 2) {
xorriso->outdev_is_exclusive= xorriso->indev_is_exclusive;
xorriso->outdev_access= xorriso->indev_access;
}
} else if(out_dinfo != NULL && in_dinfo == NULL) {
dinfo= out_dinfo;
if(flag & 1)
if(flag & 1) {
xorriso->indev_is_exclusive= xorriso->outdev_is_exclusive;
xorriso->indev_access= xorriso->outdev_access;
}
} else if(out_dinfo != NULL || in_dinfo != NULL) {
sprintf(xorriso->info_text,
"Two different drives shall be re-assed in one call");
@@ -304,6 +308,7 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr,
if(ret==1) {
dinfo= out_dinfo;
xorriso->indev_is_exclusive= xorriso->outdev_is_exclusive;
xorriso->indev_access= xorriso->outdev_access;
}
} else if((flag&3)==2 && xorriso->in_drive_handle!=NULL) {
ret= Xorriso_get_drive_handles(xorriso, &in_dinfo, &in_drive,
@@ -314,6 +319,7 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr,
if(ret==1) {
dinfo= in_dinfo;
xorriso->outdev_is_exclusive= xorriso->indev_is_exclusive;
xorriso->outdev_access= xorriso->indev_access;
}
}

@@ -362,10 +368,14 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr,
if(flag&1)
if(xorriso->image_start_mode&(1u<<31)) /* used up setting */
xorriso->image_start_mode= 0; /* no need to perform auto setting */
if(flag & 1)
if(flag & 1) {
xorriso->indev_is_exclusive= xorriso->drives_exclusive;
if(flag & 2)
xorriso->indev_access= xorriso->drives_access;
}
if(flag & 2) {
xorriso->outdev_is_exclusive= xorriso->drives_exclusive;
xorriso->outdev_access= xorriso->drives_access;
}
}
drive= dinfo[0].drive;
volset= isoburn_get_attached_image(drive);
@@ -727,9 +737,9 @@ int Xorriso_give_up_drive(struct XorrisO *xorriso, int flag)

if(!in_is_out_too) {
do_eject= !!(flag&4);
if((flag & 4) && !xorriso->indev_is_exclusive) {
if((flag & 4) && xorriso->indev_access == 0) {
sprintf(xorriso->info_text,
"Will not eject medium in non-exclusively acquired input drive.");
"Will not eject medium in readonly acquired input drive.");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
do_eject= 0;
}
@@ -759,9 +769,9 @@ int Xorriso_give_up_drive(struct XorrisO *xorriso, int flag)
}
if((flag&2) && xorriso->out_drive_handle!=NULL) {
do_eject= !!(flag&4);
if((flag & 4) && !xorriso->outdev_is_exclusive) {
if((flag & 4) && xorriso->outdev_access == 0) {
sprintf(xorriso->info_text,
"Will not eject medium in non-exclusively acquired drive.");
"Will not eject medium in readonly acquired drive.");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
do_eject= 0;
}
@@ -795,16 +805,17 @@ int Xorriso_give_up_drive(struct XorrisO *xorriso, int flag)
int Xorriso_may_burn(struct XorrisO *xorriso, int flag)
{

if(xorriso->outdev_is_exclusive)
if(xorriso->outdev_access == 1)
return(1);
sprintf(xorriso->info_text, "The output drive was not acquired exclusively.");
sprintf(xorriso->info_text, "The output drive was acquired readonly.");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
sprintf(xorriso->info_text, "A possible remedy is: -osirrox 'o_excl_on'");
if(xorriso->outdev[0]) {
strcat(xorriso->info_text," -outdev ");
Text_shellsafe(xorriso->outdev, xorriso->info_text, 1);
}
sprintf(xorriso->info_text, "Possible remedy: -drive_access \"exclusive:unrestricted\".");
strcat(xorriso->info_text," Then give up and re-acquire the drive.");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0);
if(!xorriso->outdev_is_exclusive) {
sprintf(xorriso->info_text, "If you insist in -drive_access \"shared:unrestricted\", first read man xorriso about the risks.");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0);
}
return(0);
}

@@ -1026,6 +1037,25 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
Xorriso_toc_line(xorriso, flag & 8);
if(flag & 128)
{ret= 1; goto ex;}
/* Report -drive_access if non-default or if long form */
respt[0]= 0;
if(flag & 2) {
if(xorriso->outdev_is_exclusive == 0 || xorriso->outdev_access == 0 ||
!(flag & 33)) {
sprintf(respt, "Drive access : %s:%s\n",
xorriso->outdev_is_exclusive ? "exclusive" : "shared",
xorriso->outdev_access == 0 ? "readonly" : "unrestricted");
}
} else {
if(xorriso->indev_is_exclusive == 0 || xorriso->indev_access == 0 ||
!(flag & 33)) {
sprintf(respt, "Drive access : %s:%s\n",
xorriso->indev_is_exclusive ? "exclusive" : "shared",
xorriso->indev_access == 0 ? "readonly" : "unrestricted");
}
}
if(respt[0])
Xorriso_toc_line(xorriso, flag & 8);
sprintf(respt, "Drive type : vendor '%s' product '%s' revision '%s'\n",
dinfo[0].vendor, dinfo[0].product, dinfo[0].revision);
if((flag & 32) || !(flag & 1))
@@ -1417,11 +1447,11 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
}

if (disc!=NULL)
isoburn_toc_disc_free(disc);
Xorriso_process_msg_queues(xorriso,0);
ret= 1;
ex:;
Xorriso_process_msg_queues(xorriso,0);
if (disc!=NULL)
isoburn_toc_disc_free(disc);
return(ret);
}



+ 3
- 0
xorriso/emulators.c View File

@@ -55,6 +55,7 @@ int Xorriso_cdrskin_help(struct XorrisO *xorriso, int flag)
"\t--devices\tprint list of available MMC drives and exit emulation",
"\tdev=target\tpseudo-SCSI target to use as CD-Recorder",
"\tdrive_scsi_dev_family=sr|scd|sg\t\tselect Linux device type",
"\t--drive_not_exclusive\tdo not try to prevent use of busy drive",
"\t-v\t\tincrement verbose level by one",
"\t-V\t\tincrement SCSI command transport verbose level by one",
"\t-checkdrive\tcheck if a driver for the drive is present",
@@ -266,6 +267,8 @@ no_volunteer:;
strcpy(dev_adr, cpt);
} else if(strcmp(argv[i], "--devices")==0) { /* intentional: argv[i] */
do_scanbus= 2;
} else if(strcmp(argv[i], "--drive_not_exclusive") == 0) { /* intentional */
Xorriso_option_drive_access(xorriso, "shared:unrestricted", 0);
} else if(strncmp(argpt,"driveropts=", 11)==0 ||
strncmp(argpt,"-driveropts=", 12)==0) {
if(strcmp(argpt+11, "help")==0) {


+ 42
- 2
xorriso/opts_d_h.c View File

@@ -257,6 +257,43 @@ int Xorriso_option_displacement(struct XorrisO *xorriso, char *value, int flag)
}


/* Command -drive_access "exclusive"|"shared":"readonly"|"unrestricted" */
int Xorriso_option_drive_access(struct XorrisO *xorriso, char *mode, int flag)
{
int l;
char *npt, *cpt;

npt= cpt= mode;
for(cpt= mode; npt != NULL; cpt= npt+1) {
npt= strchr(cpt, ':');
if(npt==NULL)
l= strlen(cpt);
else
l= npt - cpt;
if(l == 0 && mode[0] != 0)
goto unknown_mode;
if(strncmp(cpt, "shared", l) == 0 && l == 6) {
xorriso->drives_exclusive= 0;
} else if(strncmp(cpt, "exclusive", l) == 0 && l == 9) {
xorriso->drives_exclusive= 1;
} else if(strncmp(cpt, "readonly", l) == 0 && l == 8) {
xorriso->drives_access= 0;
} else if(strncmp(cpt, "unrestricted", l) == 0 && l == 12) {
xorriso->drives_access= 1;
} else {
unknown_mode:;
sprintf(xorriso->info_text, "-drive_access: unknown mode '");
if(l > 0 && l < SfileadrL)
strncat(xorriso->info_text, cpt, l);
strcat(xorriso->info_text, "'");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
}
}
return(1);
}


/* Option -drive_class */
int Xorriso_option_drive_class(struct XorrisO *xorriso,
char *d_class, char *pattern, int flag)
@@ -1737,13 +1774,16 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" -drive_class \"harmless\"|\"banned\"|\"risky\"|\"clear_list\" disk_pattern",
" Add a drive path pattern to one of the safety lists or make",
" those lists empty. Defaulty entry in \"risky\" is \"/dev\".",
" -grow_blindly \"off\"|predicted_nwa",
" Switch between modifying and blind growing.",
" -drive_access \"exclusive\"|\"shared\":\"unrestricted\"|\"readonly\"",
" Enable or disable device file locking mechanisms.",
" Enable or disable status and content changes of drive.",
" -scsi_dev_family \"default\"|\"sr\"|\"scd\"|\"sg\"",
" Linux specific: Choose device file type.",
" -read_speed number[\"k/s\"|\"m/s\"|\"[x]CD\"|\"[x]DVD\"|\"[x]BD\"]",
" Set the read speed. Default is \"none\" = do not set speed",
" before reading.",
" -grow_blindly \"off\"|predicted_nwa",
" Switch between modifying and blind growing.",
" -load \"session\"|\"track\"|\"lba\"|\"sbsector\"|\"volid\"|\"auto\" id",
" Load a particular (outdated) ISO session from a -dev or",
" -indev which hosts more than one session.",


+ 10
- 3
xorriso/parse_exec.c View File

@@ -541,7 +541,7 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
"close","close_damaged",
"commit_eject","compliance","copyright_file",
"dev","dialog","disk_dev_ino","disk_pattern","displacement",
"dummy","dvd_obs","early_stdio_test","ecma119_map","eject",
"drive_access","dummy","dvd_obs","early_stdio_test","ecma119_map","eject",
"iso_nowtime","iso_rr_pattern","file_name_limit","follow","format","fs",
"gid","grow_blindly","hardlinks",
"hfsplus","history","indev","in_charset","joliet",
@@ -684,17 +684,20 @@ int Xorriso_cmd_sorting_rank(struct XorrisO *xorriso,
"print", "print_info", "print_mark", "prompt", "sleep",
"sh_style_result",

"* Influencing opening of drives:",
"drive_access","drive_class","early_stdio_test",

"* Drive and media related inquiry actions (1):",
"devices", "device_links",
"mount_opts", "mount_cmd", "session_string",

"* Influencing the behavior of image loading:",
"read_speed", "load", "displacement", "read_fs",
"drive_class", "assert_volid", "in_charset",
"assert_volid", "in_charset",
"auto_charset", "hardlinks", "acl", "xattr", "md5", "for_backup",
"ecma119_map",
"disk_dev_ino", "rom_toc_scan", "calm_drive", "ban_stdio_write",
"early_stdio_test", "data_cache_size",
"data_cache_size",
"scsi_dev_family", "iso_nowtime",

"* Character sets:",
@@ -1255,6 +1258,10 @@ next_command:;
(*idx)++;
ret= Xorriso_option_disk_pattern(xorriso, arg1, 0);

} else if(strcmp(cmd,"drive_access")==0) {
(*idx)++;
ret= Xorriso_option_drive_access(xorriso, arg1, 0);

} else if(strcmp(cmd,"drive_class")==0) {
(*idx)+= 2;
ret= Xorriso_option_drive_class(xorriso, arg1, arg2, 0);


+ 40
- 21
xorriso/text_io.c View File

@@ -2058,6 +2058,8 @@ int Xorriso_sieve_big(struct XorrisO *xorriso, int flag)
1, 1},
{"DVD obs 64 kB:", 3, "DVD obs 64 kB:", "", 1, { 0, -1, -1, -1, -1, -1},
1, 0},
{"Drive access :", 3, "Drive access : ", ": ", 2, { 0, 1, -1, -1, -1, -1},
2, 0},
{"Drive current:", 3, "Drive current:", "", 2, { 0, 1, -1, -1, -1, -1},
2, 0},
{"Drive id :", 3, "Drive id :", "", 1, { 0, -1, -1, -1, -1, -1},
@@ -2771,6 +2773,7 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
{
int is_default, no_defaults, i, ret, adr_mode, do_single, behavior;
int show_indev= 1, show_outdev= 1, show_dev= 0;
int do_drive_access, did_drive_access;
int part_table_implicit= 0;
char *line, *sfe= NULL, mode[80], *form, *treatment;
char *in_pt, *out_pt, *nl_charset, *local_charset, *mode_pt;
@@ -3814,13 +3817,20 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
}
}

is_default= (xorriso->drives_exclusive == 1 && xorriso->drives_access == 1);
sprintf(line, "-drive_access %s:%s\n",
xorriso->drives_exclusive ? "exclusive" : "shared",
xorriso->drives_access == 0 ? "readonly" : "unrestricted");
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso, filter, fp, flag & 2);

is_default= (xorriso->linux_scsi_dev_family == 0);
sprintf(line, "-scsi_dev_family %s\n",
scsi_family[xorriso->linux_scsi_dev_family & 7]);
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);

do_single= 0;
do_single= do_drive_access= 0;
dev_filter= filter;
if(dev_filter != NULL) {
show_dev= Xorriso_status_filter(xorriso, filter, "-dev", 0);
@@ -3833,43 +3843,52 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
if(show_outdev > 0 || show_indev > 0)
do_single= 1;
}
if(xorriso->drives_exclusive != xorriso->indev_is_exclusive &&
xorriso->indev[0])
if((xorriso->drives_exclusive != xorriso->indev_is_exclusive ||
xorriso->drives_access != xorriso->indev_access) && xorriso->indev[0]) {
do_single= 1;
else if(xorriso->drives_exclusive != xorriso->outdev_is_exclusive &&
xorriso->outdev[0])
do_drive_access|= 1;
}
if((xorriso->drives_exclusive != xorriso->outdev_is_exclusive ||
xorriso->drives_access != xorriso->outdev_access) &&
xorriso->outdev[0]) {
do_single= 1;
do_drive_access|= 2;
}
if(strcmp(xorriso->indev, xorriso->outdev) == 0 && !do_single) {
sprintf(line,"-dev %s\n", Text_shellsafe(xorriso->indev,sfe,0));
Xorriso_status_result(xorriso, dev_filter, fp, flag & 2);
} else {
if(xorriso->drives_exclusive != xorriso->indev_is_exclusive &&
xorriso->indev[0] && show_indev) {
sprintf(line,"-osirrox o_excl_%s\n",
xorriso->indev_is_exclusive ? "on" : "off");
did_drive_access= 0;
if((do_drive_access & 1) && xorriso->indev[0] && show_indev) {
sprintf(line,"-drive_access %s:%s\n",
xorriso->indev_is_exclusive ? "exclusive" : "shared",
xorriso->indev_access == 0 ? "readonly" : "unrestricted");
Xorriso_status_result(xorriso, NULL, fp, flag & 2);
did_drive_access= 1;
}
sprintf(line,"-indev %s\n", Text_shellsafe(xorriso->indev,sfe,0));
Xorriso_status_result(xorriso, dev_filter, fp, flag & 2);
if(xorriso->drives_exclusive != xorriso->indev_is_exclusive &&
xorriso->indev[0] && show_indev) {
sprintf(line,"-osirrox o_excl_%s\n",
xorriso->drives_exclusive ? "on" : "off");
if(did_drive_access) {
sprintf(line,"-drive_access %s:%s\n",
xorriso->drives_exclusive ? "exclusive" : "shared",
xorriso->drives_access == 0 ? "readonly" : "unrestricted");
Xorriso_status_result(xorriso, NULL, fp, flag & 2);
}

if(xorriso->drives_exclusive != xorriso->outdev_is_exclusive &&
xorriso->outdev[0] && show_outdev) {
sprintf(line,"-osirrox o_excl_%s\n",
xorriso->outdev_is_exclusive ? "on" : "off");
did_drive_access= 0;
if((do_drive_access & 2) && xorriso->outdev[0] && show_outdev) {
sprintf(line,"-drive_access %s:%s\n",
xorriso->outdev_is_exclusive ? "exclusive" : "shared",
xorriso->outdev_access == 0 ? "readonly" : "unrestricted");
Xorriso_status_result(xorriso, NULL, fp, flag & 2);
did_drive_access= 1;
}
sprintf(line,"-outdev %s\n", Text_shellsafe(xorriso->outdev,sfe,0));
Xorriso_status_result(xorriso, dev_filter, fp, flag & 2);
if(xorriso->drives_exclusive != xorriso->outdev_is_exclusive &&
xorriso->outdev[0] && show_outdev) {
sprintf(line,"-osirrox o_excl_%s\n",
xorriso->drives_exclusive ? "on" : "off");
if(did_drive_access) {
sprintf(line,"-drive_access %s:%s\n",
xorriso->drives_exclusive ? "exclusive" : "shared",
xorriso->drives_access == 0 ? "readonly" : "unrestricted");
Xorriso_status_result(xorriso, NULL, fp, flag & 2);
}
}


+ 12
- 2
xorriso/xorrecord.1 View File

@@ -9,7 +9,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH XORRECORD 1 "Version 1.5.1, Nov 11, 2018"
.TH XORRECORD 1 "Version 1.5.1, Sep 04, 2019"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@@ -531,6 +531,16 @@ Afterwards end emulation without performing any drive operation.
Only if used as first command line argument this option
prevents reading and interpretation of startup files. See section FILES below.
.TP
\fB--drive_not_exclusive\fR
This option disables the use of device file locking mechanisms when acquiring
the drive. On GNU/Linux the locking is done by open(O_EXCL), on FreeBSD by
flock(LOCK_EX).
.br
Be aware that it can cause problems if you use a drive which is mounted,
or opened by some other process, or guarded by /dev/pktcdvd*.
Make sure that other users of the drive do not cause drive activities
while a xorrecord burn run is going on.
.TP
\fBdrive_scsi_dev_family=sr|scd|sg|default\fR
GNU/Linux specific:
.br
@@ -870,7 +880,7 @@ Thomas Schmitt <scdbackup@gmx.net>
.br
for libburnia\-project.org
.SH COPYRIGHT
Copyright (c) 2011 \- 2018 Thomas Schmitt
Copyright (c) 2011 \- 2019 Thomas Schmitt
.br
Permission is granted to distribute this text freely. It shall only be
modified in sync with the technical properties of xorriso. If you make use


+ 47
- 36
xorriso/xorrecord.info View File

@@ -3,7 +3,7 @@ xorrecord.texi.

xorrecord - Emulation of CD/DVD/BD program cdrecord by program xorriso

Copyright (C) 2011 - 2018 Thomas Schmitt
Copyright (C) 2011 - 2019 Thomas Schmitt

Permission is granted to distrubute this text freely.
INFO-DIR-SECTION Archiving
@@ -501,6 +501,14 @@ File: xorrecord.info, Node: NonCdrecord, Next: ExDevices, Prev: Verbous, Up:
Only if used as first command line argument this option prevents
reading and interpretation of startup files. See section FILES
below.
--drive_not_exclusive
This option disables the use of device file locking mechanisms when
acquiring the drive. On GNU/Linux the locking is done by
open(O_EXCL), on FreeBSD by flock(LOCK_EX).
Be aware that it can cause problems if you use a drive which is
mounted, or opened by some other process, or guarded by
/dev/pktcdvd*. Make sure that other users of the drive do not
cause drive activities while a xorrecord burn run is going on.
drive_scsi_dev_family=sr|scd|sg|default
GNU/Linux specific:
By default, cdrskin tries to map Linux drive addresses to /dev/sr*
@@ -868,7 +876,7 @@ for libburnia-project.org
10.2 Copyright
==============

Copyright (c) 2011 - 2018 Thomas Schmitt
Copyright (c) 2011 - 2019 Thomas Schmitt
Permission is granted to distribute this text freely. It shall only be
modified in sync with the technical properties of xorriso. If you make
use of the license to derive modified versions of xorriso then you are
@@ -894,10 +902,11 @@ File: xorrecord.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
* Menu:

* --devices get list of drives: DriveAddr. (line 8)
* --drive_not_exclusive use drive even if busy: NonCdrecord. (line 12)
* --grow_overwriteable_iso emulate ISO 9660 multi-session: NonCdrecord.
(line 29)
(line 37)
* --multi_if_possible apply -multi if medium is suitable: NonCdrecord.
(line 49)
(line 57)
* --no_rc do not execute xorriso startup files: NonCdrecord. (line 8)
* -atip inquire medium state: Inquire. (line 14)
* -checkdrive inquire drive CD capabilities: Inquire. (line 11)
@@ -910,7 +919,7 @@ File: xorrecord.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
* -inq inquire drive identifiers: Inquire. (line 8)
* -isosize obtain track size from ISO 9660 superblock: SetBurn.
(line 137)
* -modesty_on_drive keep drive buffer hungry: NonCdrecord. (line 73)
* -modesty_on_drive keep drive buffer hungry: NonCdrecord. (line 81)
* -msinfo retrieve multi-session info: Inquire. (line 43)
* -multi keep media appendable after burn run: SetBurn. (line 89)
* -nopad disable adding of bytes to end of track: SetBurn. (line 151)
@@ -926,19 +935,19 @@ File: xorrecord.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
* blank= make media re-usabable or format media: SetBurn. (line 28)
* dev= address the drive to be used: DriveAddr. (line 21)
* drive_scsi_dev_family= Linux device type to be used: NonCdrecord.
(line 12)
* dvd_obs= set write transaction payload size: NonCdrecord. (line 66)
(line 20)
* dvd_obs= set write transaction payload size: NonCdrecord. (line 74)
* fs= set program fifo size: SetBurn. (line 174)
* minbuf= keep drive buffer hungry: SetBurn. (line 205)
* padsize= add bytes to end of track: SetBurn. (line 144)
* speed= set write speed: SetBurn. (line 189)
* stdio_sync= control stdio buffer: NonCdrecord. (line 125)
* stdio_sync= control stdio buffer: NonCdrecord. (line 133)
* stream_recording= try to get full speed on DVD-RAM, BD: NonCdrecord.
(line 56)
(line 64)
* tsize= set a fixed track size: SetBurn. (line 126)
* use_immed_bit= control use of Immed bit: NonCdrecord. (line 110)
* use_immed_bit= control use of Immed bit: NonCdrecord. (line 118)
* write_start_address= set block address for write start: NonCdrecord.
(line 119)
(line 127)


File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
@@ -950,25 +959,27 @@ File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Menu:

* Accessing drive, wait for stdin, -waiti: SetBurn. (line 113)
* Blank, format, Immed bit, use_immed_bit=: NonCdrecord. (line 110)
* Blank, format, Immed bit, use_immed_bit=: NonCdrecord. (line 118)
* Bugs, reporting: Bugreport. (line 6)
* Data track, announce, -data: SetBurn. (line 157)
* Defect management, control, stream_recording=: NonCdrecord. (line 56)
* Defect management, control, stream_recording=: NonCdrecord. (line 64)
* Drive, address, dev=: DriveAddr. (line 21)
* Drive, get list of, --devices: DriveAddr. (line 8)
* Drive, inquire CD capabilities, -checkdrive: Inquire. (line 11)
* Drive, inquire identifiers, -inq: Inquire. (line 8)
* Drive, Linux device type, drive_scsi_dev_family: NonCdrecord.
(line 20)
* Drive, use even if busy, --drive_not_exclusive: NonCdrecord.
(line 12)
* Eject, the tray, -eject: SetBurn. (line 214)
* Examples: Examples. (line 6)
* Fifo, set size, fs=: SetBurn. (line 174)
* Full speed, on DVD-RAM and BD, stream_recording=: NonCdrecord.
(line 56)
(line 64)
* Media types, _definiton: Standards. (line 23)
* Media, blank, blank=: SetBurn. (line 28)
* Media, format, blank=: SetBurn. (line 28)
* Media, keep appendable, --multi_if_possible: NonCdrecord. (line 49)
* Media, keep appendable, --multi_if_possible: NonCdrecord. (line 57)
* Media, keep appendable, -multi: SetBurn. (line 89)
* Media, make re-usable, blank=: SetBurn. (line 28)
* medium content, inquire, -toc: Inquire. (line 22)
@@ -976,7 +987,7 @@ File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* MMC, _definiton: Standards. (line 6)
* multi-session info, retrieve, -msinfo: Inquire. (line 43)
* Multi-session, emulate ISO 9660, --grow_overwriteable_iso: NonCdrecord.
(line 29)
(line 37)
* Options, overview, -help: Verbous. (line 30)
* Overwritable media, _definiton: Standards. (line 30)
* Padding, at end of track, padsize=: SetBurn. (line 144)
@@ -991,21 +1002,21 @@ File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Track size, obtain from ISO 9660, -isosize: SetBurn. (line 137)
* Track size, set fixed, tsize=: SetBurn. (line 126)
* Track, _definiton: Standards. (line 13)
* Transaction size, set, dvd_obs=: NonCdrecord. (line 66)
* Transaction size, set, dvd_obs=: NonCdrecord. (line 74)
* Tray, eject, -eject: SetBurn. (line 214)
* Verbosity, increase, -v: Verbous. (line 16)
* Verbosity, SCSI commands, -V: Verbous. (line 20)
* Version, report, -version: Verbous. (line 8)
* Write simulation , control, -dummy: SetBurn. (line 106)
* Write start address, set, write_start_address=: NonCdrecord.
(line 119)
(line 127)
* Write type, SAO/DAO, -dao: SetBurn. (line 172)
* Write type, SAO/DAO, -sao: SetBurn. (line 168)
* Write type, TAO, -tao: SetBurn. (line 162)
* Write, buffer syncing, stdio_sync=: NonCdrecord. (line 125)
* Write, buffer syncing, stdio_sync=: NonCdrecord. (line 133)
* Write, drive buffer, -immed: SetBurn. (line 208)
* Write, drive buffer, minbuf=: SetBurn. (line 205)
* Write, drive buffer, modesty_on_drive=: NonCdrecord. (line 73)
* Write, drive buffer, modesty_on_drive=: NonCdrecord. (line 81)
* xorriso, mkisofs emulation: Xorriso. (line 6)
* xorriso, options: Options. (line 6)

@@ -1023,21 +1034,21 @@ Node: Inquire7618
Node: SetBurn10487
Node: Verbous21115
Node: NonCdrecord22665
Node: Examples30005
Node: ExDevices30666
Node: ExMedium30884
Node: ExBlank31147
Node: ExFormat31368
Node: ExDeformat31886
Node: ExIsoSingle32153
Node: ExIsoMulti32437
Node: ExIsoFly34181
Node: ExAfio35373
Node: Files36371
Node: Seealso36927
Node: Bugreport37290
Node: Legal37881
Node: CommandIdx38810
Node: ConceptIdx42300
Node: Examples30478
Node: ExDevices31139
Node: ExMedium31357
Node: ExBlank31620
Node: ExFormat31841
Node: ExDeformat32359
Node: ExIsoSingle32626
Node: ExIsoMulti32910
Node: ExIsoFly34654
Node: ExAfio35846
Node: Files36844
Node: Seealso37400
Node: Bugreport37763
Node: Legal38354
Node: CommandIdx39283
Node: ConceptIdx42846

End Tag Table

+ 15
- 3
xorriso/xorrecord.texi View File

@@ -50,7 +50,7 @@
@c man .\" First parameter, NAME, should be all caps
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
@c man .\" other parameters are allowed: see man(7), man(1)
@c man .TH XORRECORD 1 "Version 1.5.1, Nov 11, 2018"
@c man .TH XORRECORD 1 "Version 1.5.1, Sep 04, 2019"
@c man .\" Please adjust this date whenever revising the manpage.
@c man .\"
@c man .\" Some roff macros, for reference:
@@ -68,7 +68,7 @@
@copying
xorrecord - Emulation of CD/DVD/BD program cdrecord by program xorriso

Copyright @copyright{} 2011 - 2018 Thomas Schmitt
Copyright @copyright{} 2011 - 2019 Thomas Schmitt

@quotation
Permission is granted to distrubute this text freely.
@@ -736,6 +736,18 @@ Afterwards end emulation without performing any drive operation.
Only if used as first command line argument this option
prevents reading and interpretation of startup files. See section FILES below.
@c man .TP
@item @minus{}@minus{}drive_not_exclusive
@kindex @minus{}@minus{}drive_not_exclusive use drive even if busy
@cindex Drive, use even if busy, @minus{}@minus{}drive_not_exclusive
This option disables the use of device file locking mechanisms when acquiring
the drive. On GNU/Linux the locking is done by open(O_EXCL), on FreeBSD by
flock(LOCK_EX).
@*
Be aware that it can cause problems if you use a drive which is mounted,
or opened by some other process, or guarded by /dev/pktcdvd*.
Make sure that other users of the drive do not cause drive activities
while a xorrecord burn run is going on.
@c man .TP
@item drive_scsi_dev_family=sr|scd|sg|default
@kindex drive_scsi_dev_family= Linux device type to be used
@cindex Drive, Linux device type, drive_scsi_dev_family
@@ -1185,7 +1197,7 @@ Thomas Schmitt <scdbackup@@gmx.net>
for libburnia-project.org
@c man .SH COPYRIGHT
@section Copyright
Copyright (c) 2011 - 2018 Thomas Schmitt
Copyright (c) 2011 - 2019 Thomas Schmitt
@*
Permission is granted to distribute this text freely. It shall only be
modified in sync with the technical properties of xorriso. If you make use


+ 62
- 38
xorriso/xorriso.1 View File

@@ -9,7 +9,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH XORRISO 1 "Version 1.5.1, Apr 15, 2019"
.TH XORRISO 1 "Version 1.5.1, Sep 04, 2019"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@@ -690,6 +690,64 @@ apply. See above paragraph "Libburn drives".
An empty address string "" gives up the current output drive
without acquiring a new one. No writing is possible without an output drive.
.TP
\fB\-drive_class\fR "harmless"|"banned"|"caution"|"clear_list" disk_pattern
Add a drive path pattern to one of the safety lists or make those lists empty.
There are three lists defined which get tested in the following sequence:
.br
If a drive address path matches the "harmless" list then the drive will be
accepted. If it is not a MMC device then the prefix "stdio:" will be prepended
automatically. This list is empty by default.
.br
Else if the path matches the "banned" list then the drive will not be
accepted by \fBxorriso\fR but rather lead to a FAILURE event.
This list is empty by default.
.br
Else if the path matches the "caution" list and if it is not a MMC device,
then its address must have the prefix "stdio:" or it will be rejected.
This list has by default one entry: "/dev".
.br
If a drive path matches no list then it is considered "harmless". By default
these are all paths which do not begin with directory "/dev".
.br
A path matches a list if one of its parent paths or itself matches a list
entry. Address prefix "stdio:" or "mmc:" will be ignored when
testing for matches.
.br
By pseudo\-class "clear_list" and pseudo\-patterns "banned", "caution",
"harmless", or "all", the lists may be made empty.
.br
E.g.: \-drive_class clear_list banned
.br
One will normally define the \-drive_class lists in one of the \fBxorriso\fR
Startup Files.
.br
Note: This is not a security feature but rather a bumper for the superuser to
prevent inadverted mishaps. For reliably blocking access to a device file you
have to deny its rw\-permissions in the filesystem.
.TP
\fB\-drive_access\fR "exclusive"|"shared":"unrestricted"|"readonly"
Control whether device file locking mechanisms shall be used when acquiring a
drive, and whether status or content of the medium in the drive may be
altered. Useful and most harmless are the setting "shared:readonly"
and the default setting "exclusive:unrestricted".
.br
"exclusive" enables tests and locks when acquiring the drive. It depends on the
operating system which locking mechanisms get applied, if any. On GNU/Linux
it is open(O_EXCL). On FreeBSD it is flock(LOCK_EX).
.br
"shared" disables the use of these mechanisms to become able to acquire drives
which are mounted, or opened by some process, or guarded by /dev/pktcdvd*.
.br
"unrestricted" enables all technically appropriate operations on an acquired
drive. "shared:unrestricted" risks to get own burn runs spoiled by other
processes or to vice versa spoil activities of such processes. So use
"exclusive:unrestricted" unless you know for sure that "shared" is safe.
.br
"readonly" disables operations which might surprise a co\-user of the drive.
For \-outdev these are formatting, blanking, writing, ejecting. For \-indev
this is ejecting. Be aware that even reading and drive status inquiries can
disturb an ongoing burn run on CD\-R[W] and DVD\-R[W].
.TP
\fB\-scsi_dev_family\fR "default"|"sr"|"scd"|"sg"
GNU/Linux specific:
.br
@@ -816,41 +874,6 @@ to employ a loop device instead.)
In both cases, the ISO sessions should be self contained, i.e. not add\-on
sessions to an ISO image outside their track or partition.
.TP
\fB\-drive_class\fR "harmless"|"banned"|"caution"|"clear_list" disk_pattern
Add a drive path pattern to one of the safety lists or make those lists empty.
There are three lists defined which get tested in the following sequence:
.br
If a drive address path matches the "harmless" list then the drive will be
accepted. If it is not a MMC device then the prefix "stdio:" will be prepended
automatically. This list is empty by default.
.br
Else if the path matches the "banned" list then the drive will not be
accepted by \fBxorriso\fR but rather lead to a FAILURE event.
This list is empty by default.
.br
Else if the path matches the "caution" list and if it is not a MMC device,
then its address must have the prefix "stdio:" or it will be rejected.
This list has by default one entry: "/dev".
.br
If a drive path matches no list then it is considered "harmless". By default
these are all paths which do not begin with directory "/dev".
.br
A path matches a list if one of its parent paths or itself matches a list
entry. Address prefix "stdio:" or "mmc:" will be ignored when
testing for matches.
.br
By pseudo\-class "clear_list" and pseudo\-patterns "banned", "caution",
"harmless", or "all", the lists may be made empty.
.br
E.g.: \-drive_class clear_list banned
.br
One will normally define the \-drive_class lists in one of the \fBxorriso\fR
Startup Files.
.br
Note: This is not a security feature but rather a bumper for the superuser to
prevent inadverted mishaps. For reliably blocking access to a device file you
have to deny its rw\-permissions in the filesystem.
.TP
\fB\-read_fs\fR "any"|"norock"|"nojoliet"|"ecma119"
Specify which kind of filesystem tree to load if present. If the wish cannot
be fulfilled, then ECMA\-119 names are loaded and converted according
@@ -1025,7 +1048,7 @@ for timestamps of ISO 9660 nodes without a disk source file and as default
for superblock timestamps.
.br
If a timestring is given, then it is used for such timestamps. For the formats
of time strings see command \fB\-alter_date\fR.
of timestrings see command \fB\-alter_date\fR.
.TP
\fB\-disk_dev_ino\fR "on"|"ino_only"|"off"
Enable or disable processing of recorded file identification numbers
@@ -4773,7 +4796,8 @@ write permission. Default is "sort_lba_off".
Option "o_excl_on" is the default unless the program was started with leafname
"osirrox". On GNU/Linux it tries to avoid using drives which are mounted or in
use by other libburn programs.
Option "o_excl_off" on GNU/Linux enables access to such drives. Drives which
Option "o_excl_off" on GNU/Linux enables access to such drives by the
equivalent of \-drive_access "shared:readonly". I.e. drives which
get acquired while "o_excl_off" will refuse to get blanked, formatted,
written, or ejected. But be aware that even harmless inquiries can spoil
ongoing burns of CD\-R[W] and DVD\-R[W].


+ 7
- 0
xorriso/xorriso.h View File

@@ -820,6 +820,9 @@ int Xorriso_sieve_dispose(struct XorrisO *xorriso, int flag);
(Note: prefix is "Creation Time: ")
"DVD obs 64 kB:" up to 1 result from -list_extras
argv[0]= "yes" or "no"
"Drive access: " up to 2 result from -dev, -indev, -toc
argv[0]= "exclusive", "shared"
argv[1]= "readonly","restricted"
"Drive current:" up to 2 results from -dev, -indev, -toc, others
argv[0]= command ("-dev", "-outdev", "-indev")
argv[1]= drive address
@@ -1502,6 +1505,10 @@ int Xorriso_option_disk_pattern(struct XorrisO *xorriso, char *mode, int flag);
int Xorriso_option_displacement(struct XorrisO *xorriso, char *value,
int flag);

/* Command -drive_access "exclusive"|"shared":"readonly"|"unrestricted" */
/* @since 1.5.2 */
int Xorriso_option_drive_access(struct XorrisO *xorriso, char *mode, int flag);

/* Command -drive_class */
/* @since 0.3.2 */
int Xorriso_option_drive_class(struct XorrisO *xorriso,


+ 147
- 122
xorriso/xorriso.info View File

@@ -4,7 +4,7 @@ xorriso.texi.
xorriso - creates, loads, manipulates and writes ISO 9660 filesystem
images with Rock Ridge extensions.

Copyright (C) 2007 - 2017 Thomas Schmitt
Copyright (C) 2007 - 2019 Thomas Schmitt

Permission is granted to distrubute this text freely.
INFO-DIR-SECTION Archiving
@@ -638,6 +638,58 @@ acquire the drive.
An empty address string "" gives up the current output drive
without acquiring a new one. No writing is possible without an
output drive.
-drive_class "harmless"|"banned"|"caution"|"clear_list" disk_pattern
Add a drive path pattern to one of the safety lists or make those
lists empty. There are three lists defined which get tested in the
following sequence:
If a drive address path matches the "harmless" list then the drive
will be accepted. If it is not a MMC device then the prefix
"stdio:" will be prepended automatically. This list is empty by
default.
Else if the path matches the "banned" list then the drive will not
be accepted by 'xorriso' but rather lead to a FAILURE event. This
list is empty by default.
Else if the path matches the "caution" list and if it is not a MMC
device, then its address must have the prefix "stdio:" or it will
be rejected. This list has by default one entry: "/dev".
If a drive path matches no list then it is considered "harmless".
By default these are all paths which do not begin with directory
"/dev".
A path matches a list if one of its parent paths or itself matches
a list entry. Address prefix "stdio:" or "mmc:" will be ignored
when testing for matches.
By pseudo-class "clear_list" and pseudo-patterns "banned",
"caution", "harmless", or "all", the lists may be made empty.
E.g.: -drive_class clear_list banned
One will normally define the -drive_class lists in one of the
'xorriso' Startup Files.
Note: This is not a security feature but rather a bumper for the
superuser to prevent inadverted mishaps. For reliably blocking
access to a device file you have to deny its rw-permissions in the
filesystem.
-drive_access "exclusive"|"shared":"unrestricted"|"readonly"
Control whether device file locking mechanisms shall be used when
acquiring a drive, and whether status or content of the medium in
the drive may be altered. Useful and most harmless are the setting
"shared:readonly" and the default setting "exclusive:unrestricted".

"exclusive" enables tests and locks when acquiring the drive. It
depends on the operating system which locking mechanisms get
applied, if any. On GNU/Linux it is open(O_EXCL). On FreeBSD it is
flock(LOCK_EX).
"shared" disables the use of these mechanisms to become able to
acquire drives which are mounted, or opened by some process, or
guarded by /dev/pktcdvd*.
"unrestricted" enables all technically appropriate operations on an
acquired drive. "shared:unrestricted" risks to get own burn runs
spoiled by other processes or to vice versa spoil activities of
such processes. So use "exclusive:unrestricted" unless you know
for sure that "shared" is safe.
"readonly" disables operations which might surprise a co-user of
the drive. For -outdev these are formatting, blanking, writing,
ejecting. For -indev this is ejecting. Be aware that even reading
and drive status inquiries can disturb an ongoing burn run on
CD-R[W] and DVD-R[W].
-scsi_dev_family "default"|"sr"|"scd"|"sg"
GNU/Linux specific:
By default, xorriso tries to map Linux drive addresses to /dev/sr*
@@ -744,35 +796,6 @@ activate them only after image loading.
will have to employ a loop device instead.)
In both cases, the ISO sessions should be self contained, i.e. not
add-on sessions to an ISO image outside their track or partition.
-drive_class "harmless"|"banned"|"caution"|"clear_list" disk_pattern
Add a drive path pattern to one of the safety lists or make those
lists empty. There are three lists defined which get tested in the
following sequence:
If a drive address path matches the "harmless" list then the drive
will be accepted. If it is not a MMC device then the prefix
"stdio:" will be prepended automatically. This list is empty by
default.
Else if the path matches the "banned" list then the drive will not
be accepted by 'xorriso' but rather lead to a FAILURE event. This
list is empty by default.
Else if the path matches the "caution" list and if it is not a MMC
device, then its address must have the prefix "stdio:" or it will
be rejected. This list has by default one entry: "/dev".
If a drive path matches no list then it is considered "harmless".
By default these are all paths which do not begin with directory
"/dev".
A path matches a list if one of its parent paths or itself matches
a list entry. Address prefix "stdio:" or "mmc:" will be ignored
when testing for matches.
By pseudo-class "clear_list" and pseudo-patterns "banned",
"caution", "harmless", or "all", the lists may be made empty.
E.g.: -drive_class clear_list banned
One will normally define the -drive_class lists in one of the
'xorriso' Startup Files.
Note: This is not a security feature but rather a bumper for the
superuser to prevent inadverted mishaps. For reliably blocking
access to a device file you have to deny its rw-permissions in the
filesystem.
-read_fs "any"|"norock"|"nojoliet"|"ecma119"
Specify which kind of filesystem tree to load if present. If the
wish cannot be fulfilled, then ECMA-119 names are loaded and
@@ -920,7 +943,7 @@ activate them only after image loading.
point for timestamps of ISO 9660 nodes without a disk source file
and as default for superblock timestamps.
If a timestring is given, then it is used for such timestamps. For
the formats of time strings see command *-alter_date*.
the formats of timestrings see command *-alter_date*.
-disk_dev_ino "on"|"ino_only"|"off"
Enable or disable processing of recorded file identification
numbers (dev_t and ino_t). If enabled they are stored as xattr and
@@ -4017,11 +4040,11 @@ The directory permissions on disk have to allow rwx.
Option "o_excl_on" is the default unless the program was started
with leafname "osirrox". On GNU/Linux it tries to avoid using
drives which are mounted or in use by other libburn programs.
Option "o_excl_off" on GNU/Linux enables access to such drives.
Drives which get acquired while "o_excl_off" will refuse to get
blanked, formatted, written, or ejected. But be aware that even
harmless inquiries can spoil ongoing burns of CD-R[W] and DVD-R[W].
Option "o_excl_off" on GNU/Linux enables access to such drives by
the equivalent of -drive_access "shared:readonly". I.e. drives
which get acquired while "o_excl_off" will refuse to get blanked,
formatted, written, or ejected. But be aware that even harmless
inquiries can spoil ongoing burns of CD-R[W] and DVD-R[W].
Option "strict_acl_off" is default. It tolerates on FreeBSD the
presence of directory "default" ACLs in the ISO image. With
"strict_acl_on" these GNU/Linux ACLs cause on FreeBSD a FAILURE
@@ -5282,7 +5305,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* # starts a comment line: Scripting. (line 156)
* -abort_on controls abort on error: Exception. (line 27)
* -abstract_file sets abstract file name: SetWrite. (line 244)
* -acl controls handling of ACLs: Loading. (line 173)
* -acl controls handling of ACLs: Loading. (line 144)
* -add inserts one or more paths: Insert. (line 44)
* -add_plainly inserts one or more paths: Insert. (line 68)
* -alter_date sets timestamps in ISO image: Manip. (line 139)
@@ -5292,14 +5315,14 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -application_id sets application id: SetWrite. (line 191)
* -application_use sets application use field: SetWrite. (line 266)
* -as emulates mkisofs or cdrecord: Emulation. (line 13)
* -assert_volid rejects undesired images: Loading. (line 113)
* -auto_charset learns character set from image: Loading. (line 125)
* -assert_volid rejects undesired images: Loading. (line 84)
* -auto_charset learns character set from image: Loading. (line 96)
* -backslash_codes enables backslash conversion: Scripting. (line 71)
* -ban_stdio_write demands real drive: Loading. (line 342)
* -ban_stdio_write demands real drive: Loading. (line 313)
* -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 332)
* -calm_drive reduces drive activity: Loading. (line 303)
* -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)
@@ -5333,24 +5356,25 @@ 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 358)
* -data_cache_size adjusts read cache size: Loading. (line 329)
* -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 252)
* -disk_dev_ino fast incremental backup: Loading. (line 223)
* -disk_pattern controls pattern expansion: Insert. (line 34)
* -displacement compensate altered image start address: Loading.
(line 57)
* -drive_class controls drive accessability: Loading. (line 75)
* -drive_access control device file locking: AqDrive. (line 72)
* -drive_class controls drive accessability: AqDrive. (line 43)
* -du show directory size in ISO image: Navigate. (line 78)
* -dummy controls write simulation: SetWrite. (line 393)
* -dus show directory size in ISO image: Navigate. (line 81)
* -dusx show directory size on disk: Navigate. (line 88)
* -dux show directory size on disk: Navigate. (line 84)
* -dvd_obs set write block size: SetWrite. (line 330)
* -early_stdio_test classifies stdio drives: Loading. (line 346)
* -ecma119_map names w/o Rock Ridge, Joliet: Loading. (line 234)
* -early_stdio_test classifies stdio drives: Loading. (line 317)
* -ecma119_map names w/o Rock Ridge, Joliet: Loading. (line 205)
* -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)
@@ -5361,29 +5385,29 @@ 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 272)
* -file_name_limit curbs length of file names: Loading. (line 243)
* -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 91)
* -follow softlinks and mount points: SetInsert. (line 69)
* -format formats media: Writing. (line 87)
* -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 220)
* -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 191)
* -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)
* -getfattr shows xattr in ISO image: Navigate. (line 69)
* -getfattr_r shows xattr in ISO image: Navigate. (line 75)
* -gid sets global ownership: SetWrite. (line 287)
* -grow_blindly overides next writeable address: AqDrive. (line 60)
* -hardlinks controls handling of hard links: Loading. (line 136)
* -grow_blindly overides next writeable address: AqDrive. (line 112)
* -hardlinks controls handling of hard links: Loading. (line 107)
* -help prints help text: Scripting. (line 19)
* -hfsplus enables production of HFS+ partition: SetWrite. (line 14)
* -hide excludes file names from directory trees: Manip. (line 177)
* -history brings text into readline history: Scripting. (line 42)
* -indev acquires a drive for input: AqDrive. (line 23)
* -in_charset sets input character set: Loading. (line 120)
* -in_charset sets input character set: Loading. (line 91)
* -iso_nowtime fixed "now" time for ISO 9660 objects: Loading.
(line 246)
(line 217)
* -iso_rr_pattern controls pattern expansion: Manip. (line 10)
* -jigdo clears JTE or or adds parameter to JTE: Jigdo. (line 33)
* -joliet enables production of Joliet tree: SetWrite. (line 10)
@@ -5411,7 +5435,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 192)
* -md5 controls handling of MD5 sums: Loading. (line 163)
* -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)
@@ -5452,7 +5476,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -pwdx tells working directory on disk: Navigate. (line 21)
* -quoted_not_list sets exclusions: SetInsert. (line 66)
* -quoted_path_list inserts paths from disk file: Insert. (line 85)
* -read_fs filesystem type for image loading: Loading. (line 104)
* -read_fs filesystem type for image loading: Loading. (line 75)
* -read_mkisofsrc searches and reads .mkisofsrc file: Emulation.
(line 155)
* -read_speed set read speed: Loading. (line 11)
@@ -5468,10 +5492,10 @@ 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 304)
* -rom_toc_scan searches for sessions: Loading. (line 275)
* -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)
* -scsi_dev_family choose Linux device file type: AqDrive. (line 95)
* -scsi_log reports SCSI commands: Scripting. (line 143)
* -session_log logs written sessions: Scripting. (line 134)
* -session_string composes session info line: Inquiry. (line 74)
@@ -5515,7 +5539,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -volume_date sets volume timestamp: SetWrite. (line 205)
* -write_type chooses TAO or SAO/DAO: SetWrite. (line 417)
* -x enables automatic execution order of arguments: ArgSort. (line 16)
* -xattr controls handling of xattr (EA): Loading. (line 180)
* -xattr controls handling of xattr (EA): Loading. (line 151)
* -zisofs controls zisofs production: SetWrite. (line 290)


@@ -5527,7 +5551,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
[index]
* Menu:

* ACL, control handling, -acl: Loading. (line 173)
* ACL, control handling, -acl: Loading. (line 144)
* ACL, set in ISO image, -setfacl: Manip. (line 68)
* ACL, set in ISO image, -setfacl_list: Manip. (line 94)
* ACL, set in ISO image, -setfacl_r: Manip. (line 92)
@@ -5542,8 +5566,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Appended partition, in MBR or GPT: Bootable. (line 282)
* Automatic execution order, of arguments, -x: ArgSort. (line 16)
* Backslash Interpretation, _definition: Processing. (line 53)
* Backup, enable fast incremental, -disk_dev_ino: Loading. (line 252)
* Backup, enable features, -for_backup: Loading. (line 220)
* Backup, enable fast incremental, -disk_dev_ino: Loading. (line 223)
* Backup, enable features, -for_backup: Loading. (line 191)
* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 179)
* Blank media, _definition: Media. (line 29)
* Blank, format, Immed bit, -use_immed_bit: SetWrite. (line 374)
@@ -5551,10 +5575,10 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Bootability, control, -boot_image: Bootable. (line 75)
* Bugs, reporting: Bugreport. (line 6)
* cdrecord, Emulation: Emulation. (line 120)
* Character Set, for input, -in_charset: Loading. (line 120)
* Character Set, for input, -in_charset: Loading. (line 91)
* Character Set, for input/output, -charset: Charset. (line 54)
* Character Set, for output, -out_charset: SetWrite. (line 279)
* Character set, learn from image, -auto_charset: Loading. (line 125)
* Character set, learn from image, -auto_charset: Loading. (line 96)
* Character Set, of terminal, -local_charset: Charset. (line 57)
* Character Set, _definition: Charset. (line 6)
* CHRP partition, _definition: Bootable. (line 294)
@@ -5569,6 +5593,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Delete, from ISO image, -rm: Manip. (line 20)
* Delete, from ISO image, -rm_r: Manip. (line 26)
* Delete, ISO directory, -rmdir: Manip. (line 29)
* Device file locking, -drive_access: AqDrive. (line 72)
* Dialog, bring text into history, -history: Scripting. (line 42)
* Dialog, confirmation question, -reassure: DialogCtl. (line 29)
* Dialog, enable dialog mode, -dialog: DialogCtl. (line 7)
@@ -5580,9 +5605,9 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Directory, create, -mkdir: Insert. (line 177)
* Directory, delete, -rmdir: Manip. (line 29)
* disk_path, _definition: Insert. (line 6)
* Drive, accessability, -drive_class: Loading. (line 75)
* Drive, classify stdio, -early_stdio_test: Loading. (line 346)
* Drive, demand real MMC, -ban_stdio_write: Loading. (line 342)
* Drive, accessability, -drive_class: AqDrive. (line 43)
* Drive, classify stdio, -early_stdio_test: Loading. (line 317)
* Drive, demand real MMC, -ban_stdio_write: Loading. (line 313)
* Drive, eject tray, -eject: Writing. (line 50)
* Drive, for input and output, -dev: AqDrive. (line 12)
* Drive, for input, -indev: AqDrive. (line 23)
@@ -5590,7 +5615,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 332)
* Drive, reduce activity, -calm_drive: Loading. (line 303)
* Drive, report SCSI commands, -scsi_log: Scripting. (line 143)
* Drive, write and eject, -commit_eject: Writing. (line 53)
* Drive, _definition: Drives. (line 6)
@@ -5606,8 +5631,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 272)
* File names, if neither Rock Ridge nor Joliet: Loading. (line 234)
* File names, curb length, -file_name_limit: Loading. (line 243)
* File names, if neither Rock Ridge nor Joliet: Loading. (line 205)
* 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)
@@ -5625,15 +5650,15 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Group, in ISO image, -chgrp: Manip. (line 49)
* Group, in ISO image, -chgrp_r: Manip. (line 53)
* Growing, _definition: Methods. (line 20)
* Hard links, control handling, -hardlinks: Loading. (line 136)
* Hard links, control handling, -hardlinks: Loading. (line 107)
* HFS+ allocation block size: Bootable. (line 409)
* HFS+ serial number: Bootable. (line 406)
* hidden, set in ISO image, -hide: Manip. (line 177)
* HP-PA boot sector, production: Bootable. (line 381)
* Image reading, cache size, -data_cache_size: Loading. (line 358)
* Image, demand volume ID, -assert_volid: Loading. (line 113)
* Image reading, cache size, -data_cache_size: Loading. (line 329)
* Image, demand volume ID, -assert_volid: Loading. (line 84)
* Image, discard pending changes, -rollback: Writing. (line 9)
* Image, filesystem to load, -read_fs: Loading. (line 104)
* Image, filesystem to load, -read_fs: Loading. (line 75)
* Image, override change status, -changes_pending: Writing. (line 12)
* Image, set abstract file name, -abstract_file: SetWrite. (line 244)
* Image, set application id, -application_id: SetWrite. (line 191)
@@ -5682,14 +5707,14 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Jigdo Template Extraction, -jigdo: Jigdo. (line 33)
* Jigdo Template Extraction, _definition: Jigdo. (line 6)
* LBA, _definition: Drives. (line 17)
* libisofs, fixed "now" time: Loading. (line 246)
* Linux device type, -scsi_dev_family: AqDrive. (line 43)
* libisofs, fixed "now" time: Loading. (line 217)
* Linux device type, -scsi_dev_family: AqDrive. (line 95)
* List delimiter, _definition: Processing. (line 9)
* Local Character Set, _definition: Charset. (line 11)
* MBR bootable/active flag, enforce: Bootable. (line 349)
* MBR, set, -boot_image system_area=: Bootable. (line 200)
* MBR, _definition: Extras. (line 27)
* MD5, control handling, -md5: Loading. (line 192)
* MD5, control handling, -md5: Loading. (line 163)
* Media, erase, -blank: Writing. (line 57)
* Media, format, -format: Writing. (line 87)
* Media, list formats, -list_formats: Writing. (line 129)
@@ -5715,7 +5740,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Navigate, set ISO working directory, -cd: Navigate. (line 7)
* Navigate, tell disk working directory, -pwdx: Navigate. (line 21)
* Navigate, tell ISO working directory, -pwd: Navigate. (line 19)
* Next writeable address, -grow_blindly: AqDrive. (line 60)
* Next writeable address, -grow_blindly: AqDrive. (line 112)
* Output Character Set, _definition: Charset. (line 26)
* Overwriteable media, _definition: Media. (line 14)
* Ownership, global in ISO image, -uid: SetWrite. (line 284)
@@ -5793,7 +5818,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* SUN SPARC boot images, activation: Bootable. (line 450)
* Symbolic link, create, -lns: Insert. (line 181)
* System area, _definition: Bootable. (line 200)
* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 304)
* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 275)
* Table-of-content, show, -toc: Inquiry. (line 27)
* Timestamps, set in ISO image, -alter_date: Manip. (line 139)
* Timestamps, set in ISO image, -alter_date_r: Manip. (line 174)
@@ -5827,7 +5852,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Write, set speed, -speed: SetWrite. (line 301)
* Write, simulation, -dummy: SetWrite. (line 393)
* Write, TAO or SAO/DAO, -write_type: SetWrite. (line 417)
* xattr, control handling, -xattr: Loading. (line 180)
* xattr, control handling, -xattr: Loading. (line 151)
* xattr, set in ISO image, -setfattr: Manip. (line 103)
* xattr, set in ISO image, -setfattr_list: Manip. (line 120)
* xattr, set in ISO image, -setfattr_r: Manip. (line 118)
@@ -5850,49 +5875,49 @@ Node: Dialog23909
Node: Commands25598
Node: ArgSort27275
Node: AqDrive28769
Node: Loading32883
Node: Insert54507
Node: SetInsert66010
Node: Manip75442
Node: CmdFind85542
Node: Filter104471
Node: Writing109093
Node: SetWrite119249
Node: Bootable144008
Node: Jigdo170965
Node: Charset175224
Node: Exception178553
Node: DialogCtl184682
Node: Inquiry187284
Node: Navigate196168
Node: Verify204625
Node: Restore215096
Node: Emulation223709
Node: Scripting234168
Node: Frontend241951
Node: Examples251577
Node: ExDevices252755
Node: ExCreate253416
Node: ExDialog254716
Node: ExGrowing255987
Node: ExModifying256796
Node: ExBootable257306
Node: ExCharset257861
Node: ExPseudo258757
Node: ExCdrecord259684
Node: ExMkisofs260004
Node: ExGrowisofs261902
Node: ExException263056
Node: ExTime263514
Node: ExIncBackup263972
Node: ExRestore267998
Node: ExRecovery268944
Node: Files269516
Node: Environ270850
Node: Seealso271598
Node: Bugreport272315
Node: Legal272906
Node: CommandIdx273918
Node: ConceptIdx291388
Node: Loading35926
Node: Insert55883
Node: SetInsert67386
Node: Manip76818
Node: CmdFind86918
Node: Filter105847
Node: Writing110469
Node: SetWrite120625
Node: Bootable145384
Node: Jigdo172341
Node: Charset176600
Node: Exception179929
Node: DialogCtl186058
Node: Inquiry188660
Node: Navigate197544
Node: Verify206001
Node: Restore216472
Node: Emulation225149
Node: Scripting235608
Node: Frontend243391
Node: Examples253017
Node: ExDevices254195
Node: ExCreate254856
Node: ExDialog256156
Node: ExGrowing257427
Node: ExModifying258236
Node: ExBootable258746
Node: ExCharset259301
Node: ExPseudo260197
Node: ExCdrecord261124
Node: ExMkisofs261444
Node: ExGrowisofs263342
Node: ExException264496
Node: ExTime264954
Node: ExIncBackup265412
Node: ExRestore269438
Node: ExRecovery270384
Node: Files270956
Node: Environ272290
Node: Seealso273038
Node: Bugreport273755
Node: Legal274346
Node: CommandIdx275358
Node: ConceptIdx292901

End Tag Table

+ 67
- 41
xorriso/xorriso.texi View File

@@ -50,7 +50,7 @@
@c man .\" First parameter, NAME, should be all caps
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
@c man .\" other parameters are allowed: see man(7), man(1)
@c man .TH XORRISO 1 "Version 1.5.1, Apr 15, 2019"
@c man .TH XORRISO 1 "Version 1.5.1, Sep 04, 2019"
@c man .\" Please adjust this date whenever revising the manpage.
@c man .\"
@c man .\" Some roff macros, for reference:
@@ -69,7 +69,7 @@
xorriso - creates, loads, manipulates and writes ISO 9660 filesystem images
with Rock Ridge extensions.

Copyright @copyright{} 2007 - 2017 Thomas Schmitt
Copyright @copyright{} 2007 - 2019 Thomas Schmitt

@quotation
Permission is granted to distrubute this text freely.
@@ -903,6 +903,68 @@ apply. See above paragraph "Libburn drives".
An empty address string "" gives up the current output drive
without acquiring a new one. No writing is possible without an output drive.
@c man .TP
@item -drive_class "harmless"|"banned"|"caution"|"clear_list" disk_pattern
@kindex -drive_class controls drive accessability
@cindex Drive, accessability, -drive_class
Add a drive path pattern to one of the safety lists or make those lists empty.
There are three lists defined which get tested in the following sequence:
@*
If a drive address path matches the "harmless" list then the drive will be
accepted. If it is not a MMC device then the prefix "stdio:" will be prepended
automatically. This list is empty by default.
@*
Else if the path matches the "banned" list then the drive will not be
accepted by @command{xorriso} but rather lead to a FAILURE event.
This list is empty by default.
@*
Else if the path matches the "caution" list and if it is not a MMC device,
then its address must have the prefix "stdio:" or it will be rejected.
This list has by default one entry: "/dev".
@*
If a drive path matches no list then it is considered "harmless". By default
these are all paths which do not begin with directory "/dev".
@*
A path matches a list if one of its parent paths or itself matches a list
entry. Address prefix "stdio:" or "mmc:" will be ignored when
testing for matches.
@*
By pseudo-class "clear_list" and pseudo-patterns "banned", "caution",
"harmless", or "all", the lists may be made empty.
@*
E.g.: -drive_class clear_list banned
@*
One will normally define the -drive_class lists in one of the @command{xorriso}
Startup Files.
@*
Note: This is not a security feature but rather a bumper for the superuser to
prevent inadverted mishaps. For reliably blocking access to a device file you
have to deny its rw-permissions in the filesystem.
@c man .TP
@item -drive_access "exclusive"|"shared":"unrestricted"|"readonly"
@kindex -drive_access control device file locking
@cindex Device file locking, -drive_access
Control whether device file locking mechanisms shall be used when acquiring a
drive, and whether status or content of the medium in the drive may be
altered. Useful and most harmless are the setting "shared:readonly"
and the default setting "exclusive:unrestricted".
@*
"exclusive" enables tests and locks when acquiring the drive. It depends on the
operating system which locking mechanisms get applied, if any. On GNU/Linux
it is open(O_EXCL). On FreeBSD it is flock(LOCK_EX).
@*
"shared" disables the use of these mechanisms to become able to acquire drives
which are mounted, or opened by some process, or guarded by /dev/pktcdvd*.
@*
"unrestricted" enables all technically appropriate operations on an acquired
drive. "shared:unrestricted" risks to get own burn runs spoiled by other
processes or to vice versa spoil activities of such processes. So use
"exclusive:unrestricted" unless you know for sure that "shared" is safe.
@*
"readonly" disables operations which might surprise a co-user of the drive.
For -outdev these are formatting, blanking, writing, ejecting. For -indev
this is ejecting. Be aware that even reading and drive status inquiries can
disturb an ongoing burn run on CD-R[W] and DVD-R[W].
@c man .TP
@item -scsi_dev_family "default"|"sr"|"scd"|"sg"
@kindex -scsi_dev_family choose Linux device file type
@cindex Linux device type, -scsi_dev_family
@@ -1044,43 +1106,6 @@ to employ a loop device instead.)
In both cases, the ISO sessions should be self contained, i.e. not add-on
sessions to an ISO image outside their track or partition.
@c man .TP
@item -drive_class "harmless"|"banned"|"caution"|"clear_list" disk_pattern
@kindex -drive_class controls drive accessability
@cindex Drive, accessability, -drive_class
Add a drive path pattern to one of the safety lists or make those lists empty.
There are three lists defined which get tested in the following sequence:
@*
If a drive address path matches the "harmless" list then the drive will be
accepted. If it is not a MMC device then the prefix "stdio:" will be prepended
automatically. This list is empty by default.
@*
Else if the path matches the "banned" list then the drive will not be
accepted by @command{xorriso} but rather lead to a FAILURE event.
This list is empty by default.
@*
Else if the path matches the "caution" list and if it is not a MMC device,
then its address must have the prefix "stdio:" or it will be rejected.
This list has by default one entry: "/dev".
@*
If a drive path matches no list then it is considered "harmless". By default
these are all paths which do not begin with directory "/dev".
@*
A path matches a list if one of its parent paths or itself matches a list
entry. Address prefix "stdio:" or "mmc:" will be ignored when
testing for matches.
@*
By pseudo-class "clear_list" and pseudo-patterns "banned", "caution",
"harmless", or "all", the lists may be made empty.
@*
E.g.: -drive_class clear_list banned
@*
One will normally define the -drive_class lists in one of the @command{xorriso}
Startup Files.
@*
Note: This is not a security feature but rather a bumper for the superuser to
prevent inadverted mishaps. For reliably blocking access to a device file you
have to deny its rw-permissions in the filesystem.
@c man .TP
@item -read_fs "any"|"norock"|"nojoliet"|"ecma119"
@kindex -read_fs filesystem type for image loading
@cindex Image, filesystem to load, -read_fs
@@ -1277,7 +1302,7 @@ for timestamps of ISO 9660 nodes without a disk source file and as default
for superblock timestamps.
@*
If a timestring is given, then it is used for such timestamps. For the formats
of time strings see command @strong{-alter_date}.
of timestrings see command @strong{-alter_date}.
@c man .TP
@item -disk_dev_ino "on"|"ino_only"|"off"
@kindex -disk_dev_ino fast incremental backup
@@ -5504,7 +5529,8 @@ write permission. Default is "sort_lba_off".
Option "o_excl_on" is the default unless the program was started with leafname
"osirrox". On GNU/Linux it tries to avoid using drives which are mounted or in
use by other libburn programs.
Option "o_excl_off" on GNU/Linux enables access to such drives. Drives which
Option "o_excl_off" on GNU/Linux enables access to such drives by the
equivalent of -drive_access "shared:readonly". I.e. drives which
get acquired while "o_excl_off" will refuse to get blanked, formatted,
written, or ejected. But be aware that even harmless inquiries can spoil
ongoing burns of CD-R[W] and DVD-R[W].


+ 3
- 0
xorriso/xorriso_private.h View File

@@ -288,6 +288,7 @@ struct XorrisO { /* the global context of xorriso */
int read_fs; /* bit0=norock , bit1=nojoliet */

int drives_exclusive; /* burn_preset_device_open() param exclusive */
int drives_access; /* 0=readonly , 1=unrestricted */

int linux_scsi_dev_family; /* 0= default, 1= sr, 2= scd, (3= st), 4= sg */

@@ -314,6 +315,7 @@ struct XorrisO { /* the global context of xorriso */
void *in_volset_handle; /* interpreted only by libburnia oriented modules */
char *in_charset; /* The charset to interpret the filename bytes */
int indev_is_exclusive;
int indev_access; /* see drives_access */
char indev_off_adr[SfileadrL]; /* Result of burn_drive_convert_fs_adr(indev)
when indev gets acquired. */

@@ -345,6 +347,7 @@ struct XorrisO { /* the global context of xorriso */
connected to externaly perveived stdout.
*/
int outdev_is_exclusive;
int outdev_access; /* see drives_access */
char outdev_off_adr[SfileadrL]; /* Result of burn_drive_convert_fs_adr(outdev)
when outdev gets acquired. */



+ 1
- 1
xorriso/xorriso_timestamp.h View File

@@ -1 +1 @@
#define Xorriso_timestamP "2019.09.01.072438"
#define Xorriso_timestamP "2019.09.08.102946"

Loading…
Cancel
Save