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

This commit is contained in:
Thomas Schmitt 2019-09-08 12:30:52 +02:00
parent 8828d6f465
commit 901939986a
15 changed files with 509 additions and 288 deletions

View File

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

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. /* 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. 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); Xorriso_get_drive_handles(xorriso, &out_dinfo, &out_drive, "", 2 | 16);
if(in_dinfo != NULL && (out_dinfo == NULL || out_dinfo == in_dinfo)) { if(in_dinfo != NULL && (out_dinfo == NULL || out_dinfo == in_dinfo)) {
dinfo= in_dinfo; dinfo= in_dinfo;
if(flag & 2) if(flag & 2) {
xorriso->outdev_is_exclusive= xorriso->indev_is_exclusive; xorriso->outdev_is_exclusive= xorriso->indev_is_exclusive;
xorriso->outdev_access= xorriso->indev_access;
}
} else if(out_dinfo != NULL && in_dinfo == NULL) { } else if(out_dinfo != NULL && in_dinfo == NULL) {
dinfo= out_dinfo; dinfo= out_dinfo;
if(flag & 1) if(flag & 1) {
xorriso->indev_is_exclusive= xorriso->outdev_is_exclusive; xorriso->indev_is_exclusive= xorriso->outdev_is_exclusive;
xorriso->indev_access= xorriso->outdev_access;
}
} else if(out_dinfo != NULL || in_dinfo != NULL) { } else if(out_dinfo != NULL || in_dinfo != NULL) {
sprintf(xorriso->info_text, sprintf(xorriso->info_text,
"Two different drives shall be re-assed in one call"); "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) { if(ret==1) {
dinfo= out_dinfo; dinfo= out_dinfo;
xorriso->indev_is_exclusive= xorriso->outdev_is_exclusive; xorriso->indev_is_exclusive= xorriso->outdev_is_exclusive;
xorriso->indev_access= xorriso->outdev_access;
} }
} else if((flag&3)==2 && xorriso->in_drive_handle!=NULL) { } else if((flag&3)==2 && xorriso->in_drive_handle!=NULL) {
ret= Xorriso_get_drive_handles(xorriso, &in_dinfo, &in_drive, 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) { if(ret==1) {
dinfo= in_dinfo; dinfo= in_dinfo;
xorriso->outdev_is_exclusive= xorriso->indev_is_exclusive; 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(flag&1)
if(xorriso->image_start_mode&(1u<<31)) /* used up setting */ if(xorriso->image_start_mode&(1u<<31)) /* used up setting */
xorriso->image_start_mode= 0; /* no need to perform auto 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; 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_is_exclusive= xorriso->drives_exclusive;
xorriso->outdev_access= xorriso->drives_access;
}
} }
drive= dinfo[0].drive; drive= dinfo[0].drive;
volset= isoburn_get_attached_image(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) { if(!in_is_out_too) {
do_eject= !!(flag&4); do_eject= !!(flag&4);
if((flag & 4) && !xorriso->indev_is_exclusive) { if((flag & 4) && xorriso->indev_access == 0) {
sprintf(xorriso->info_text, 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); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
do_eject= 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) { if((flag&2) && xorriso->out_drive_handle!=NULL) {
do_eject= !!(flag&4); do_eject= !!(flag&4);
if((flag & 4) && !xorriso->outdev_is_exclusive) { if((flag & 4) && xorriso->outdev_access == 0) {
sprintf(xorriso->info_text, 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); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
do_eject= 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) int Xorriso_may_burn(struct XorrisO *xorriso, int flag)
{ {
if(xorriso->outdev_is_exclusive) if(xorriso->outdev_access == 1)
return(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); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
sprintf(xorriso->info_text, "A possible remedy is: -osirrox 'o_excl_on'"); sprintf(xorriso->info_text, "Possible remedy: -drive_access \"exclusive:unrestricted\".");
if(xorriso->outdev[0]) { strcat(xorriso->info_text," Then give up and re-acquire the drive.");
strcat(xorriso->info_text," -outdev ");
Text_shellsafe(xorriso->outdev, xorriso->info_text, 1);
}
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0); 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); return(0);
} }
@ -1026,6 +1037,25 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
Xorriso_toc_line(xorriso, flag & 8); Xorriso_toc_line(xorriso, flag & 8);
if(flag & 128) if(flag & 128)
{ret= 1; goto ex;} {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", sprintf(respt, "Drive type : vendor '%s' product '%s' revision '%s'\n",
dinfo[0].vendor, dinfo[0].product, dinfo[0].revision); dinfo[0].vendor, dinfo[0].product, dinfo[0].revision);
if((flag & 32) || !(flag & 1)) 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); 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; ret= 1;
ex:; ex:;
Xorriso_process_msg_queues(xorriso,0);
if (disc!=NULL)
isoburn_toc_disc_free(disc);
return(ret); return(ret);
} }

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", "\t--devices\tprint list of available MMC drives and exit emulation",
"\tdev=target\tpseudo-SCSI target to use as CD-Recorder", "\tdev=target\tpseudo-SCSI target to use as CD-Recorder",
"\tdrive_scsi_dev_family=sr|scd|sg\t\tselect Linux device type", "\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 verbose level by one",
"\t-V\t\tincrement SCSI command transport 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", "\t-checkdrive\tcheck if a driver for the drive is present",
@ -266,6 +267,8 @@ no_volunteer:;
strcpy(dev_adr, cpt); strcpy(dev_adr, cpt);
} else if(strcmp(argv[i], "--devices")==0) { /* intentional: argv[i] */ } else if(strcmp(argv[i], "--devices")==0) { /* intentional: argv[i] */
do_scanbus= 2; 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 || } else if(strncmp(argpt,"driveropts=", 11)==0 ||
strncmp(argpt,"-driveropts=", 12)==0) { strncmp(argpt,"-driveropts=", 12)==0) {
if(strcmp(argpt+11, "help")==0) { if(strcmp(argpt+11, "help")==0) {

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

View File

@ -541,7 +541,7 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
"close","close_damaged", "close","close_damaged",
"commit_eject","compliance","copyright_file", "commit_eject","compliance","copyright_file",
"dev","dialog","disk_dev_ino","disk_pattern","displacement", "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", "iso_nowtime","iso_rr_pattern","file_name_limit","follow","format","fs",
"gid","grow_blindly","hardlinks", "gid","grow_blindly","hardlinks",
"hfsplus","history","indev","in_charset","joliet", "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", "print", "print_info", "print_mark", "prompt", "sleep",
"sh_style_result", "sh_style_result",
"* Influencing opening of drives:",
"drive_access","drive_class","early_stdio_test",
"* Drive and media related inquiry actions (1):", "* Drive and media related inquiry actions (1):",
"devices", "device_links", "devices", "device_links",
"mount_opts", "mount_cmd", "session_string", "mount_opts", "mount_cmd", "session_string",
"* Influencing the behavior of image loading:", "* Influencing the behavior of image loading:",
"read_speed", "load", "displacement", "read_fs", "read_speed", "load", "displacement", "read_fs",
"drive_class", "assert_volid", "in_charset", "assert_volid", "in_charset",
"auto_charset", "hardlinks", "acl", "xattr", "md5", "for_backup", "auto_charset", "hardlinks", "acl", "xattr", "md5", "for_backup",
"ecma119_map", "ecma119_map",
"disk_dev_ino", "rom_toc_scan", "calm_drive", "ban_stdio_write", "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", "scsi_dev_family", "iso_nowtime",
"* Character sets:", "* Character sets:",
@ -1255,6 +1258,10 @@ next_command:;
(*idx)++; (*idx)++;
ret= Xorriso_option_disk_pattern(xorriso, arg1, 0); 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) { } else if(strcmp(cmd,"drive_class")==0) {
(*idx)+= 2; (*idx)+= 2;
ret= Xorriso_option_drive_class(xorriso, arg1, arg2, 0); ret= Xorriso_option_drive_class(xorriso, arg1, arg2, 0);

View File

@ -2058,6 +2058,8 @@ int Xorriso_sieve_big(struct XorrisO *xorriso, int flag)
1, 1}, 1, 1},
{"DVD obs 64 kB:", 3, "DVD obs 64 kB:", "", 1, { 0, -1, -1, -1, -1, -1}, {"DVD obs 64 kB:", 3, "DVD obs 64 kB:", "", 1, { 0, -1, -1, -1, -1, -1},
1, 0}, 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}, {"Drive current:", 3, "Drive current:", "", 2, { 0, 1, -1, -1, -1, -1},
2, 0}, 2, 0},
{"Drive id :", 3, "Drive id :", "", 1, { 0, -1, -1, -1, -1, -1}, {"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 is_default, no_defaults, i, ret, adr_mode, do_single, behavior;
int show_indev= 1, show_outdev= 1, show_dev= 0; int show_indev= 1, show_outdev= 1, show_dev= 0;
int do_drive_access, did_drive_access;
int part_table_implicit= 0; int part_table_implicit= 0;
char *line, *sfe= NULL, mode[80], *form, *treatment; char *line, *sfe= NULL, mode[80], *form, *treatment;
char *in_pt, *out_pt, *nl_charset, *local_charset, *mode_pt; 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); is_default= (xorriso->linux_scsi_dev_family == 0);
sprintf(line, "-scsi_dev_family %s\n", sprintf(line, "-scsi_dev_family %s\n",
scsi_family[xorriso->linux_scsi_dev_family & 7]); scsi_family[xorriso->linux_scsi_dev_family & 7]);
if(!(is_default && no_defaults)) if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2); Xorriso_status_result(xorriso,filter,fp,flag&2);
do_single= 0; do_single= do_drive_access= 0;
dev_filter= filter; dev_filter= filter;
if(dev_filter != NULL) { if(dev_filter != NULL) {
show_dev= Xorriso_status_filter(xorriso, filter, "-dev", 0); 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) if(show_outdev > 0 || show_indev > 0)
do_single= 1; do_single= 1;
} }
if(xorriso->drives_exclusive != xorriso->indev_is_exclusive && if((xorriso->drives_exclusive != xorriso->indev_is_exclusive ||
xorriso->indev[0]) xorriso->drives_access != xorriso->indev_access) && xorriso->indev[0]) {
do_single= 1; do_single= 1;
else if(xorriso->drives_exclusive != xorriso->outdev_is_exclusive && do_drive_access|= 1;
xorriso->outdev[0]) }
if((xorriso->drives_exclusive != xorriso->outdev_is_exclusive ||
xorriso->drives_access != xorriso->outdev_access) &&
xorriso->outdev[0]) {
do_single= 1; do_single= 1;
do_drive_access|= 2;
}
if(strcmp(xorriso->indev, xorriso->outdev) == 0 && !do_single) { if(strcmp(xorriso->indev, xorriso->outdev) == 0 && !do_single) {
sprintf(line,"-dev %s\n", Text_shellsafe(xorriso->indev,sfe,0)); sprintf(line,"-dev %s\n", Text_shellsafe(xorriso->indev,sfe,0));
Xorriso_status_result(xorriso, dev_filter, fp, flag & 2); Xorriso_status_result(xorriso, dev_filter, fp, flag & 2);
} else { } else {
if(xorriso->drives_exclusive != xorriso->indev_is_exclusive && did_drive_access= 0;
xorriso->indev[0] && show_indev) { if((do_drive_access & 1) && xorriso->indev[0] && show_indev) {
sprintf(line,"-osirrox o_excl_%s\n", sprintf(line,"-drive_access %s:%s\n",
xorriso->indev_is_exclusive ? "on" : "off"); xorriso->indev_is_exclusive ? "exclusive" : "shared",
xorriso->indev_access == 0 ? "readonly" : "unrestricted");
Xorriso_status_result(xorriso, NULL, fp, flag & 2); Xorriso_status_result(xorriso, NULL, fp, flag & 2);
did_drive_access= 1;
} }
sprintf(line,"-indev %s\n", Text_shellsafe(xorriso->indev,sfe,0)); sprintf(line,"-indev %s\n", Text_shellsafe(xorriso->indev,sfe,0));
Xorriso_status_result(xorriso, dev_filter, fp, flag & 2); Xorriso_status_result(xorriso, dev_filter, fp, flag & 2);
if(xorriso->drives_exclusive != xorriso->indev_is_exclusive && if(did_drive_access) {
xorriso->indev[0] && show_indev) { sprintf(line,"-drive_access %s:%s\n",
sprintf(line,"-osirrox o_excl_%s\n", xorriso->drives_exclusive ? "exclusive" : "shared",
xorriso->drives_exclusive ? "on" : "off"); xorriso->drives_access == 0 ? "readonly" : "unrestricted");
Xorriso_status_result(xorriso, NULL, fp, flag & 2); Xorriso_status_result(xorriso, NULL, fp, flag & 2);
} }
if(xorriso->drives_exclusive != xorriso->outdev_is_exclusive && did_drive_access= 0;
xorriso->outdev[0] && show_outdev) { if((do_drive_access & 2) && xorriso->outdev[0] && show_outdev) {
sprintf(line,"-osirrox o_excl_%s\n", sprintf(line,"-drive_access %s:%s\n",
xorriso->outdev_is_exclusive ? "on" : "off"); xorriso->outdev_is_exclusive ? "exclusive" : "shared",
xorriso->outdev_access == 0 ? "readonly" : "unrestricted");
Xorriso_status_result(xorriso, NULL, fp, flag & 2); Xorriso_status_result(xorriso, NULL, fp, flag & 2);
did_drive_access= 1;
} }
sprintf(line,"-outdev %s\n", Text_shellsafe(xorriso->outdev,sfe,0)); sprintf(line,"-outdev %s\n", Text_shellsafe(xorriso->outdev,sfe,0));
Xorriso_status_result(xorriso, dev_filter, fp, flag & 2); Xorriso_status_result(xorriso, dev_filter, fp, flag & 2);
if(xorriso->drives_exclusive != xorriso->outdev_is_exclusive && if(did_drive_access) {
xorriso->outdev[0] && show_outdev) { sprintf(line,"-drive_access %s:%s\n",
sprintf(line,"-osirrox o_excl_%s\n", xorriso->drives_exclusive ? "exclusive" : "shared",
xorriso->drives_exclusive ? "on" : "off"); xorriso->drives_access == 0 ? "readonly" : "unrestricted");
Xorriso_status_result(xorriso, NULL, fp, flag & 2); Xorriso_status_result(xorriso, NULL, fp, flag & 2);
} }
} }

