New command -modesty_on_drive, new -as cdrecord -immed, minbuf=, modesty_on_drive=
This commit is contained in:
parent
6292e1226b
commit
9ac9a21629
@ -242,6 +242,12 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
||||
m->alignment= 0;
|
||||
m->do_stream_recording= 0;
|
||||
m->dvd_obs= 0;
|
||||
m->modesty_on_drive= 0;
|
||||
m->min_buffer_usec= -1;
|
||||
m->max_buffer_usec= -1;
|
||||
m->buffer_timeout_sec= -1;
|
||||
m->min_buffer_percent= 65;
|
||||
m->max_buffer_percent= 95;
|
||||
m->stdio_sync= 0;
|
||||
m->stdio_sync_is_default= 1;
|
||||
m->keep_boot_image= 0;
|
||||
|
@ -78,6 +78,9 @@ int Xorriso_cdrskin_help(struct XorrisO *xorriso, int flag)
|
||||
"\t-isosize\tUse iso9660 file system size for next data track",
|
||||
"\t-pad\t\tpadsize=30k",
|
||||
"\t-nopad\t\tDo not pad",
|
||||
"\tminbuf=\t\tKeep drive buffer hungry",
|
||||
"\tmodesty_on_drive=\tLike minbuf=, but with more parameters",
|
||||
"\t-immed\t\tEquivalent to minbuf=75",
|
||||
"\t--grow_overwriteable_iso\temulate multi-session on DVD+RW, BD-RE",
|
||||
"\twrite_start_address=#\t\twrite to byte address on DVD+RW, BD-RE",
|
||||
"\tstream_recording=on|number\ttry to get full speed on DVD-RAM, BD",
|
||||
@ -120,10 +123,10 @@ int Xorriso_cdrskin(struct XorrisO *xorriso, char *whom, int argc, char **argv,
|
||||
"timeout=", "debug=", "kdebug=", "kd=", "driver=", "ts=",
|
||||
"pregap=", "defpregap=", "mcn=", "isrc=", "index=", "textfile=",
|
||||
"pktsize=", "cuefile=",
|
||||
"gracetime=", "minbuf=",
|
||||
"gracetime=",
|
||||
|
||||
"assert_write_lba=", "fifo_start_at=", "dev_translation=",
|
||||
"drive_scsi_dev_family=", "fallback_program=", "modesty_on_drive=",
|
||||
"drive_scsi_dev_family=", "fallback_program=",
|
||||
"tao_to_sao_tsize=",
|
||||
|
||||
"direct_write_amount=", "msifile=",
|
||||
@ -332,6 +335,17 @@ no_volunteer:;
|
||||
strncmp(argpt, "stream_recording=", 17)==0) {
|
||||
cpt= strchr(argpt, '=')+1;
|
||||
Xorriso_option_stream_recording(xorriso, cpt, 0);
|
||||
|
||||
} else if(strcmp(argpt, "-immed") == 0) {
|
||||
Xorriso_option_modesty_on_drive(xorriso, "75", 0);
|
||||
|
||||
} else if(strncmp(argpt, "-minbuf=", 8) == 0 ||
|
||||
strncmp(argpt, "minbuf=", 7) == 0 ||
|
||||
strncmp(argpt, "-modesty_on_drive=", 18) == 0 ||
|
||||
strncmp(argpt, "modesty_on_drive=", 17) == 0) {
|
||||
cpt= strchr(argpt, '=') + 1;
|
||||
Xorriso_option_modesty_on_drive(xorriso, cpt, 0);
|
||||
|
||||
} else if(strncmp(argpt, "-stdio_sync=", 12)==0 ||
|
||||
strncmp(argpt, "stdio_sync=", 11)==0) {
|
||||
cpt= strchr(argpt, '=') + 1;
|
||||
|
@ -1644,7 +1644,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" -rom_toc_scan \"on\"|\"force\"|\"off\"[:\"emul_on\"|\"emul_off\"]",
|
||||
" [:\"emul_wide\"|\"emul_narrow\"]",
|
||||
" Enable scanning for ISO sessions on read-only drives/media",
|
||||
" resp. on overwriteable media with emulated TOC.",
|
||||
" and on overwriteable media with emulated TOC.",
|
||||
" -calm_drive \"in\"|\"out\"|\"all\"|\"on\"|\"off\"",
|
||||
" Reduce drive noise until it gets actually used again.",
|
||||
" -assert_volid pattern severity",
|
||||
@ -1660,21 +1660,21 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" -local_charset name",
|
||||
" Override system assumption of the local character set name.",
|
||||
" -hardlinks mode[:mode ...]",
|
||||
" Enable resp. disable recording and restoring of hard links.",
|
||||
" Enable or disable recording and restoring of hard links.",
|
||||
" Modes are \"on\", \"off\", \"perform_update\",",
|
||||
" \"without_update\", \"discard_extract\",",
|
||||
" \"cheap_sorted_extract\", \"normal_extract\"",
|
||||
" -acl \"on\"|\"off\"",
|
||||
" Enable resp. disable reading and writing of ACLs.",
|
||||
" Enable or disable reading and writing of ACLs.",
|
||||
" -xattr \"on\"|\"off\"",
|
||||
" Enable resp. disable reading and writing of xattr.",
|
||||
" Enable or disable reading and writing of xattr.",
|
||||
" -for_backup",
|
||||
" Shortcut for: -hardlinks on -acl on -xattr on -md5 on",
|
||||
" -disk_dev_ino \"on\"|\"ino_only\"|\"off\"",
|
||||
" Enable resp. disable recording of disk file dev_t and ino_t",
|
||||
" Enable or disable recording of disk file dev_t and ino_t",
|
||||
" and their use in file comparison.",
|
||||
" -md5 \"on\"|\"all\"|\"off\"",
|
||||
" Enable resp. disable processing of MD5 checksums.",
|
||||
" Enable or disable processing of MD5 checksums.",
|
||||
" -scdbackup_tag list_path record_name",
|
||||
" Enable production of scdbackup tag with -md5 on",
|
||||
" -ban_stdio_write",
|
||||
@ -1684,7 +1684,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" -data_cache_size number_of_tiles blocks_per_tile",
|
||||
" Adjust size and granularity of the data read cache.",
|
||||
" -blank [\"force:\"]\"fast\"|\"all\"|\"deformat\"|\"deformat_quickest\"",
|
||||
" Blank medium resp. invalidate ISO image on medium.",
|
||||
" Blank medium or invalidate ISO image on medium.",
|
||||
" Prefix \"force:\" overrides medium evaluation.",
|
||||
" -close_damaged \"as_needed\"|\"force\"",
|
||||
" Close track and session of damaged medium.",
|
||||
@ -1794,7 +1794,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" -list_speeds Show media specific list of write speed descriptors.",
|
||||
"",
|
||||
" -list_profiles \"in\"|\"out\"|\"all\"",
|
||||
" Show list of media types supported by indev resp. outdev.",
|
||||
" Show list of media types supported by indev and/or outdev.",
|
||||
" -print_size Print the foreseeable consumption by next -commit.",
|
||||
"",
|
||||
" -tell_media_space",
|
||||
@ -1827,7 +1827,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
"iso_rr_path is the Rock Ridge name of a file object in the ISO image.",
|
||||
"pathspec is either a disk_path or (if allowed) a pair: iso_rr_path=disk_path",
|
||||
"Commands marked by [***] have variable length parameter lists and perform",
|
||||
"pattern expansion if enabled by -iso_rr_pattern resp. -disk_pattern.",
|
||||
"pattern expansion if enabled by -iso_rr_pattern or -disk_pattern.",
|
||||
"",
|
||||
" -pathspecs \"on\"|\"off\" Allow or disallow pathspecs of form ",
|
||||
" iso_rr_path=disk_path . Only \"off\" allows eventual",
|
||||
@ -1836,7 +1836,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" Insert the given files or directory trees from",
|
||||
" filesystem into the ISO image. Much like mkisofs.",
|
||||
" -add_plainly \"none\"|\"unknown\"|\"dashed\"|\"any\"",
|
||||
" Whether to add lonely arguments as pathspec resp. disk_path.",
|
||||
" Whether to add lonely arguments as pathspec or disk_path.",
|
||||
" -path_list disk_path",
|
||||
" Like -add but read the pathspecs from file disk_path.",
|
||||
" -quoted_path_list disk_path",
|
||||
@ -2028,6 +2028,11 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" Set the burn speed. Default is \"max\" = maximum speed.",
|
||||
" -stream_recording \"on\"|\"off\"",
|
||||
" Try to circumvent slow checkread on DVD-RAM, BD-RE, BD-R.",
|
||||
" -modesty_on_drive [\"on\"|\"off\"|min_percent_number]",
|
||||
" [:\"min_percent=\"number][:\"max_percent=\"number]",
|
||||
" [:\"min_usec=\"number][:\"max_usec\"=number]",
|
||||
" [:\"timeout_sec=\"number]",
|
||||
" Keep drive buffer hungry to ease concurrent burn run.",
|
||||
" -dvd_obs \"default\"|\"32k\"|\"64k\"",
|
||||
" Set number of bytes per DVD/BD write operation.",
|
||||
" -stdio_sync \"on\"|\"off\"|\"end\"|number",
|
||||
@ -2036,8 +2041,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" -fs number[\"k\"|\"m\"]",
|
||||
" Set the size of the fifo buffer. (Default is 4m)",
|
||||
" -eject \"in\"|\"out\"|\"all\"",
|
||||
" Immediately eject the medium in -indev, resp. -outdev,",
|
||||
" resp. both.",
|
||||
" Immediately eject the medium in -indev, -outdev, or both.",
|
||||
"",
|
||||
"Navigation commands:",
|
||||
"",
|
||||
@ -2273,7 +2277,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" -print_mark text",
|
||||
" Print a text to mark channel.",
|
||||
" -prompt text",
|
||||
" Wait for Enter key resp. for a line of input at stdin.",
|
||||
" Wait for Enter key or for a line of input at stdin.",
|
||||
" -sleep number",
|
||||
" Do nothing during the given number of seconds.",
|
||||
" -errfile_log mode path|channel",
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
|
||||
|
||||
Copyright 2007-2013 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
Copyright 2007-2015 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2 or later.
|
||||
|
||||
@ -799,6 +799,94 @@ ex:;
|
||||
}
|
||||
|
||||
|
||||
int Xorriso_option_modesty_on_drive(struct XorrisO *xorriso, char *mode,
|
||||
int flag)
|
||||
{
|
||||
char *npt, *cpt, *ppt;
|
||||
int l, num, set_min;
|
||||
|
||||
npt= cpt= mode;
|
||||
for(; npt!=NULL; cpt= npt+1) {
|
||||
npt= strchr(cpt,':');
|
||||
if(npt==NULL)
|
||||
l= strlen(cpt);
|
||||
else
|
||||
l= npt-cpt;
|
||||
if(l == 0)
|
||||
continue;
|
||||
if(l == 3 && strncmp(cpt, "off", l) == 0) {
|
||||
xorriso->modesty_on_drive= 0;
|
||||
} else if(l == 1 && strncmp(cpt, "0", l) == 0) {
|
||||
xorriso->modesty_on_drive= 0;
|
||||
} else if(l == 2 && strncmp(cpt, "on", l) == 0) {
|
||||
xorriso->modesty_on_drive= 1;
|
||||
} else if(l == 1 && strncmp(cpt, "1", l) == 0) {
|
||||
xorriso->modesty_on_drive= 1;
|
||||
} else if(l == 2 && strncmp(cpt, "-1", l) == 0) {
|
||||
;
|
||||
} else if(*cpt >= '1' && *cpt <= '9') {
|
||||
ppt= cpt;
|
||||
set_min= 2;
|
||||
set_size_percent:;
|
||||
sscanf(ppt, "%d", &num);
|
||||
if(num == -1) {
|
||||
;
|
||||
} else if(num < 25) {
|
||||
bad_percent:;
|
||||
sprintf(xorriso->info_text, "-modesty_on_drive: percentage out of range [25 to 100]");
|
||||
Text_shellsafe(cpt, xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(0);
|
||||
} else if(num > 100) {
|
||||
goto bad_percent;
|
||||
}
|
||||
if(set_min == 2) {
|
||||
xorriso->modesty_on_drive= 1;
|
||||
}
|
||||
if(set_min)
|
||||
xorriso->min_buffer_percent= num;
|
||||
else
|
||||
xorriso->max_buffer_percent= num;
|
||||
} else if(l >= 12 && strncmp(cpt, "min_percent=", 12) == 0) {
|
||||
ppt= cpt + 12;
|
||||
set_min= 1;
|
||||
goto set_size_percent;
|
||||
} else if(l >= 12 && strncmp(cpt, "max_percent=", 12) == 0) {
|
||||
ppt= cpt + 12;
|
||||
set_min= 0;
|
||||
goto set_size_percent;
|
||||
} else if(l >= 8 && strncmp(cpt, "min_usec=", 8) == 0) {
|
||||
ppt= cpt + 8;
|
||||
set_min= 1;
|
||||
set_sec:;
|
||||
sscanf(ppt, "%d", &num);
|
||||
if(num < 0)
|
||||
num= 0;
|
||||
if(set_min == 1)
|
||||
xorriso->min_buffer_usec= num;
|
||||
else if(set_min == 0)
|
||||
xorriso->max_buffer_percent= num;
|
||||
else
|
||||
xorriso->buffer_timeout_sec= num;
|
||||
} else if(l >= 8 && strncmp(cpt, "max_usec=", 8) == 0) {
|
||||
ppt= cpt + 8;
|
||||
set_min= 0;
|
||||
goto set_sec;
|
||||
} else if(l >= 11 && strncmp(cpt, "timeout_sec=", 11) == 0) {
|
||||
ppt= cpt + 11;
|
||||
set_min= -1;
|
||||
goto set_sec;
|
||||
} else {
|
||||
sprintf(xorriso->info_text, "-modesty_on_drive: unknown mode ");
|
||||
Text_shellsafe(cpt, xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* Options -mount , -mount_cmd , -session_string */
|
||||
/* @param bit0= -mount_cmd: print mount command to result channel rather
|
||||
than performing it
|
||||
@ -1151,7 +1239,7 @@ int Xorriso_option_no_rc(struct XorrisO *xorriso, int flag)
|
||||
}
|
||||
|
||||
|
||||
/* Option -not_leaf , (-hide_disk_leaf resp. -as mkisofs -hide) */
|
||||
/* Option -not_leaf , (-hide_disk_leaf , -as mkisofs -hide) */
|
||||
/* @param flag bit0-bit5= hide rather than adding to disk_exclusions
|
||||
bit0= add to iso_rr_hidings
|
||||
bit1= add to joliet_hidings
|
||||
@ -1323,7 +1411,7 @@ ex:;
|
||||
}
|
||||
|
||||
|
||||
/* Option -not_paths , (-hide_disk_paths resp. -as mkisofs -hide) */
|
||||
/* Option -not_paths , (-hide_disk_paths , -as mkisofs -hide) */
|
||||
/* @param flag bit0= add to iso_rr_hidings rather than disk_exclusions
|
||||
bit1= add to joliet_hidings rather than disk_exclusions
|
||||
bit2= enable disk pattern expansion regardless of -disk_pattern
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
|
||||
|
||||
Copyright 2007-2013 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
Copyright 2007-2015 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2 or later.
|
||||
|
||||
@ -526,7 +526,8 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||
"iso_rr_pattern","follow","format","fs","gid","grow_blindly","hardlinks",
|
||||
"hfsplus","history","indev","in_charset","joliet",
|
||||
"list_delimiter","list_extras","list_profiles","local_charset",
|
||||
"mark","md5","mount_opts","not_leaf","not_list","not_mgt",
|
||||
"mark","md5","mount_opts","modesty_on_drive",
|
||||
"not_leaf","not_list","not_mgt",
|
||||
"options_from_file","osirrox","outdev","out_charset","overwrite",
|
||||
"pacifier","padding","path_list","pathspecs","pkt_output",
|
||||
"preparer_id","print","print_info","print_mark","prompt",
|
||||
@ -728,6 +729,7 @@ int Xorriso_cmd_sorting_rank(struct XorrisO *xorriso,
|
||||
"abstract_file", "biblio_file", "preparer_id", "application_use",
|
||||
"out_charset", "read_mkisofsrc",
|
||||
"uid", "gid", "zisofs", "speed", "stream_recording", "dvd_obs",
|
||||
"modesty_on_drive",
|
||||
"stdio_sync", "dummy", "fs", "close", "padding", "write_type",
|
||||
"grow_blindly", "pacifier", "scdbackup_tag",
|
||||
|
||||
@ -1456,6 +1458,13 @@ next_command:;
|
||||
(*idx)++;
|
||||
ret= Xorriso_option_md5(xorriso, arg1, 0);
|
||||
|
||||
} else if(strcmp(cmd,"mkdir")==0 || strcmp(cmd,"mkdiri")==0) {
|
||||
ret= Xorriso_option_mkdiri(xorriso, argc, argv, idx, 0);
|
||||
|
||||
} else if(strcmp(cmd, "modesty_on_drive")==0) {
|
||||
(*idx)++;
|
||||
ret= Xorriso_option_modesty_on_drive(xorriso, arg1, 0);
|
||||
|
||||
} else if(strcmp(cmd, "mount") == 0 || strcmp(cmd, "mount_cmd") == 0) {
|
||||
(*idx)+= 4;
|
||||
if((*idx)>argc) {
|
||||
@ -1484,9 +1493,6 @@ next_command:;
|
||||
} else if(strcmp(cmd,"mv")==0 || strcmp(cmd,"mvi")==0) {
|
||||
ret= Xorriso_option_mvi(xorriso, argc, argv, idx, 0);
|
||||
|
||||
} else if(strcmp(cmd,"mkdir")==0 || strcmp(cmd,"mkdiri")==0) {
|
||||
ret= Xorriso_option_mkdiri(xorriso, argc, argv, idx, 0);
|
||||
|
||||
} else if(strcmp(cmd,"named_pipe_loop")==0) {
|
||||
if((*idx) + 3 < argc)
|
||||
arg4= argv[(*idx) + 3];
|
||||
|
@ -3349,6 +3349,30 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
||||
if(!(is_default && no_defaults))
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
|
||||
is_default= (xorriso->modesty_on_drive == 0 &&
|
||||
xorriso->min_buffer_usec == -1 &&
|
||||
xorriso->max_buffer_usec == -1 &&
|
||||
xorriso->buffer_timeout_sec == -1 &&
|
||||
xorriso->min_buffer_percent == 65 &&
|
||||
xorriso->max_buffer_percent == 95);
|
||||
if(xorriso->modesty_on_drive == 0)
|
||||
strcpy(mode, "off");
|
||||
else if(xorriso->modesty_on_drive == 1)
|
||||
strcpy(mode, "on");
|
||||
else
|
||||
sprintf(mode, "%d", xorriso->modesty_on_drive);
|
||||
sprintf(mode + strlen(mode), ":min_percent=%d", xorriso->min_buffer_percent);
|
||||
sprintf(mode + strlen(mode), ":max_percent=%d", xorriso->max_buffer_percent);
|
||||
if(xorriso->buffer_timeout_sec >= 0)
|
||||
sprintf(mode + strlen(mode), ":timeout_sec=%d", xorriso->buffer_timeout_sec);
|
||||
if(xorriso->min_buffer_usec >= 0)
|
||||
sprintf(mode + strlen(mode), ":min_usec=%d", xorriso->min_buffer_usec);
|
||||
if(xorriso->max_buffer_usec >= 0)
|
||||
sprintf(mode + strlen(mode), ":max_usec=%d", xorriso->max_buffer_usec);
|
||||
sprintf(line,"-modesty_on_drive %s\n", mode);
|
||||
if(!(is_default && no_defaults))
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
|
||||
is_default= (xorriso->dvd_obs == 0);
|
||||
strcpy(mode, "default");
|
||||
if(xorriso->dvd_obs == 32768 || xorriso->dvd_obs == 65536)
|
||||
|
@ -165,6 +165,12 @@ int Xorriso_make_write_options(
|
||||
|
||||
if(xorriso->write_speed != -2)
|
||||
burn_drive_set_speed(drive, 0, xorriso->write_speed);
|
||||
burn_drive_set_buffer_waiting(drive, xorriso->modesty_on_drive,
|
||||
xorriso->min_buffer_usec,
|
||||
xorriso->max_buffer_usec,
|
||||
xorriso->buffer_timeout_sec,
|
||||
xorriso->min_buffer_percent,
|
||||
xorriso->max_buffer_percent);
|
||||
if(xorriso->do_stream_recording == 1)
|
||||
stream_mode= 1;
|
||||
else if(xorriso->do_stream_recording == 2)
|
||||
|
@ -9,7 +9,7 @@
|
||||
.\" First parameter, NAME, should be all caps
|
||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||
.\" other parameters are allowed: see man(7), man(1)
|
||||
.TH XORRECORD 1 "Version 1.4.1, May 17, 2015"
|
||||
.TH XORRECORD 1 "Version 1.4.1, Jul 30, 2015"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
@ -100,8 +100,8 @@ device file.
|
||||
On Solaris, the user needs r\-permission and privilege "sys_devices",
|
||||
which is usually gained by running \fBxorrecord\fR via command pfexec.
|
||||
.br
|
||||
These permissions resp. privileges are needed already for listing a drive.
|
||||
So it might be necessary to get the overview as superuser resp. via pfexec.
|
||||
These permissions or privileges are needed already for listing a drive.
|
||||
So it might be necessary to get the overview as superuser or via pfexec.
|
||||
.br
|
||||
\fBxorrecord\fR does not perform cdrecord option \-scanbus and does
|
||||
not accept the addresses of form Bus,Target,Lun which are told by \-scanbus.
|
||||
@ -128,7 +128,7 @@ to generic xorriso command mode. See \fBman xorriso\fR for its description.
|
||||
Other than in xorriso command mode, the sequence of the cdrecord emulation
|
||||
options does not matter.
|
||||
All pending actions get performed in a fixed sequence before the program
|
||||
run ends resp. before cdrecord emulation ends.
|
||||
run ends or before cdrecord emulation ends.
|
||||
.SS
|
||||
.br
|
||||
.SH OPTIONS
|
||||
@ -471,6 +471,16 @@ MMC drives usually activate their own idea of speed and take
|
||||
the speed value given by the burn program only as a hint
|
||||
for their own decision.
|
||||
.TP
|
||||
\fBminbuf=percentage\fR
|
||||
Equivalent to:
|
||||
.br
|
||||
modesty_on_drive=<percentage>
|
||||
.TP
|
||||
\fB\-immed\fR
|
||||
Equivalent to:
|
||||
.br
|
||||
modesty_on_drive=75
|
||||
.TP
|
||||
\fB\-eject\fR
|
||||
Eject the drive tray after alll other work is done.
|
||||
.TP
|
||||
@ -490,7 +500,7 @@ Afterwards end emulation without performing any drive operation.
|
||||
\fB\-v\fR
|
||||
Increase program verbosity by one level. There are four verbosity levels
|
||||
from nearly silent to debugging verbosity. The both highest levels can
|
||||
be enabled by repeated \-v or by \-vv resp. \-vvv.
|
||||
be enabled by repeated \-v or by \-vv or by \-vvv.
|
||||
.TP
|
||||
\fB\-V\fR
|
||||
Log SCSI commands and drive replies to standard error.
|
||||
@ -569,6 +579,44 @@ size. A number of 64 KB may improve throughput with bus systems which
|
||||
show latency problems. The default depends on media type, option
|
||||
stream_recording=, and on compile time options.
|
||||
.TP
|
||||
\fBmodesty_on_drive=parameter[:parameters]\fR
|
||||
Control whether the drive buffer shall be kept from getting completely filled.
|
||||
Parameter "on" (or "1") keeps the program from trying to write to the burner
|
||||
drive while its buffer is in danger to be filled over a given limit.
|
||||
If this filling is exceeded then the program will wait until the filling
|
||||
reaches a given low percentage value.
|
||||
.br
|
||||
This can ease the load on operating system and drive controller and thus help
|
||||
with achieving better input bandwidth if disk and burner are not on independent
|
||||
controllers (like hda and hdb). It may also help with simultaneous burns on
|
||||
different burners with Linux kernels like 3.16. On the other hand it increases
|
||||
the risk of buffer underflow and thus reduced write speed.
|
||||
.br
|
||||
Some burners are not suitable because they
|
||||
report buffer fill with granularity too coarse in size or time,
|
||||
or expect their buffer to be filled to the top before they go to full speed.
|
||||
.br
|
||||
Parameters "off" or "0" disable this feature.
|
||||
.br
|
||||
The threshhold for beginning to wait is given by parameter "max_percent=".
|
||||
Parameter "min_percent=" defines the threshhold for resuming transmission.
|
||||
Percentages are permissible in the range of 25 to 100. Numbers in this
|
||||
range without a prepended name are interpreted as "on:min_percent=".
|
||||
.br
|
||||
E.g.: modesty_on_drive=75
|
||||
.br
|
||||
The optimal values depend on the buffer behavior of the drive.
|
||||
.br
|
||||
There are also timing parameters "timeout_sec=", "min_usec=", "max_usec=".
|
||||
Read the description of burn_drive_set_buffer_waiting() in libburn.h,
|
||||
before setting them to non\-default values.
|
||||
.br
|
||||
Parameters, which are not mentioned with a modesty_on_drive= option,
|
||||
stay unchanged.
|
||||
Default is:
|
||||
.br
|
||||
modesty_on_drive=off:min_percent=65:max_percent=95
|
||||
.TP
|
||||
\fBwrite_start_address=value\fR
|
||||
Set the block address on overwritable media where to start writing the track.
|
||||
With DVD+RW, DVD\-RAM or BD\-RE, byte_offset must be aligned to 2 kiB blocks,
|
||||
@ -759,7 +807,7 @@ please send electronic mail to the public list <bug\-xorriso@gnu.org>.
|
||||
If more privacy is desired, mail to <scdbackup@gmx.net>.
|
||||
.br
|
||||
Please describe what you expect \fBxorriso\fR to do,
|
||||
the program arguments resp. commands by which you tried to achieve it,
|
||||
the program arguments or dialog commands by which you tried to achieve it,
|
||||
the messages of \fBxorriso\fR, and the undesirable outcome of your
|
||||
program run.
|
||||
.br
|
||||
|
@ -1,16 +1,15 @@
|
||||
This is xorrecord.info, produced by makeinfo version 4.8 from
|
||||
./xorrecord.texi.
|
||||
This is xorrecord.info, produced by makeinfo version 5.2 from
|
||||
xorrecord.texi.
|
||||
|
||||
INFO-DIR-SECTION Archiving
|
||||
START-INFO-DIR-ENTRY
|
||||
* Xorrecord: (xorrecord). Emulates CD/DVD/BD program cdrecord
|
||||
END-INFO-DIR-ENTRY
|
||||
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 - 2015 Thomas Schmitt
|
||||
|
||||
Permission is granted to distrubute this text freely.
|
||||
INFO-DIR-SECTION Archiving
|
||||
START-INFO-DIR-ENTRY
|
||||
* Xorrecord: (xorrecord). Emulates CD/DVD/BD program cdrecord
|
||||
END-INFO-DIR-ENTRY
|
||||
|
||||
|
||||
File: xorrecord.info, Node: Top, Next: Overview, Up: (dir)
|
||||
@ -19,7 +18,6 @@ xorrecord 1.4.1
|
||||
***************
|
||||
|
||||
xorrecord - Emulation of CD/DVD/BD program cdrecord by program xorriso
|
||||
|
||||
* Menu:
|
||||
|
||||
* Overview:: Overview
|
||||
@ -41,14 +39,14 @@ File: xorrecord.info, Node: Overview, Next: Standards, Prev: Top, Up: Top
|
||||
1 Overview
|
||||
**********
|
||||
|
||||
`xorrecord' writes preformatted data to CD, DVD, and BD media.
|
||||
'xorrecord' writes preformatted data to CD, DVD, and BD media.
|
||||
|
||||
It understands some options of program cdrecord from cdrtools by Joerg
|
||||
Schilling. Its implementation is part of program xorriso which shares
|
||||
no source code with cdrtools, but rather makes use of libburn for
|
||||
It understands some options of program cdrecord from cdrtools by
|
||||
Joerg Schilling. Its implementation is part of program xorriso which
|
||||
shares no source code with cdrtools, but rather makes use of libburn for
|
||||
communicating with the drive.
|
||||
|
||||
Another, more complete cdrecord emulator is program *cdrskin* which
|
||||
Another, more complete cdrecord emulator is program *cdrskin* which
|
||||
uses the same burn functions as *xorrecord*, but is able to burn audio
|
||||
CDs and to handle CD-TEXT.
|
||||
|
||||
@ -58,15 +56,15 @@ File: xorrecord.info, Node: Standards, Next: Drive, Prev: Overview, Up: Top
|
||||
2 MMC, Session, Track, Media types
|
||||
**********************************
|
||||
|
||||
*MMC* is a standard out of the SCSI family which defines the
|
||||
interaction between computers and optical drives. Since more than a
|
||||
decade all CD, DVD, or BD recorders obey this standard regardless by
|
||||
what bus cabling they are attached to the computer. libburn relies on
|
||||
this standard compliance and on the capability of the operating system
|
||||
to perform SCSI transactions over the particular bus cabling.
|
||||
*MMC* is a standard out of the SCSI family which defines the interaction
|
||||
between computers and optical drives. Since more than a decade all CD,
|
||||
DVD, or BD recorders obey this standard regardless by what bus cabling
|
||||
they are attached to the computer. libburn relies on this standard
|
||||
compliance and on the capability of the operating system to perform SCSI
|
||||
transactions over the particular bus cabling.
|
||||
A *Session* is a data region on an optical disc which usually gets
|
||||
written in a single sweep. It contains at least one *Track* which is a
|
||||
contiguous string of readable blocks. `xorrecord' produces a single
|
||||
contiguous string of readable blocks. 'xorrecord' produces a single
|
||||
session with a single data track which consists of blocks with 2048
|
||||
bytes each. It chooses the write mode automatically according to media
|
||||
type, medium state, and option -multi.
|
||||
@ -75,16 +73,16 @@ write modes like TAO and SAO. CD and DVD- media can put more than one
|
||||
track into a session. Some of these features can be addressed by
|
||||
program *cdrskin*.
|
||||
|
||||
MMC describes several recordable *media types* which roughly form two
|
||||
MMC describes several recordable *media types* which roughly form two
|
||||
families.
|
||||
*Sequentially recordable media* are CD-R, CD-RW, DVD-R, DVD-R DL,
|
||||
DVD-RW, DVD+R, DVD+R DL, BD-R. Except DVD-R DL they can store more
|
||||
than one session if there is still unwritten space and if the previous
|
||||
DVD-RW, DVD+R, DVD+R DL, BD-R. Except DVD-R DL they can store more than
|
||||
one session if there is still unwritten space and if the previous
|
||||
session was written with option *-multi*. CD-RW and DVD-RW can be
|
||||
blanked in order to be re-usable from scratch.
|
||||
*Overwritable media* are DVD-RAM, DVD+RW, formatted DVD-RW, BD-RE.
|
||||
They offer a single session with a single track for random access
|
||||
writing. There is no need to blank overwritable media before re-use.
|
||||
*Overwritable media* are DVD-RAM, DVD+RW, formatted DVD-RW, BD-RE. They
|
||||
offer a single session with a single track for random access writing.
|
||||
There is no need to blank overwritable media before re-use.
|
||||
DVD-RW media are sold in sequentially recordable state but can be
|
||||
formatted once to become overwritable. See options
|
||||
*blank=format_overwrite* and *blank=deformat*.
|
||||
@ -101,20 +99,21 @@ File: xorrecord.info, Node: Drive, Next: Xorriso, Prev: Standards, Up: Top
|
||||
|
||||
The drives, CD, DVD, or BD burners, are accessed via file addresses
|
||||
which are specific to libburn and the operating system. Those addresses
|
||||
get listed by a run of `xorrecord --devices' or `xorriso -device_links'.
|
||||
get listed by a run of 'xorrecord --devices' or 'xorriso -device_links'.
|
||||
|
||||
On GNU/Linux, FreeBSD, and NetBSD, the user needs rw-permission for the
|
||||
device file. On Solaris, the user needs r-permission and privilege
|
||||
"sys_devices", which is usually gained by running `xorrecord' via
|
||||
"sys_devices", which is usually gained by running 'xorrecord' via
|
||||
command pfexec.
|
||||
These permissions resp. privileges are needed already for listing a
|
||||
drive. So it might be necessary to get the overview as superuser resp.
|
||||
via pfexec.
|
||||
`xorrecord' does not perform cdrecord option -scanbus and does not
|
||||
These permissions or privileges are needed already for listing a drive.
|
||||
So it might be necessary to get the overview as superuser or via pfexec.
|
||||
|
||||
'xorrecord' does not perform cdrecord option -scanbus and does not
|
||||
accept the addresses of form Bus,Target,Lun which are told by -scanbus.
|
||||
If support for these addresses is necessary, consider to use program
|
||||
cdrskin.
|
||||
|
||||
It is possible to let `xorrecord' work on emulated drives. Their
|
||||
It is possible to let 'xorrecord' work on emulated drives. Their
|
||||
addresses begin by prefix "stdio:" followed by a file address. The
|
||||
emulated media behavior depends on the file type. See man xorriso for
|
||||
details.
|
||||
@ -128,7 +127,7 @@ File: xorrecord.info, Node: Xorriso, Next: Options, Prev: Drive, Up: Top
|
||||
4 Relation to program xorriso
|
||||
*****************************
|
||||
|
||||
`xorrecord' is actually a command mode of program *xorriso*, which gets
|
||||
'xorrecord' is actually a command mode of program *xorriso*, which gets
|
||||
entered either by xorriso command "-as cdrecord" or by starting the
|
||||
program by one of the names "xorrecord", "cdrecord", "wodim", or
|
||||
"cdrskin".
|
||||
@ -136,8 +135,7 @@ This command mode can be left by argument "--" which leads to generic
|
||||
xorriso command mode. See *man xorriso* for its description. Other
|
||||
than in xorriso command mode, the sequence of the cdrecord emulation
|
||||
options does not matter. All pending actions get performed in a fixed
|
||||
sequence before the program run ends resp. before cdrecord emulation
|
||||
ends.
|
||||
sequence before the program run ends or before cdrecord emulation ends.
|
||||
|
||||
|
||||
File: xorrecord.info, Node: Options, Next: Examples, Prev: Xorriso, Up: Top
|
||||
@ -173,7 +171,6 @@ File: xorrecord.info, Node: DriveAddr, Next: Inquire, Prev: Options, Up: Opt
|
||||
this case: a DVD burner).
|
||||
Afterwards end emulation without performing any further drive
|
||||
operation.
|
||||
|
||||
dev=drive_address
|
||||
Set the libburn address of the drive to be used.
|
||||
E.g. on GNU/Linux: dev=/dev/sr0
|
||||
@ -197,11 +194,9 @@ File: xorrecord.info, Node: Inquire, Next: SetBurn, Prev: DriveAddr, Up: Opt
|
||||
-inq
|
||||
Print to standard output: vendor, model name, and firmware revision
|
||||
of the drive.
|
||||
|
||||
-checkdrive
|
||||
Print unconditionally that the drive supports burnfree, SAO, and
|
||||
TAO. Also print the output of option -inq.
|
||||
|
||||
-atip
|
||||
Print the output of -checkdrive, the most capable profile of the
|
||||
medium in the drive, the list of profiles which are supported by
|
||||
@ -210,11 +205,10 @@ File: xorrecord.info, Node: Inquire, Next: SetBurn, Prev: DriveAddr, Up: Opt
|
||||
Profiles are usage models, which are often tied to a particular
|
||||
media type (e.g. CD-RW), but may also apply to a family of media.
|
||||
E.g. profile CD-ROM applies to all CD media which contain data.
|
||||
|
||||
-toc
|
||||
Print a table of content of the medium in the drive. The output is
|
||||
not compatible to cdrecord option -toc, but rather the one of
|
||||
`xorriso' command -toc. It lists the address, vendor, model name,
|
||||
'xorriso' command -toc. It lists the address, vendor, model name,
|
||||
and firmware revision of the drive.
|
||||
About the medium it tells product name and manufacturer, whether
|
||||
there is already content written, and if so, whether the medium is
|
||||
@ -227,13 +221,11 @@ File: xorrecord.info, Node: Inquire, Next: SetBurn, Prev: DriveAddr, Up: Opt
|
||||
If not option *-grow_overwriteable_iso* is given or no ISO 9660
|
||||
file system is present on the medium, then overwritable media are
|
||||
reported as being blank. This is due to the fact that they can be
|
||||
written from scratch without further preparation, and that MMC
|
||||
does not distinguish between data written by the most previous
|
||||
burn run and older data which have not been overwritten by that
|
||||
burn run. Consequently, these media are reported with 0 readable
|
||||
blocks, although all their writable blocks normally are readable,
|
||||
too.
|
||||
|
||||
written from scratch without further preparation, and that MMC does
|
||||
not distinguish between data written by the most previous burn run
|
||||
and older data which have not been overwritten by that burn run.
|
||||
Consequently, these media are reported with 0 readable blocks,
|
||||
although all their writable blocks normally are readable, too.
|
||||
-msinfo
|
||||
Print the argument text for option -C of programs mkisofs,
|
||||
genisoimage, or xorrisofs. It consists of two numbers separated by
|
||||
@ -243,7 +235,7 @@ File: xorrecord.info, Node: Inquire, Next: SetBurn, Prev: DriveAddr, Up: Opt
|
||||
when operating systems mount a medium with e.g. ISO 9660
|
||||
filesystem.
|
||||
The second number tells the next writable address, where
|
||||
`xorrecord' will begin to write the next session.
|
||||
'xorrecord' will begin to write the next session.
|
||||
This option is only valid for written, appendable media. In all
|
||||
other cases it will yield no output text but will abort the program
|
||||
with non-zero exit value.
|
||||
@ -272,15 +264,16 @@ File: xorrecord.info, Node: SetBurn, Next: Verbous, Prev: Inquire, Up: Optio
|
||||
number by a scaling factor:
|
||||
"k" or "K" = 1024 , "m" or "M" = 1024k , "g" or "G" = 1024m , "s"
|
||||
or "S" = 2048
|
||||
E.g. tsize=234567s means a size of 234567 * 2048 = 480393216 bytes.
|
||||
E.g. tsize=234567s means a size of 234567 * 2048 = 480393216
|
||||
bytes.
|
||||
|
||||
blank=mode
|
||||
Blank a CD-RW or DVD-RW to make it re-usable from scratch. Format
|
||||
a DVD-RW, DVD+RW, DVD-RAM, BD-R, or BD-RE if not yet formatted.
|
||||
This operation normally makes any recorded data on the medium
|
||||
unreadable. It is combinable with burning in the same run of
|
||||
`xorrecord', or it may be performed without a track source,
|
||||
leaving the medium empty.
|
||||
'xorrecord', or it may be performed without a track source, leaving
|
||||
the medium empty.
|
||||
The mode given with blank= selects the particular behavior:
|
||||
|
||||
as_needed
|
||||
@ -296,15 +289,18 @@ blank=mode
|
||||
all
|
||||
Blank an entire CD-RW or an unformatted DVD-RW.
|
||||
|
||||
|
||||
fast
|
||||
Minimally blank an entire CD-RW or blank an unformatted DVD-RW.
|
||||
|
||||
|
||||
deformat
|
||||
Like blank=all but with the additional ability to blank
|
||||
overwriteable DVD-RW. This will destroy their formatting and make
|
||||
them sequentially recordable.
|
||||
(Note: blank=deformat is not an original cdrecord options)
|
||||
|
||||
|
||||
deformat_quickest
|
||||
Like blank=deformat but blanking DVD-RW only minimally. This is
|
||||
faster than full blanking but yields media incapable of writing
|
||||
@ -312,6 +308,7 @@ blank=mode
|
||||
either.
|
||||
(Note: blank=deformat_quickest is not an original cdrecord option.)
|
||||
|
||||
|
||||
format_overwrite
|
||||
Format a DVD-RW to "Restricted Overwrite". The user should bring
|
||||
some patience.
|
||||
@ -327,15 +324,15 @@ blank=mode
|
||||
non-default size, use program *xorriso* with command *-format*.
|
||||
(Note: blank=format_overwrite is not an original cdrecord options)
|
||||
|
||||
|
||||
help
|
||||
Print a short overview of blank modes to standard error output.
|
||||
Afterwards end emulation without performing any drive operation.
|
||||
|
||||
-multi
|
||||
This option keeps CD, unformatted DVD-R[W], DVD+R, or BD-R
|
||||
appendable after the current session has been written. Without it
|
||||
the disc gets closed and may not be written any more - unless it
|
||||
is a -RW and gets blanked, which causes loss of its content.
|
||||
the disc gets closed and may not be written any more - unless it is
|
||||
a -RW and gets blanked, which causes loss of its content.
|
||||
This option cannot be applied to DVD-R DL or to DVD-RW which were
|
||||
blanked by mode "deformat_quickest". Option -multi_if_possible may
|
||||
automatically recognize and handle this situation.
|
||||
@ -343,20 +340,18 @@ blank=mode
|
||||
ISO-9660 filesystem of a follow-up session needs to be prepared in
|
||||
a special way by the filesystem formatter program. mkisofs,
|
||||
genisoimage, and xorrisofs expect particular info about the
|
||||
situation which can be retrieved by `xorrecord' option -msinfo.
|
||||
situation which can be retrieved by 'xorrecord' option -msinfo.
|
||||
With overwriteable DVD or BD media, -multi cannot mark the end of
|
||||
the session. So when adding a new session, this end has to be
|
||||
determined from the payload. Currently only ISO-9660 filesystems
|
||||
can be used that way. See option *-grow_overwriteable_iso*.
|
||||
|
||||
-dummy
|
||||
Try to perform the drive operations without actually affecting the
|
||||
inserted media. There is no warranty that this will work with a
|
||||
particular combination of drive and media. Blanking is prevented
|
||||
reliably, though. To avoid inadverted real burning, -dummy
|
||||
refuses burn runs on anything but CD-R[W], DVD-R[W], or emulated
|
||||
reliably, though. To avoid inadverted real burning, -dummy refuses
|
||||
burn runs on anything but CD-R[W], DVD-R[W], or emulated
|
||||
stdio-drives.
|
||||
|
||||
-waiti
|
||||
Wait until input data is available at stdin or EOF occurs at stdin.
|
||||
Only then begin to access any drives.
|
||||
@ -367,22 +362,20 @@ blank=mode
|
||||
xorrecord dev=/dev/sr0 ... -waiti -
|
||||
This option works even if standard input is not the track source.
|
||||
If no process is piping in, then the Enter key of your terminal
|
||||
will act as trigger for `xorrecord'. Note that this input line
|
||||
will act as trigger for 'xorrecord'. Note that this input line
|
||||
will not be consumed by cdrskin if standard input is not the track
|
||||
source. It will end up as shell command, usually.
|
||||
|
||||
tsize=size
|
||||
Announce the exact size of the track source. This is necessary with
|
||||
DVD-R DL media and with quickest blanked DVD-RW, if the size
|
||||
Announce the exact size of the track source. This is necessary
|
||||
with DVD-R DL media and with quickest blanked DVD-RW, if the size
|
||||
cannot be determined in advance from the track source. E.g. if it
|
||||
is standard input or a named pipe.
|
||||
If the track source does not deliver the predicted amount of
|
||||
bytes, the remainder of the track is padded with zeros. This is
|
||||
not considered an error. If on the other hand the track source
|
||||
delivers more than the announced bytes then the track on media
|
||||
gets truncated to the predicted size and xorrecord exits with
|
||||
non-zero value.
|
||||
|
||||
If the track source does not deliver the predicted amount of bytes,
|
||||
the remainder of the track is padded with zeros. This is not
|
||||
considered an error. If on the other hand the track source
|
||||
delivers more than the announced bytes then the track on media gets
|
||||
truncated to the predicted size and xorrecord exits with non-zero
|
||||
value.
|
||||
-isosize
|
||||
Try to obtain the track size from the content of the track source.
|
||||
This works only if the track source bears an ISO 9660 filesystem.
|
||||
@ -390,66 +383,57 @@ tsize=size
|
||||
If the track source is not a regular file or block device, then
|
||||
this option will work only if the program's fifo size is at least
|
||||
64k. See option fs=.
|
||||
|
||||
padsize=size
|
||||
Add the given amount of trailing zeros to the upcomming track.
|
||||
This feature can be disabled by size 0. Default is 300 kB in order
|
||||
to work around a problem with GNU/Linux which often fails to read
|
||||
the last few blocks of a CD track which was written in write mode
|
||||
TAO. TAO is used by `xorrecord' if the track size cannot be
|
||||
TAO. TAO is used by 'xorrecord' if the track size cannot be
|
||||
predicted or if the CD medium is not blank but appendable.
|
||||
|
||||
-nopad
|
||||
The same as padsize=0.
|
||||
|
||||
-pad
|
||||
The same as padsize=15s. This was once sufficient with older
|
||||
GNU/Linux kernels. Meanwhile one should at least use padsize=128k,
|
||||
if not padsize=300k.
|
||||
|
||||
-data
|
||||
Explicitely announce that the track source shall be recorded as
|
||||
data track, and not as audio track. This option has no effect with
|
||||
`xorrecord', because there is no support for other track formats
|
||||
'xorrecord', because there is no support for other track formats
|
||||
anyway.
|
||||
|
||||
-tao
|
||||
Explicitely demand that write type TAO shall be used for CD, or
|
||||
Incremental for DVD-R. Normally the program will choose the write
|
||||
type according to the given medium state, option -multi, and track
|
||||
source. Demanding it explicitely prevents the start of a write
|
||||
run, if it is not appropriate to the situation.
|
||||
|
||||
-sao
|
||||
Explicitely demand that write type SAO shall be used for CD, or
|
||||
DAO for DVD-R. This might prevent the write run, if it is not
|
||||
Explicitely demand that write type SAO shall be used for CD, or DAO
|
||||
for DVD-R. This might prevent the write run, if it is not
|
||||
appropriate to the situation.
|
||||
|
||||
-dao
|
||||
Alias of -sao.
|
||||
|
||||
fs=size
|
||||
Set the size of the program fifo buffer to the given value rather
|
||||
than the default of 4m.
|
||||
The fifo buffers a temporary surplus of track source data in order
|
||||
to provide the drive with a steady stream during times of
|
||||
temporary lack of track source supply.
|
||||
to provide the drive with a steady stream during times of temporary
|
||||
lack of track source supply.
|
||||
Other than cdrecord, xorrecord enables drive buffer underrun
|
||||
protection by default and does not wait with writing until the
|
||||
fifo is full for a first time. On very old CD drives and slow
|
||||
protection by default and does not wait with writing until the fifo
|
||||
is full for a first time. On very old CD drives and slow
|
||||
computers, this might cause aborted burn runs. In this case,
|
||||
consider to use program *cdrskin* for CD burning. DVD and BD
|
||||
drives tolerate buffer underrun without problems.
|
||||
The larger the fifo, the longer periods of poor source supply can
|
||||
be compensated. But a large fifo can deprive the operating system
|
||||
of read cache for better filesystem performance.
|
||||
|
||||
speed=value
|
||||
Set the write speed. Default is 0 = maximum speed. Speed can be
|
||||
given in media type dependent x-speed numbers or as a desired
|
||||
throughput per second in MMC compliant kB (= 1000) or MB (= 1000
|
||||
kB). Media x-speed factor can be set explicity by appending "c"
|
||||
for CD, "d" for DVD, "b" for BD. "x" is optional.
|
||||
kB). Media x-speed factor can be set explicity by appending "c" for
|
||||
CD, "d" for DVD, "b" for BD. "x" is optional.
|
||||
Example speeds:
|
||||
706k = 706kB/s = 4c = 4xCD
|
||||
5540k = 5540kB/s = 4d = 4xDVD
|
||||
@ -460,7 +444,12 @@ speed=value
|
||||
MMC drives usually activate their own idea of speed and take the
|
||||
speed value given by the burn program only as a hint for their own
|
||||
decision.
|
||||
|
||||
minbuf=percentage
|
||||
Equivalent to:
|
||||
modesty_on_drive=<percentage>
|
||||
-immed
|
||||
Equivalent to:
|
||||
modesty_on_drive=75
|
||||
-eject
|
||||
Eject the drive tray after alll other work is done.
|
||||
|
||||
@ -479,12 +468,10 @@ File: xorrecord.info, Node: Verbous, Next: NonCdrecord, Prev: SetBurn, Up: O
|
||||
program is provided, and disclaim any warranty, to the extent
|
||||
permitted by law.
|
||||
Afterwards end emulation without performing any drive operation.
|
||||
|
||||
-v
|
||||
Increase program verbosity by one level. There are four verbosity
|
||||
levels from nearly silent to debugging verbosity. The both highest
|
||||
levels can be enabled by repeated -v or by -vv resp. -vvv.
|
||||
|
||||
levels can be enabled by repeated -v or by -vv or by -vvv.
|
||||
-V
|
||||
Log SCSI commands and drive replies to standard error. This might
|
||||
be of interest if *xorrecord* and a particular drive or medium do
|
||||
@ -494,8 +481,7 @@ File: xorrecord.info, Node: Verbous, Next: NonCdrecord, Prev: SetBurn, Up: O
|
||||
Please do not add such a log to a bug report on the first hand,
|
||||
unless you want to point out a particular deviation from said
|
||||
specs, or if you get asked for this log by a maintainer of
|
||||
`xorrecord' who feels in charge for your bug report.
|
||||
|
||||
'xorrecord' who feels in charge for your bug report.
|
||||
-help
|
||||
Print a sparse list of program options to standard error and
|
||||
declare not to be cdrecord.
|
||||
@ -512,7 +498,6 @@ File: xorrecord.info, Node: NonCdrecord, Next: ExDevices, Prev: Verbous, Up:
|
||||
Only if used as first command line argument this option prevents
|
||||
reading and interpretation of startup files. See section FILES
|
||||
below.
|
||||
|
||||
--grow_overwriteable_iso
|
||||
Enable emulation of multi-session writing on overwriteable media
|
||||
which contain an ISO 9660 filesystem. This emulation is learned
|
||||
@ -522,19 +507,17 @@ File: xorrecord.info, Node: NonCdrecord, Next: ExDevices, Prev: Verbous, Up:
|
||||
for sequential media.
|
||||
-grow_overwriteable_iso does not hamper the use of true
|
||||
multi-session media. I.e. it is possible to use the same
|
||||
`xorrecord' options with both kinds of media and to achieve
|
||||
similar results if ISO 9660 filesystem images are to be written.
|
||||
This option implies option -isosize and therefore demands that the
|
||||
track source is a ISO 9660 filesystem image.
|
||||
'xorrecord' options with both kinds of media and to achieve similar
|
||||
results if ISO 9660 filesystem images are to be written. This
|
||||
option implies option -isosize and therefore demands that the track
|
||||
source is a ISO 9660 filesystem image.
|
||||
With overwriteable media and no option blank=fast|all present it
|
||||
expands an eventual ISO 9660 filesystem on media. It is assumed
|
||||
that this image's inner size description points to the end of the
|
||||
valuable data. Overwriteable media with a recognizable ISO 9660
|
||||
size will be regarded as appendable rather than as blank. I.e.
|
||||
options -msinfo and -toc will work. -toc will always show a
|
||||
single session with its size increasing with every added ISO 9660
|
||||
image.
|
||||
|
||||
options -msinfo and -toc will work. -toc will always show a single
|
||||
session with its size increasing with every added ISO 9660 image.
|
||||
--multi_if_possible
|
||||
Apply option -multi if the medium is suitable. Not suitable are
|
||||
DVD-R DL and DVD-RW, which were blanked with mode
|
||||
@ -542,7 +525,6 @@ File: xorrecord.info, Node: NonCdrecord, Next: ExDevices, Prev: Verbous, Up:
|
||||
Not all drives correctly recognize such fast-blanked DVD-RW which
|
||||
need "on". If there is well founded suspicion that a burn run
|
||||
failed due to -multi, then this causes a re-try without -multi.
|
||||
|
||||
stream_recording="on"|"off"|number
|
||||
Mode "on" requests that compliance to the desired speed setting is
|
||||
preferred over management of write errors. With DVD-RAM and BD
|
||||
@ -553,22 +535,50 @@ stream_recording="on"|"off"|number
|
||||
If a number is given, then error management stays enabled for all
|
||||
byte addresses below that number. Any number below 16s is the same
|
||||
as "off".
|
||||
|
||||
dvd_obs="default"|"32k"|"64k"
|
||||
Linux specific: Set the number of bytes to be transmitted with
|
||||
each write operation to DVD or BD media. Tracks get padded up to
|
||||
the next multiple of this write size. A number of 64 KB may
|
||||
improve throughput with bus systems which show latency problems.
|
||||
The default depends on media type, option stream_recording=, and
|
||||
on compile time options.
|
||||
|
||||
Linux specific: Set the number of bytes to be transmitted with each
|
||||
write operation to DVD or BD media. Tracks get padded up to the
|
||||
next multiple of this write size. A number of 64 KB may improve
|
||||
throughput with bus systems which show latency problems. The
|
||||
default depends on media type, option stream_recording=, and on
|
||||
compile time options.
|
||||
modesty_on_drive=parameter[:parameters]
|
||||
Control whether the drive buffer shall be kept from getting
|
||||
completely filled. Parameter "on" (or "1") keeps the program from
|
||||
trying to write to the burner drive while its buffer is in danger
|
||||
to be filled over a given limit. If this filling is exceeded then
|
||||
the program will wait until the filling reaches a given low
|
||||
percentage value.
|
||||
This can ease the load on operating system and drive controller and
|
||||
thus help with achieving better input bandwidth if disk and burner
|
||||
are not on independent controllers (like hda and hdb). It may also
|
||||
help with simultaneous burns on different burners with Linux
|
||||
kernels like 3.16. On the other hand it increases the risk of
|
||||
buffer underflow and thus reduced write speed.
|
||||
Some burners are not suitable because they report buffer fill with
|
||||
granularity too coarse in size or time, or expect their buffer to
|
||||
be filled to the top before they go to full speed.
|
||||
Parameters "off" or "0" disable this feature.
|
||||
The threshhold for beginning to wait is given by parameter
|
||||
"max_percent=". Parameter "min_percent=" defines the threshhold
|
||||
for resuming transmission. Percentages are permissible in the
|
||||
range of 25 to 100. Numbers in this range without a prepended name
|
||||
are interpreted as "on:min_percent=".
|
||||
E.g.: modesty_on_drive=75
|
||||
The optimal values depend on the buffer behavior of the drive.
|
||||
There are also timing parameters "timeout_sec=", "min_usec=",
|
||||
"max_usec=". Read the description of
|
||||
burn_drive_set_buffer_waiting() in libburn.h, before setting them
|
||||
to non-default values.
|
||||
Parameters, which are not mentioned with a modesty_on_drive=
|
||||
option, stay unchanged. Default is:
|
||||
modesty_on_drive=off:min_percent=65:max_percent=95
|
||||
write_start_address=value
|
||||
Set the block address on overwritable media where to start writing
|
||||
the track. With DVD+RW, DVD-RAM or BD-RE, byte_offset must be
|
||||
aligned to 2 kiB blocks, but better is 32 kiB on DVD and 64 kiB on
|
||||
BD. With formatted DVD-RW 32 kiB alignment is mandatory.
|
||||
Other media are not suitable for this option.
|
||||
|
||||
stdio_sync="on"|"off"|number
|
||||
Set the number of bytes after which to force output to emulated
|
||||
stdio: drives. This forcing keeps the memory from being clogged
|
||||
@ -629,10 +639,10 @@ File: xorrecord.info, Node: ExFormat, Next: ExDeformat, Prev: ExBlank, Up: E
|
||||
|
||||
$ xorrecord -v dev=/dev/sr0 blank=format_overwrite -eject
|
||||
|
||||
This command may also be used to format BD-R media before first use, in
|
||||
order to enable handling of write errors. Several hundred MB of spare
|
||||
blocks will be reserved and write runs on such media will perform with
|
||||
less than half nominal speed.
|
||||
This command may also be used to format BD-R media before first use,
|
||||
in order to enable handling of write errors. Several hundred MB of
|
||||
spare blocks will be reserved and write runs on such media will perform
|
||||
with less than half nominal speed.
|
||||
|
||||
|
||||
File: xorrecord.info, Node: ExDeformat, Next: ExIsoSingle, Prev: ExFormat, Up: Examples
|
||||
@ -650,8 +660,8 @@ File: xorrecord.info, Node: ExIsoSingle, Next: ExIsoMulti, Prev: ExDeformat,
|
||||
============================================
|
||||
|
||||
|
||||
$ xorrecord -v dev=/dev/sr0 speed=12 fs=8m \
|
||||
blank=as_needed -eject padsize=300k my_image.iso
|
||||
$ xorrecord -v dev=/dev/sr0 speed=12 fs=8m \ blank=as_needed -eject
|
||||
padsize=300k my_image.iso
|
||||
|
||||
|
||||
File: xorrecord.info, Node: ExIsoMulti, Next: ExIsoFly, Prev: ExIsoSingle, Up: Examples
|
||||
@ -665,35 +675,35 @@ The first session is written like in the previous example, except that
|
||||
option -multi is used. It will contain the files of hard disk directory
|
||||
./tree1 under the ISO 9660 directory /dir1:
|
||||
|
||||
$ xorrisofs -o image_1.iso -J -graft-points /dir1=./tree1
|
||||
$ xorrisofs -o image_1.iso -J -graft-points /dir1=./tree1
|
||||
$ xorrecord -v dev=/dev/sr0 speed=12 fs=8m \
|
||||
-multi -grow_overwriteable_iso \
|
||||
blank=as_needed -eject padsize=300k image_1.iso
|
||||
|
||||
For the second session xorrisofs needs to know the -msinfo numbers of
|
||||
For the second session xorrisofs needs to know the -msinfo numbers of
|
||||
the medium. Further it will read data from the medium by using the
|
||||
system's read-only CD-ROM driver.
|
||||
It is advised to load the tray manually or via dd by the CD-ROM driver,
|
||||
rather than letting xorrecord do this by its own SCSI driver. Many
|
||||
system CD-ROM drivers do not take notice of xorrecord's activities.
|
||||
|
||||
$ dd if=/dev/sr0 count=1 >/dev/null 2>&1
|
||||
$ dd if=/dev/sr0 count=1 >/dev/null 2>&1
|
||||
Now get the -msinfo numbers:
|
||||
$ m=$(xorrecord dev=/dev/sr0 -msinfo)
|
||||
|
||||
and use them with xorrisofs to add ./tree2 to the image as /dir2:
|
||||
and use them with xorrisofs to add ./tree2 to the image as /dir2:
|
||||
|
||||
$ xorrisofs -M /dev/sr0 -C $m -o image_2.iso \
|
||||
$ xorrisofs -M /dev/sr0 -C $m -o image_2.iso \
|
||||
-J -graft-points /dir2=./tree2
|
||||
|
||||
Now burn the new session onto the same medium. This time without
|
||||
Now burn the new session onto the same medium. This time without
|
||||
blanking:
|
||||
|
||||
$ xorrecord -v dev=/dev/sr0 speed=12 fs=8m \
|
||||
$ xorrecord -v dev=/dev/sr0 speed=12 fs=8m \
|
||||
-multi -grow_overwriteable_iso \
|
||||
-eject padsize=300k image_2.iso
|
||||
|
||||
Operating systems which mount this medium will read the superblock of
|
||||
Operating systems which mount this medium will read the superblock of
|
||||
the second session and show both directories /dir1 and /dir2.
|
||||
|
||||
|
||||
@ -702,19 +712,19 @@ File: xorrecord.info, Node: ExIsoFly, Next: ExAfio, Prev: ExIsoMulti, Up: Ex
|
||||
6.8 Write ISO 9660 session on-the-fly
|
||||
=====================================
|
||||
|
||||
It is possible to combine the run of *xorrisofs* and `xorrecord' in a
|
||||
It is possible to combine the run of *xorrisofs* and 'xorrecord' in a
|
||||
pipeline without storing the ISO 9660 image as file on hard disk:
|
||||
|
||||
$ xorrisofs -M /dev/sr0 -C $m \
|
||||
$ xorrisofs -M /dev/sr0 -C $m \
|
||||
-J -graft-points /dir2=./tree2 \
|
||||
| xorrecord -v dev=/dev/sr0 speed=12 fs=8m \
|
||||
-waiti -multi -grow_overwriteable_iso \
|
||||
-eject padsize=300k -
|
||||
|
||||
This is also the main use case of program *xorriso* itself, where this
|
||||
run would look like:
|
||||
This is also the main use case of program *xorriso* itself, where
|
||||
this run would look like:
|
||||
|
||||
$ xorriso -dev /dev/sr0 -joliet on -speed 12 -fs 8m \
|
||||
$ xorriso -dev /dev/sr0 -joliet on -speed 12 -fs 8m \
|
||||
-map ./tree2 /dir2 -commit_eject all
|
||||
|
||||
|
||||
@ -724,24 +734,24 @@ File: xorrecord.info, Node: ExAfio, Prev: ExIsoFly, Up: Examples
|
||||
============================================
|
||||
|
||||
This is possible with all media except minimally blanked DVD-RW and
|
||||
DVD-R DL. Since the compressed output stream is of very variable
|
||||
speed, a larger fifo is advised. Nevertheless, this example is not
|
||||
suitable for very old CD drives which have no underrun protection and
|
||||
thus would abort the burn run on temporary data shortage.
|
||||
DVD-R DL. Since the compressed output stream is of very variable speed,
|
||||
a larger fifo is advised. Nevertheless, this example is not suitable
|
||||
for very old CD drives which have no underrun protection and thus would
|
||||
abort the burn run on temporary data shortage.
|
||||
|
||||
$ find . | afio -oZ - | \
|
||||
$ find . | afio -oZ - | \
|
||||
xorrecord -v dev=/dev/sr0 speed=12 fs=64m \
|
||||
-multi padsize=300k -
|
||||
|
||||
afio archives do not contain references to absolute data block
|
||||
afio archives do not contain references to absolute data block
|
||||
addresses. So they need no special precautions for multi-session. One
|
||||
may get the session start addresses by option -toc, and then use dd
|
||||
option skip= to begin reading at one of those addresses. E.g. for
|
||||
listing its content:
|
||||
|
||||
$ dd if=/dev/sr0 bs=2048 skip=64046 | afio -tvZ -
|
||||
$ dd if=/dev/sr0 bs=2048 skip=64046 | afio -tvZ -
|
||||
|
||||
afio will know when the end of the archive is reached.
|
||||
afio will know when the end of the archive is reached.
|
||||
|
||||
|
||||
File: xorrecord.info, Node: Files, Next: Seealso, Prev: Examples, Up: Top
|
||||
@ -752,16 +762,17 @@ File: xorrecord.info, Node: Files, Next: Seealso, Prev: Examples, Up: Top
|
||||
7.1 Startup Files
|
||||
=================
|
||||
|
||||
If not -no_rc is given as the first argument then `xorrecord' attempts
|
||||
|
||||
If not -no_rc is given as the first argument then 'xorrecord' attempts
|
||||
on startup to read and execute lines from the following files:
|
||||
|
||||
/etc/default/xorriso
|
||||
/etc/default/xorriso
|
||||
/etc/opt/xorriso/rc
|
||||
/etc/xorriso/xorriso.conf
|
||||
$HOME/.xorrisorc
|
||||
|
||||
The files are read in the sequence given here, but none of them is
|
||||
required to exist. The lines are not interpreted as `xorrecord' options
|
||||
The files are read in the sequence given here, but none of them is
|
||||
required to exist. The lines are not interpreted as 'xorrecord' options
|
||||
but as generic *xorriso* commands. See man xorriso.
|
||||
|
||||
|
||||
@ -772,10 +783,8 @@ File: xorrecord.info, Node: Seealso, Next: Bugreport, Prev: Files, Up: Top
|
||||
|
||||
For generic xorriso command mode
|
||||
xorriso(1)
|
||||
|
||||
Formatting track sources for xorrecord
|
||||
xorrisofs(1), mkisofs(8), genisoimage(8), afio(1), star(1)
|
||||
|
||||
Other programs which burn sessions to optical media
|
||||
growisofs(1), cdrecord(1), wodim(1), cdrskin(1)
|
||||
|
||||
@ -785,15 +794,15 @@ File: xorrecord.info, Node: Bugreport, Next: Legal, Prev: Seealso, Up: Top
|
||||
9 Reporting bugs
|
||||
****************
|
||||
|
||||
To report bugs, request help, or suggest enhancements for `xorriso',
|
||||
To report bugs, request help, or suggest enhancements for 'xorriso',
|
||||
please send electronic mail to the public list <bug-xorriso@gnu.org>.
|
||||
If more privacy is desired, mail to <scdbackup@gmx.net>.
|
||||
|
||||
Please describe what you expect `xorriso' to do, the program arguments
|
||||
resp. commands by which you tried to achieve it, the messages of
|
||||
`xorriso', and the undesirable outcome of your program run.
|
||||
Please describe what you expect 'xorriso' to do, the program
|
||||
arguments or dialog commands by which you tried to achieve it, the
|
||||
messages of 'xorriso', and the undesirable outcome of your program run.
|
||||
|
||||
Expect to get asked more questions before solutions can be proposed.
|
||||
Expect to get asked more questions before solutions can be proposed.
|
||||
|
||||
|
||||
File: xorrecord.info, Node: Legal, Next: CommandIdx, Prev: Bugreport, Up: Top
|
||||
@ -819,7 +828,7 @@ entitled to modify this text under that same license.
|
||||
10.3 Credits
|
||||
============
|
||||
|
||||
`xorriso' is in part based on work by Vreixo Formoso who provides
|
||||
'xorriso' is in part based on work by Vreixo Formoso who provides
|
||||
libisofs together with Mario Danic who also leads the libburnia team.
|
||||
Thanks to Andy Polyakov who invented emulated growing, to Derek Foreman
|
||||
and Ben Jansens who once founded libburn.
|
||||
@ -837,45 +846,47 @@ File: xorrecord.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
|
||||
|
||||
* --devices get list of drives: DriveAddr. (line 8)
|
||||
* --grow_overwriteable_iso emulate ISO 9660 multi-session: NonCdrecord.
|
||||
(line 13)
|
||||
(line 12)
|
||||
* --multi_if_possible apply -multi if medium is suitable: NonCdrecord.
|
||||
(line 35)
|
||||
* --no_rc do not execute xorriso startup files: NonCdrecord.
|
||||
(line 8)
|
||||
* -atip inquire medium state: Inquire. (line 16)
|
||||
* -checkdrive inquire drive CD capabilities: Inquire. (line 12)
|
||||
* -dao explicitely set write type SAO/DAO: SetBurn. (line 178)
|
||||
* -data explicitely announce a data track: SetBurn. (line 160)
|
||||
* -dummy control write simulation: SetBurn. (line 102)
|
||||
* -eject finally eject drive tray: SetBurn. (line 214)
|
||||
* -help print sparse overview of options: Verbous. (line 33)
|
||||
(line 32)
|
||||
* --no_rc do not execute xorriso startup files: NonCdrecord. (line 8)
|
||||
* -atip inquire medium state: Inquire. (line 14)
|
||||
* -checkdrive inquire drive CD capabilities: Inquire. (line 11)
|
||||
* -dao explicitely set write type SAO/DAO: SetBurn. (line 172)
|
||||
* -data explicitely announce a data track: SetBurn. (line 157)
|
||||
* -dummy control write simulation: SetBurn. (line 106)
|
||||
* -eject finally eject drive tray: SetBurn. (line 211)
|
||||
* -help print sparse overview of options: Verbous. (line 30)
|
||||
* -immed keep drive buffer hungry: SetBurn. (line 208)
|
||||
* -inq inquire drive identifiers: Inquire. (line 8)
|
||||
* -isosize obtain track size from ISO 9660 superblock: SetBurn.
|
||||
(line 136)
|
||||
* -msinfo retrieve multi-session info: Inquire. (line 48)
|
||||
* -multi keep media appendable after burn run: SetBurn. (line 84)
|
||||
* -nopad disable adding of bytes to end of track: SetBurn. (line 152)
|
||||
* -pad add 15 blocks to end of track: SetBurn. (line 155)
|
||||
* -sao explicitely set write type SAO/DAO: SetBurn. (line 173)
|
||||
* -tao explicitely set write type TAO: SetBurn. (line 166)
|
||||
* -toc inquire medium content: Inquire. (line 25)
|
||||
* -v increase program verbosity: Verbous. (line 17)
|
||||
* -V log SCSI command transactions to stderr: Verbous. (line 22)
|
||||
(line 137)
|
||||
* -modesty_on_drive keep drive buffer hungry: NonCdrecord. (line 56)
|
||||
* -msinfo retrieve multi-session info: Inquire. (line 43)
|
||||
* -multi keep media appendable after burn run: SetBurn. (line 89)
|
||||
* -nopad disable adding of bytes to end of track: SetBurn. (line 151)
|
||||
* -pad add 15 blocks to end of track: SetBurn. (line 153)
|
||||
* -sao explicitely set write type SAO/DAO: SetBurn. (line 168)
|
||||
* -tao explicitely set write type TAO: SetBurn. (line 162)
|
||||
* -toc inquire medium content: Inquire. (line 22)
|
||||
* -v increase program verbosity: Verbous. (line 16)
|
||||
* -V log SCSI command transactions to stderr: Verbous. (line 20)
|
||||
* -version report emulation and xorriso version: Verbous. (line 8)
|
||||
* -waiti access drive only after stdin delivers data: SetBurn.
|
||||
(line 110)
|
||||
* blank= make media re-usabable or format media: SetBurn. (line 27)
|
||||
* dev= address the drive to be used: DriveAddr. (line 22)
|
||||
* dvd_obs= set write transaction payload size: NonCdrecord. (line 54)
|
||||
* fs= set program fifo size: SetBurn. (line 181)
|
||||
(line 113)
|
||||
* blank= make media re-usabable or format media: SetBurn. (line 28)
|
||||
* dev= address the drive to be used: DriveAddr. (line 21)
|
||||
* dvd_obs= set write transaction payload size: NonCdrecord. (line 49)
|
||||
* fs= set program fifo size: SetBurn. (line 174)
|
||||
* minbuf= keep drive buffer hungry: SetBurn. (line 205)
|
||||
* padsize= add bytes to end of track: SetBurn. (line 144)
|
||||
* speed= set write speed: SetBurn. (line 197)
|
||||
* stdio_sync= control stdio buffer: NonCdrecord. (line 69)
|
||||
* speed= set write speed: SetBurn. (line 189)
|
||||
* stdio_sync= control stdio buffer: NonCdrecord. (line 93)
|
||||
* stream_recording= try to get full speed on DVD-RAM, BD: NonCdrecord.
|
||||
(line 43)
|
||||
* tsize= set a fixed track size: SetBurn. (line 124)
|
||||
(line 39)
|
||||
* tsize= set a fixed track size: SetBurn. (line 126)
|
||||
* write_start_address= set block address for write start: NonCdrecord.
|
||||
(line 62)
|
||||
(line 87)
|
||||
|
||||
|
||||
File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
||||
@ -886,89 +897,92 @@ File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
||||
|