View File

@ -9,7 +9,7 @@
.\" First parameter, NAME, should be all caps .\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1) .\" other parameters are allowed: see man(7), man(1)
.TH 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. .\" Please adjust this date whenever revising the manpage.
.\" .\"
.\" Some roff macros, for reference: .\" 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 Only if used as first command line argument this option
prevents reading and interpretation of startup files. See section FILES below. prevents reading and interpretation of startup files. See section FILES below.
.TP .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 \fBdrive_scsi_dev_family=sr|scd|sg|default\fR
GNU/Linux specific: GNU/Linux specific:
.br .br
@ -870,7 +880,7 @@ Thomas Schmitt <scdbackup@gmx.net>
.br .br
for libburnia\-project.org for libburnia\-project.org
.SH COPYRIGHT .SH COPYRIGHT
Copyright (c) 2011 \- 2018 Thomas Schmitt Copyright (c) 2011 \- 2019 Thomas Schmitt
.br .br
Permission is granted to distribute this text freely. It shall only be 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 modified in sync with the technical properties of xorriso. If you make use

View File

@ -3,7 +3,7 @@ xorrecord.texi.
xorrecord - Emulation of CD/DVD/BD program cdrecord by program xorriso 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. Permission is granted to distrubute this text freely.
INFO-DIR-SECTION Archiving 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 Only if used as first command line argument this option prevents
reading and interpretation of startup files. See section FILES reading and interpretation of startup files. See section FILES
below. 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 drive_scsi_dev_family=sr|scd|sg|default
GNU/Linux specific: GNU/Linux specific:
By default, cdrskin tries to map Linux drive addresses to /dev/sr* By default, cdrskin tries to map Linux drive addresses to /dev/sr*
@ -868,7 +876,7 @@ for libburnia-project.org
10.2 Copyright 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 Permission is granted to distribute this text freely. It shall only be
modified in sync with the technical properties of xorriso. If you make 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 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: * Menu:
* --devices get list of drives: DriveAddr. (line 8) * --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. * --grow_overwriteable_iso emulate ISO 9660 multi-session: NonCdrecord.
(line 29) (line 37)
* --multi_if_possible apply -multi if medium is suitable: NonCdrecord. * --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) * --no_rc do not execute xorriso startup files: NonCdrecord. (line 8)
* -atip inquire medium state: Inquire. (line 14) * -atip inquire medium state: Inquire. (line 14)
* -checkdrive inquire drive CD capabilities: Inquire. (line 11) * -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) * -inq inquire drive identifiers: Inquire. (line 8)
* -isosize obtain track size from ISO 9660 superblock: SetBurn. * -isosize obtain track size from ISO 9660 superblock: SetBurn.
(line 137) (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) * -msinfo retrieve multi-session info: Inquire. (line 43)
* -multi keep media appendable after burn run: SetBurn. (line 89) * -multi keep media appendable after burn run: SetBurn. (line 89)
* -nopad disable adding of bytes to end of track: SetBurn. (line 151) * -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) * blank= make media re-usabable or format media: SetBurn. (line 28)
* dev= address the drive to be used: DriveAddr. (line 21) * dev= address the drive to be used: DriveAddr. (line 21)
* drive_scsi_dev_family= Linux device type to be used: NonCdrecord. * drive_scsi_dev_family= Linux device type to be used: NonCdrecord.
(line 12) (line 20)
* dvd_obs= set write transaction payload size: NonCdrecord. (line 66) * dvd_obs= set write transaction payload size: NonCdrecord. (line 74)
* fs= set program fifo size: SetBurn. (line 174) * fs= set program fifo size: SetBurn. (line 174)
* minbuf= keep drive buffer hungry: SetBurn. (line 205) * minbuf= keep drive buffer hungry: SetBurn. (line 205)
* padsize= add bytes to end of track: SetBurn. (line 144) * padsize= add bytes to end of track: SetBurn. (line 144)
* speed= set write speed: SetBurn. (line 189) * 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. * 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) * 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. * write_start_address= set block address for write start: NonCdrecord.
(line 119) (line 127)
 
File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
@ -950,25 +959,27 @@ File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Menu: * Menu:
* Accessing drive, wait for stdin, -waiti: SetBurn. (line 113) * 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) * Bugs, reporting: Bugreport. (line 6)
* Data track, announce, -data: SetBurn. (line 157) * 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, address, dev=: DriveAddr. (line 21)
* Drive, get list of, --devices: DriveAddr. (line 8) * Drive, get list of, --devices: DriveAddr. (line 8)
* Drive, inquire CD capabilities, -checkdrive: Inquire. (line 11) * Drive, inquire CD capabilities, -checkdrive: Inquire. (line 11)
* Drive, inquire identifiers, -inq: Inquire. (line 8) * Drive, inquire identifiers, -inq: Inquire. (line 8)
* Drive, Linux device type, drive_scsi_dev_family: NonCdrecord. * Drive, Linux device type, drive_scsi_dev_family: NonCdrecord.
(line 20)
* Drive, use even if busy, --drive_not_exclusive: NonCdrecord.
(line 12) (line 12)
* Eject, the tray, -eject: SetBurn. (line 214) * Eject, the tray, -eject: SetBurn. (line 214)
* Examples: Examples. (line 6) * Examples: Examples. (line 6)
* Fifo, set size, fs=: SetBurn. (line 174) * Fifo, set size, fs=: SetBurn. (line 174)
* Full speed, on DVD-RAM and BD, stream_recording=: NonCdrecord. * Full speed, on DVD-RAM and BD, stream_recording=: NonCdrecord.
(line 56) (line 64)
* Media types, _definiton: Standards. (line 23) * Media types, _definiton: Standards. (line 23)
* Media, blank, blank=: SetBurn. (line 28) * Media, blank, blank=: SetBurn. (line 28)
* Media, format, 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, keep appendable, -multi: SetBurn. (line 89)
* Media, make re-usable, blank=: SetBurn. (line 28) * Media, make re-usable, blank=: SetBurn. (line 28)
* medium content, inquire, -toc: Inquire. (line 22) * 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) * MMC, _definiton: Standards. (line 6)
* multi-session info, retrieve, -msinfo: Inquire. (line 43) * multi-session info, retrieve, -msinfo: Inquire. (line 43)
* Multi-session, emulate ISO 9660, --grow_overwriteable_iso: NonCdrecord. * Multi-session, emulate ISO 9660, --grow_overwriteable_iso: NonCdrecord.
(line 29) (line 37)
* Options, overview, -help: Verbous. (line 30) * Options, overview, -help: Verbous. (line 30)
* Overwritable media, _definiton: Standards. (line 30) * Overwritable media, _definiton: Standards. (line 30)
* Padding, at end of track, padsize=: SetBurn. (line 144) * 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, obtain from ISO 9660, -isosize: SetBurn. (line 137)
* Track size, set fixed, tsize=: SetBurn. (line 126) * Track size, set fixed, tsize=: SetBurn. (line 126)
* Track, _definiton: Standards. (line 13) * 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) * Tray, eject, -eject: SetBurn. (line 214)
* Verbosity, increase, -v: Verbous. (line 16) * Verbosity, increase, -v: Verbous. (line 16)
* Verbosity, SCSI commands, -V: Verbous. (line 20) * Verbosity, SCSI commands, -V: Verbous. (line 20)
* Version, report, -version: Verbous. (line 8) * Version, report, -version: Verbous. (line 8)
* Write simulation , control, -dummy: SetBurn. (line 106) * Write simulation , control, -dummy: SetBurn. (line 106)
* Write start address, set, write_start_address=: NonCdrecord. * Write start address, set, write_start_address=: NonCdrecord.
(line 119) (line 127)
* Write type, SAO/DAO, -dao: SetBurn. (line 172) * Write type, SAO/DAO, -dao: SetBurn. (line 172)
* Write type, SAO/DAO, -sao: SetBurn. (line 168) * Write type, SAO/DAO, -sao: SetBurn. (line 168)
* Write type, TAO, -tao: SetBurn. (line 162) * 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, -immed: SetBurn. (line 208)
* Write, drive buffer, minbuf=: SetBurn. (line 205) * 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, mkisofs emulation: Xorriso. (line 6)
* xorriso, options: Options. (line 6) * xorriso, options: Options. (line 6)
@ -1023,21 +1034,21 @@ Node: Inquire7618
Node: SetBurn10487 Node: SetBurn10487
Node: Verbous21115 Node: Verbous21115
Node: NonCdrecord22665 Node: NonCdrecord22665
Node: Examples30005 Node: Examples30478
Node: ExDevices30666 Node: ExDevices31139
Node: ExMedium30884 Node: ExMedium31357
Node: ExBlank31147 Node: ExBlank31620
Node: ExFormat31368 Node: ExFormat31841
Node: ExDeformat31886 Node: ExDeformat32359
Node: ExIsoSingle32153 Node: ExIsoSingle32626
Node: ExIsoMulti32437 Node: ExIsoMulti32910
Node: ExIsoFly34181 Node: ExIsoFly34654
Node: ExAfio35373 Node: ExAfio35846
Node: Files36371 Node: Files36844
Node: Seealso36927 Node: Seealso37400
Node: Bugreport37290 Node: Bugreport37763
Node: Legal37881 Node: Legal38354
Node: CommandIdx38810 Node: CommandIdx39283
Node: ConceptIdx42300 Node: ConceptIdx42846
 
End Tag Table End Tag Table

View File

@ -50,7 +50,7 @@
@c man .\" First parameter, NAME, should be all caps @c man .\" First parameter, NAME, should be all caps
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection @c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
@c man .\" other parameters are allowed: see man(7), man(1) @c man .\" other parameters are allowed: see man(7), man(1)
@c man .TH 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 .\" Please adjust this date whenever revising the manpage.
@c man .\" @c man .\"
@c man .\" Some roff macros, for reference: @c man .\" Some roff macros, for reference:
@ -68,7 +68,7 @@
@copying @copying
xorrecord - Emulation of CD/DVD/BD program cdrecord by program xorriso xorrecord - Emulation of CD/DVD/BD program cdrecord by program xorriso
Copyright @copyright{} 2011 - 2018 Thomas Schmitt Copyright @copyright{} 2011 - 2019 Thomas Schmitt
@quotation @quotation
Permission is granted to distrubute this text freely. 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 Only if used as first command line argument this option
prevents reading and interpretation of startup files. See section FILES below. prevents reading and interpretation of startup files. See section FILES below.
@c man .TP @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 @item drive_scsi_dev_family=sr|scd|sg|default
@kindex drive_scsi_dev_family= Linux device type to be used @kindex drive_scsi_dev_family= Linux device type to be used
@cindex Drive, Linux device type, drive_scsi_dev_family @cindex Drive, Linux device type, drive_scsi_dev_family
@ -1185,7 +1197,7 @@ Thomas Schmitt <scdbackup@@gmx.net>
for libburnia-project.org for libburnia-project.org
@c man .SH COPYRIGHT @c man .SH COPYRIGHT
@section 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 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 modified in sync with the technical properties of xorriso. If you make use

View File

@ -9,7 +9,7 @@
.\" First parameter, NAME, should be all caps .\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1) .\" other parameters are allowed: see man(7), man(1)
.TH XORRISO 1 "Version 1.5.1, Apr 15, 2019" .TH XORRISO 1 "Version 1.5.1, Sep 04, 2019"
.\" Please adjust this date whenever revising the manpage. .\" Please adjust this date whenever revising the manpage.
.\" .\"
.\" Some roff macros, for reference: .\" Some roff macros, for reference:
@ -690,6 +690,64 @@ apply. See above paragraph "Libburn drives".
An empty address string "" gives up the current output drive An empty address string "" gives up the current output drive
without acquiring a new one. No writing is possible without an output drive. without acquiring a new one. No writing is possible without an output drive.
.TP .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" \fB\-scsi_dev_family\fR "default"|"sr"|"scd"|"sg"
GNU/Linux specific: GNU/Linux specific:
.br .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 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. sessions to an ISO image outside their track or partition.
.TP .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" \fB\-read_fs\fR "any"|"norock"|"nojoliet"|"ecma119"
Specify which kind of filesystem tree to load if present. If the wish cannot 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 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. for superblock timestamps.
.br .br
If a timestring is given, then it is used for such timestamps. For the formats 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 .TP
\fB\-disk_dev_ino\fR "on"|"ino_only"|"off" \fB\-disk_dev_ino\fR "on"|"ino_only"|"off"
Enable or disable processing of recorded file identification numbers 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 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 "osirrox". On GNU/Linux it tries to avoid using drives which are mounted or in
use by other libburn programs. 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, get acquired while "o_excl_off" will refuse to get blanked, formatted,
written, or ejected. But be aware that even harmless inquiries can spoil written, or ejected. But be aware that even harmless inquiries can spoil
ongoing burns of CD\-R[W] and DVD\-R[W]. ongoing burns of CD\-R[W] and DVD\-R[W].

View File

@ -820,6 +820,9 @@ int Xorriso_sieve_dispose(struct XorrisO *xorriso, int flag);
(Note: prefix is "Creation Time: ") (Note: prefix is "Creation Time: ")
"DVD obs 64 kB:" up to 1 result from -list_extras "DVD obs 64 kB:" up to 1 result from -list_extras
argv[0]= "yes" or "no" 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 "Drive current:" up to 2 results from -dev, -indev, -toc, others
argv[0]= command ("-dev", "-outdev", "-indev") argv[0]= command ("-dev", "-outdev", "-indev")
argv[1]= drive address 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 Xorriso_option_displacement(struct XorrisO *xorriso, char *value,
int flag); 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 */ /* Command -drive_class */
/* @since 0.3.2 */ /* @since 0.3.2 */
int Xorriso_option_drive_class(struct XorrisO *xorriso, int Xorriso_option_drive_class(struct XorrisO *xorriso,

View File

@ -4,7 +4,7 @@ xorriso.texi.
xorriso - creates, loads, manipulates and writes ISO 9660 filesystem xorriso - creates, loads, manipulates and writes ISO 9660 filesystem
images with Rock Ridge extensions. 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. Permission is granted to distrubute this text freely.
INFO-DIR-SECTION Archiving INFO-DIR-SECTION Archiving
@ -638,6 +638,58 @@ acquire the drive.
An empty address string "" gives up the current output drive An empty address string "" gives up the current output drive
without acquiring a new one. No writing is possible without an without acquiring a new one. No writing is possible without an
output drive. 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" -scsi_dev_family "default"|"sr"|"scd"|"sg"
GNU/Linux specific: GNU/Linux specific:
By default, xorriso tries to map Linux drive addresses to /dev/sr* 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.) will have to employ a loop device instead.)
In both cases, the ISO sessions should be self contained, i.e. not 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. 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" -read_fs "any"|"norock"|"nojoliet"|"ecma119"
Specify which kind of filesystem tree to load if present. If the Specify which kind of filesystem tree to load if present. If the
wish cannot be fulfilled, then ECMA-119 names are loaded and 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 point for timestamps of ISO 9660 nodes without a disk source file
and as default for superblock timestamps. and as default for superblock timestamps.
If a timestring is given, then it is used for such timestamps. For 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" -disk_dev_ino "on"|"ino_only"|"off"
Enable or disable processing of recorded file identification Enable or disable processing of recorded file identification
numbers (dev_t and ino_t). If enabled they are stored as xattr and 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 Option "o_excl_on" is the default unless the program was started
with leafname "osirrox". On GNU/Linux it tries to avoid using with leafname "osirrox". On GNU/Linux it tries to avoid using
drives which are mounted or in use by other libburn programs. drives which are mounted or in use by other libburn programs.
Option "o_excl_off" on GNU/Linux enables access to such drives. Option "o_excl_off" on GNU/Linux enables access to such drives by
Drives which get acquired while "o_excl_off" will refuse to get the equivalent of -drive_access "shared:readonly". I.e. drives
blanked, formatted, written, or ejected. But be aware that even which get acquired while "o_excl_off" will refuse to get blanked,
harmless inquiries can spoil ongoing burns of CD-R[W] and DVD-R[W]. 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 Option "strict_acl_off" is default. It tolerates on FreeBSD the
presence of directory "default" ACLs in the ISO image. With presence of directory "default" ACLs in the ISO image. With
"strict_acl_on" these GNU/Linux ACLs cause on FreeBSD a FAILURE "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) * # starts a comment line: Scripting. (line 156)
* -abort_on controls abort on error: Exception. (line 27) * -abort_on controls abort on error: Exception. (line 27)
* -abstract_file sets abstract file name: SetWrite. (line 244) * -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 inserts one or more paths: Insert. (line 44)
* -add_plainly inserts one or more paths: Insert. (line 68) * -add_plainly inserts one or more paths: Insert. (line 68)
* -alter_date sets timestamps in ISO image: Manip. (line 139) * -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_id sets application id: SetWrite. (line 191)
* -application_use sets application use field: SetWrite. (line 266) * -application_use sets application use field: SetWrite. (line 266)
* -as emulates mkisofs or cdrecord: Emulation. (line 13) * -as emulates mkisofs or cdrecord: Emulation. (line 13)
* -assert_volid rejects undesired images: Loading. (line 113) * -assert_volid rejects undesired images: Loading. (line 84)
* -auto_charset learns character set from image: Loading. (line 125) * -auto_charset learns character set from image: Loading. (line 96)
* -backslash_codes enables backslash conversion: Scripting. (line 71) * -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) * -biblio_file sets biblio file name: SetWrite. (line 250)
* -blank erases media: Writing. (line 57) * -blank erases media: Writing. (line 57)
* -boot_image controls bootability: Bootable. (line 75) * -boot_image controls bootability: Bootable. (line 75)
* -calm_drive reduces drive activity: Loading. (line 332) * -calm_drive reduces drive activity: Loading. (line 303)
* -cd sets working directory in ISO: Navigate. (line 7) * -cd sets working directory in ISO: Navigate. (line 7)
* -cdx sets working directory on disk: Navigate. (line 15) * -cdx sets working directory on disk: Navigate. (line 15)
* -changes_pending overrides change status: Writing. (line 12) * -changes_pending overrides change status: Writing. (line 12)
@ -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: Restore. (line 103)
* -cp_rx copies file trees to disk <1>: Restore. (line 111) * -cp_rx copies file trees to disk <1>: Restore. (line 111)
* -cut_out inserts piece of data file: Insert. (line 139) * -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) * -dev acquires one drive for input and output: AqDrive. (line 12)
* -devices gets list of drives: Inquiry. (line 7) * -devices gets list of drives: Inquiry. (line 7)
* -device_links gets list of drives: Inquiry. (line 17) * -device_links gets list of drives: Inquiry. (line 17)
* -dialog enables dialog mode: DialogCtl. (line 7) * -dialog enables dialog mode: DialogCtl. (line 7)
* -disk_dev_ino fast incremental backup: Loading. (line 252) * -disk_dev_ino fast incremental backup: Loading. (line 223)
* -disk_pattern controls pattern expansion: Insert. (line 34) * -disk_pattern controls pattern expansion: Insert. (line 34)
* -displacement compensate altered image start address: Loading. * -displacement compensate altered image start address: Loading.
(line 57) (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) * -du show directory size in ISO image: Navigate. (line 78)
* -dummy controls write simulation: SetWrite. (line 393) * -dummy controls write simulation: SetWrite. (line 393)
* -dus show directory size in ISO image: Navigate. (line 81) * -dus show directory size in ISO image: Navigate. (line 81)
* -dusx show directory size on disk: Navigate. (line 88) * -dusx show directory size on disk: Navigate. (line 88)
* -dux show directory size on disk: Navigate. (line 84) * -dux show directory size on disk: Navigate. (line 84)
* -dvd_obs set write block size: SetWrite. (line 330) * -dvd_obs set write block size: SetWrite. (line 330)
* -early_stdio_test classifies stdio drives: Loading. (line 346) * -early_stdio_test classifies stdio drives: Loading. (line 317)
* -ecma119_map names w/o Rock Ridge, Joliet: Loading. (line 234) * -ecma119_map names w/o Rock Ridge, Joliet: Loading. (line 205)
* -eject ejects drive tray: Writing. (line 50) * -eject ejects drive tray: Writing. (line 50)
* -end writes pending session and ends program: Scripting. (line 151) * -end writes pending session and ends program: Scripting. (line 151)
* -errfile_log logs problematic disk files: Scripting. (line 116) * -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_cut copies file piece to disk: Restore. (line 80)
* -extract_l copies files to disk: Restore. (line 76) * -extract_l copies files to disk: Restore. (line 76)
* -extract_single copies file to disk: Restore. (line 73) * -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) * -file_size_limit limits data file size: SetInsert. (line 7)
* -find traverses and alters ISO tree: CmdFind. (line 7) * -find traverses and alters ISO tree: CmdFind. (line 7)
* -findx traverses disk tree: Navigate. (line 91) * -findx traverses disk tree: Navigate. (line 91)
* -follow softlinks and mount points: SetInsert. (line 69) * -follow softlinks and mount points: SetInsert. (line 69)
* -format formats media: Writing. (line 87) * -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) * -fs sets size of fifo: SetWrite. (line 396)
* -getfacl shows ACL in ISO image: Navigate. (line 60) * -getfacl shows ACL in ISO image: Navigate. (line 60)
* -getfacl_r shows ACL in ISO image: Navigate. (line 66) * -getfacl_r shows ACL in ISO image: Navigate. (line 66)
* -getfattr shows xattr in ISO image: Navigate. (line 69) * -getfattr shows xattr in ISO image: Navigate. (line 69)
* -getfattr_r shows xattr in ISO image: Navigate. (line 75) * -getfattr_r shows xattr in ISO image: Navigate. (line 75)
* -gid sets global ownership: SetWrite. (line 287) * -gid sets global ownership: SetWrite. (line 287)
* -grow_blindly overides next writeable address: AqDrive. (line 60) * -grow_blindly overides next writeable address: AqDrive. (line 112)
* -hardlinks controls handling of hard links: Loading. (line 136) * -hardlinks controls handling of hard links: Loading. (line 107)
* -help prints help text: Scripting. (line 19) * -help prints help text: Scripting. (line 19)
* -hfsplus enables production of HFS+ partition: SetWrite. (line 14) * -hfsplus enables production of HFS+ partition: SetWrite. (line 14)
* -hide excludes file names from directory trees: Manip. (line 177) * -hide excludes file names from directory trees: Manip. (line 177)
* -history brings text into readline history: Scripting. (line 42) * -history brings text into readline history: Scripting. (line 42)
* -indev acquires a drive for input: AqDrive. (line 23) * -indev acquires a drive for input: AqDrive. (line 23)
* -in_charset sets input character set: Loading. (line 120) * -in_charset sets input character set: Loading. (line 91)
* -iso_nowtime fixed "now" time for ISO 9660 objects: Loading. * -iso_nowtime fixed "now" time for ISO 9660 objects: Loading.
(line 246) (line 217)
* -iso_rr_pattern controls pattern expansion: Manip. (line 10) * -iso_rr_pattern controls pattern expansion: Manip. (line 10)
* -jigdo clears JTE or or adds parameter to JTE: Jigdo. (line 33) * -jigdo clears JTE or or adds parameter to JTE: Jigdo. (line 33)
* -joliet enables production of Joliet tree: SetWrite. (line 10) * -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_l inserts paths from disk file: Insert. (line 96)
* -map_single inserts path: Insert. (line 93) * -map_single inserts path: Insert. (line 93)
* -mark sets synchronizing message: Frontend. (line 23) * -mark sets synchronizing message: Frontend. (line 23)
* -md5 controls handling of MD5 sums: Loading. (line 192) * -md5 controls handling of MD5 sums: Loading. (line 163)
* -mkdir creates ISO directory: Insert. (line 177) * -mkdir creates ISO directory: Insert. (line 177)
* -modesty_on_drive keep drive buffer hungry: SetWrite. (line 336) * -modesty_on_drive keep drive buffer hungry: SetWrite. (line 336)
* -mount issues mount command for ISO session: Restore. (line 146) * -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) * -pwdx tells working directory on disk: Navigate. (line 21)
* -quoted_not_list sets exclusions: SetInsert. (line 66) * -quoted_not_list sets exclusions: SetInsert. (line 66)
* -quoted_path_list inserts paths from disk file: Insert. (line 85) * -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. * -read_mkisofsrc searches and reads .mkisofsrc file: Emulation.
(line 155) (line 155)
* -read_speed set read speed: Loading. (line 11) * -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) (line 51)
* -rollback discards pending changes: Writing. (line 9) * -rollback discards pending changes: Writing. (line 9)
* -rollback_end ends program without writing: Scripting. (line 154) * -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) * -rr_reloc_dir sets name of relocation directory: SetWrite. (line 144)
* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 179) * -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) * -scsi_log reports SCSI commands: Scripting. (line 143)
* -session_log logs written sessions: Scripting. (line 134) * -session_log logs written sessions: Scripting. (line 134)
* -session_string composes session info line: Inquiry. (line 74) * -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) * -volume_date sets volume timestamp: SetWrite. (line 205)
* -write_type chooses TAO or SAO/DAO: SetWrite. (line 417) * -write_type chooses TAO or SAO/DAO: SetWrite. (line 417)
* -x enables automatic execution order of arguments: ArgSort. (line 16) * -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) * -zisofs controls zisofs production: SetWrite. (line 290)
 
@ -5527,7 +5551,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
[index] [index]
* Menu: * 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: Manip. (line 68)
* ACL, set in ISO image, -setfacl_list: Manip. (line 94) * ACL, set in ISO image, -setfacl_list: Manip. (line 94)
* ACL, set in ISO image, -setfacl_r: Manip. (line 92) * 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) * Appended partition, in MBR or GPT: Bootable. (line 282)
* Automatic execution order, of arguments, -x: ArgSort. (line 16) * Automatic execution order, of arguments, -x: ArgSort. (line 16)
* Backslash Interpretation, _definition: Processing. (line 53) * Backslash Interpretation, _definition: Processing. (line 53)
* Backup, enable fast incremental, -disk_dev_ino: Loading. (line 252) * Backup, enable fast incremental, -disk_dev_ino: Loading. (line 223)
* Backup, enable features, -for_backup: Loading. (line 220) * Backup, enable features, -for_backup: Loading. (line 191)
* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 179) * Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 179)
* Blank media, _definition: Media. (line 29) * Blank media, _definition: Media. (line 29)
* Blank, format, Immed bit, -use_immed_bit: SetWrite. (line 374) * 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) * Bootability, control, -boot_image: Bootable. (line 75)
* Bugs, reporting: Bugreport. (line 6) * Bugs, reporting: Bugreport. (line 6)
* cdrecord, Emulation: Emulation. (line 120) * 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 input/output, -charset: Charset. (line 54)
* Character Set, for output, -out_charset: SetWrite. (line 279) * 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, of terminal, -local_charset: Charset. (line 57)
* Character Set, _definition: Charset. (line 6) * Character Set, _definition: Charset. (line 6)
* CHRP partition, _definition: Bootable. (line 294) * 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: Manip. (line 20)
* Delete, from ISO image, -rm_r: Manip. (line 26) * Delete, from ISO image, -rm_r: Manip. (line 26)
* Delete, ISO directory, -rmdir: Manip. (line 29) * 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, bring text into history, -history: Scripting. (line 42)
* Dialog, confirmation question, -reassure: DialogCtl. (line 29) * Dialog, confirmation question, -reassure: DialogCtl. (line 29)
* Dialog, enable dialog mode, -dialog: DialogCtl. (line 7) * 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, create, -mkdir: Insert. (line 177)
* Directory, delete, -rmdir: Manip. (line 29) * Directory, delete, -rmdir: Manip. (line 29)
* disk_path, _definition: Insert. (line 6) * disk_path, _definition: Insert. (line 6)
* Drive, accessability, -drive_class: Loading. (line 75) * Drive, accessability, -drive_class: AqDrive. (line 43)
* Drive, classify stdio, -early_stdio_test: Loading. (line 346) * Drive, classify stdio, -early_stdio_test: Loading. (line 317)
* Drive, demand real MMC, -ban_stdio_write: Loading. (line 342) * Drive, demand real MMC, -ban_stdio_write: Loading. (line 313)
* Drive, eject tray, -eject: Writing. (line 50) * Drive, eject tray, -eject: Writing. (line 50)
* Drive, for input and output, -dev: AqDrive. (line 12) * Drive, for input and output, -dev: AqDrive. (line 12)
* Drive, for input, -indev: AqDrive. (line 23) * Drive, for input, -indev: AqDrive. (line 23)
@ -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, -devices: Inquiry. (line 7)
* Drive, get drive list, -device_links: Inquiry. (line 17) * Drive, get drive list, -device_links: Inquiry. (line 17)
* Drive, list supported media, -list_profiles: Writing. (line 177) * 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, report SCSI commands, -scsi_log: Scripting. (line 143)
* Drive, write and eject, -commit_eject: Writing. (line 53) * Drive, write and eject, -commit_eject: Writing. (line 53)
* Drive, _definition: Drives. (line 6) * Drive, _definition: Drives. (line 6)
@ -5606,8 +5631,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Examples: Examples. (line 6) * Examples: Examples. (line 6)
* extattr, _definition: Extras. (line 66) * extattr, _definition: Extras. (line 66)
* File content, copy, -concat: Restore. (line 118) * File content, copy, -concat: Restore. (line 118)
* File names, curb length, -file_name_limit: Loading. (line 272) * File names, curb length, -file_name_limit: Loading. (line 243)
* File names, if neither Rock Ridge nor Joliet: Loading. (line 234) * 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 tree, -set_filter_r: Filter. (line 84)
* Filter, apply to file, -set_filter: Filter. (line 58) * Filter, apply to file, -set_filter: Filter. (line 58)
* Filter, ban registration, -close_filter_list: Filter. (line 50) * 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: Manip. (line 49)
* Group, in ISO image, -chgrp_r: Manip. (line 53) * Group, in ISO image, -chgrp_r: Manip. (line 53)
* Growing, _definition: Methods. (line 20) * 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+ allocation block size: Bootable. (line 409)
* HFS+ serial number: Bootable. (line 406) * HFS+ serial number: Bootable. (line 406)
* hidden, set in ISO image, -hide: Manip. (line 177) * hidden, set in ISO image, -hide: Manip. (line 177)
* HP-PA boot sector, production: Bootable. (line 381) * HP-PA boot sector, production: Bootable. (line 381)
* Image reading, cache size, -data_cache_size: Loading. (line 358) * Image reading, cache size, -data_cache_size: Loading. (line 329)
* Image, demand volume ID, -assert_volid: Loading. (line 113) * Image, demand volume ID, -assert_volid: Loading. (line 84)
* Image, discard pending changes, -rollback: Writing. (line 9) * 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, override change status, -changes_pending: Writing. (line 12)
* Image, set abstract file name, -abstract_file: SetWrite. (line 244) * Image, set abstract file name, -abstract_file: SetWrite. (line 244)
* Image, set application id, -application_id: SetWrite. (line 191) * 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, -jigdo: Jigdo. (line 33)
* Jigdo Template Extraction, _definition: Jigdo. (line 6) * Jigdo Template Extraction, _definition: Jigdo. (line 6)
* LBA, _definition: Drives. (line 17) * LBA, _definition: Drives. (line 17)
* libisofs, fixed "now" time: Loading. (line 246) * libisofs, fixed "now" time: Loading. (line 217)
* Linux device type, -scsi_dev_family: AqDrive. (line 43) * Linux device type, -scsi_dev_family: AqDrive. (line 95)
* List delimiter, _definition: Processing. (line 9) * List delimiter, _definition: Processing. (line 9)
* Local Character Set, _definition: Charset. (line 11) * Local Character Set, _definition: Charset. (line 11)
* MBR bootable/active flag, enforce: Bootable. (line 349) * MBR bootable/active flag, enforce: Bootable. (line 349)
* MBR, set, -boot_image system_area=: Bootable. (line 200) * MBR, set, -boot_image system_area=: Bootable. (line 200)
* MBR, _definition: Extras. (line 27) * 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, erase, -blank: Writing. (line 57)
* Media, format, -format: Writing. (line 87) * Media, format, -format: Writing. (line 87)
* Media, list formats, -list_formats: Writing. (line 129) * 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, set ISO working directory, -cd: Navigate. (line 7)
* Navigate, tell disk working directory, -pwdx: Navigate. (line 21) * Navigate, tell disk working directory, -pwdx: Navigate. (line 21)
* Navigate, tell ISO working directory, -pwd: Navigate. (line 19) * 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) * Output Character Set, _definition: Charset. (line 26)
* Overwriteable media, _definition: Media. (line 14) * Overwriteable media, _definition: Media. (line 14)
* Ownership, global in ISO image, -uid: SetWrite. (line 284) * 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) * SUN SPARC boot images, activation: Bootable. (line 450)
* Symbolic link, create, -lns: Insert. (line 181) * Symbolic link, create, -lns: Insert. (line 181)
* System area, _definition: Bootable. (line 200) * 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) * 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: Manip. (line 139)
* Timestamps, set in ISO image, -alter_date_r: Manip. (line 174) * 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, set speed, -speed: SetWrite. (line 301)
* Write, simulation, -dummy: SetWrite. (line 393) * Write, simulation, -dummy: SetWrite. (line 393)
* Write, TAO or SAO/DAO, -write_type: SetWrite. (line 417) * 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: Manip. (line 103)
* xattr, set in ISO image, -setfattr_list: Manip. (line 120) * xattr, set in ISO image, -setfattr_list: Manip. (line 120)
* xattr, set in ISO image, -setfattr_r: Manip. (line 118) * xattr, set in ISO image, -setfattr_r: Manip. (line 118)
@ -5850,49 +5875,49 @@ Node: Dialog23909
Node: Commands25598 Node: Commands25598
Node: ArgSort27275 Node: ArgSort27275
Node: AqDrive28769 Node: AqDrive28769
Node: Loading32883 Node: Loading35926
Node: Insert54507 Node: Insert55883
Node: SetInsert66010 Node: SetInsert67386
Node: Manip75442 Node: Manip76818
Node: CmdFind85542 Node: CmdFind86918
Node: Filter104471 Node: Filter105847
Node: Writing109093 Node: Writing110469
Node: SetWrite119249 Node: SetWrite120625
Node: Bootable144008 Node: Bootable145384
Node: Jigdo170965 Node: Jigdo172341
Node: Charset175224 Node: Charset176600
Node: Exception178553 Node: Exception179929
Node: DialogCtl184682 Node: DialogCtl186058
Node: Inquiry187284 Node: Inquiry188660
Node: Navigate196168 Node: Navigate197544
Node: Verify204625 Node: Verify206001
Node: Restore215096 Node: Restore216472
Node: Emulation223709 Node: Emulation225149
Node: Scripting234168 Node: Scripting235608
Node: Frontend241951 Node: Frontend243391
Node: Examples251577 Node: Examples253017
Node: ExDevices252755 Node: ExDevices254195
Node: ExCreate253416 Node: ExCreate254856
Node: ExDialog254716 Node: ExDialog256156
Node: ExGrowing255987 Node: ExGrowing257427
Node: ExModifying256796 Node: ExModifying258236
Node: ExBootable257306 Node: ExBootable258746
Node: ExCharset257861 Node: ExCharset259301
Node: ExPseudo258757 Node: ExPseudo260197
Node: ExCdrecord259684 Node: ExCdrecord261124
Node: ExMkisofs260004 Node: ExMkisofs261444
Node: ExGrowisofs261902 Node: ExGrowisofs263342
Node: ExException263056 Node: ExException264496
Node: ExTime263514 Node: ExTime264954
Node: ExIncBackup263972 Node: ExIncBackup265412
Node: ExRestore267998 Node: ExRestore269438
Node: ExRecovery268944 Node: ExRecovery270384
Node: Files269516 Node: Files270956
Node: Environ270850 Node: Environ272290
Node: Seealso271598 Node: Seealso273038
Node: Bugreport272315 Node: Bugreport273755
Node: Legal272906 Node: Legal274346
Node: CommandIdx273918 Node: CommandIdx275358
Node: ConceptIdx291388 Node: ConceptIdx292901
 
End Tag Table End Tag Table

View File

@ -50,7 +50,7 @@
@c man .\" First parameter, NAME, should be all caps @c man .\" First parameter, NAME, should be all caps
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection @c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
@c man .\" other parameters are allowed: see man(7), man(1) @c man .\" other parameters are allowed: see man(7), man(1)
@c man .TH XORRISO 1 "Version 1.5.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 .\" Please adjust this date whenever revising the manpage.
@c man .\" @c man .\"
@c man .\" Some roff macros, for reference: @c man .\" Some roff macros, for reference:
@ -69,7 +69,7 @@
xorriso - creates, loads, manipulates and writes ISO 9660 filesystem images xorriso - creates, loads, manipulates and writes ISO 9660 filesystem images
with Rock Ridge extensions. with Rock Ridge extensions.
Copyright @copyright{} 2007 - 2017 Thomas Schmitt Copyright @copyright{} 2007 - 2019 Thomas Schmitt
@quotation @quotation
Permission is granted to distrubute this text freely. 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 An empty address string "" gives up the current output drive
without acquiring a new one. No writing is possible without an output drive. without acquiring a new one. No writing is possible without an output drive.
@c man .TP @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" @item -scsi_dev_family "default"|"sr"|"scd"|"sg"
@kindex -scsi_dev_family choose Linux device file type @kindex -scsi_dev_family choose Linux device file type
@cindex Linux device type, -scsi_dev_family @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 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. sessions to an ISO image outside their track or partition.
@c man .TP @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" @item -read_fs "any"|"norock"|"nojoliet"|"ecma119"
@kindex -read_fs filesystem type for image loading @kindex -read_fs filesystem type for image loading
@cindex Image, filesystem to load, -read_fs @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. for superblock timestamps.
@* @*
If a timestring is given, then it is used for such timestamps. For the formats 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 @c man .TP
@item -disk_dev_ino "on"|"ino_only"|"off" @item -disk_dev_ino "on"|"ino_only"|"off"
@kindex -disk_dev_ino fast incremental backup @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 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 "osirrox". On GNU/Linux it tries to avoid using drives which are mounted or in
use by other libburn programs. 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, get acquired while "o_excl_off" will refuse to get blanked, formatted,
written, or ejected. But be aware that even harmless inquiries can spoil written, or ejected. But be aware that even harmless inquiries can spoil
ongoing burns of CD-R[W] and DVD-R[W]. ongoing burns of CD-R[W] and DVD-R[W].

View File

@ -288,6 +288,7 @@ struct XorrisO { /* the global context of xorriso */
int read_fs; /* bit0=norock , bit1=nojoliet */ int read_fs; /* bit0=norock , bit1=nojoliet */
int drives_exclusive; /* burn_preset_device_open() param exclusive */ 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 */ 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 */ void *in_volset_handle; /* interpreted only by libburnia oriented modules */
char *in_charset; /* The charset to interpret the filename bytes */ char *in_charset; /* The charset to interpret the filename bytes */
int indev_is_exclusive; int indev_is_exclusive;
int indev_access; /* see drives_access */
char indev_off_adr[SfileadrL]; /* Result of burn_drive_convert_fs_adr(indev) char indev_off_adr[SfileadrL]; /* Result of burn_drive_convert_fs_adr(indev)
when indev gets acquired. */ when indev gets acquired. */
@ -345,6 +347,7 @@ struct XorrisO { /* the global context of xorriso */
connected to externaly perveived stdout. connected to externaly perveived stdout.
*/ */
int outdev_is_exclusive; int outdev_is_exclusive;
int outdev_access; /* see drives_access */
char outdev_off_adr[SfileadrL]; /* Result of burn_drive_convert_fs_adr(outdev) char outdev_off_adr[SfileadrL]; /* Result of burn_drive_convert_fs_adr(outdev)
when outdev gets acquired. */ when outdev gets acquired. */

View File

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