New option -stream_recording

This commit is contained in:
Thomas Schmitt 2008-05-27 20:14:51 +00:00
parent 106ab1fb0c
commit b9f01ef512
7 changed files with 73 additions and 24 deletions

View File

@ -1202,8 +1202,15 @@ MMC drives usually activate their own idea of speed and take
the speed value given by the burn program only as upper limit
for their own decision.
.TP
\fB\-stream_recording\fR "on"|"off"
Setting "on" tries to circumvent the management of defects on DVD-RAM and
DVD+RW. Defect management keeps partly damaged media usable. But it reduces
write speed to half nominal speed even if the media is in perfect shape.
For the case of flawless media, one may use -stream_recording "on" to get
full speed.
.TP
\fB\-dummy\fR "on"|"off"
If "on" simulate burning or refuse with FAILURE event if
If "on" then simulate burning or refuse with FAILURE event if
no simulation is possible, do neither blank nor format.
.TP
\fB-fs\fR number["k"|"m"]

View File

@ -2790,6 +2790,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->speed= 0;
m->fs= 4*512; /* 4 MiB */
m->padding= 300*1024;
m->do_stream_recording= 0;
m->keep_boot_image= 0;
m->patch_isolinux_image= 0;
m->allow_graft_points= 0;
@ -4066,6 +4067,12 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->do_stream_recording==0);
sprintf(line,"-stream_recording %s\n",
xorriso->do_stream_recording ? "on" : "off");
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->fs==4*512);
if((xorriso->fs/512)*512==xorriso->fs)
sprintf(line,"-fs %dm\n", xorriso->fs/512);
@ -9612,6 +9619,8 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" If \"on\" simulate burning. Refuse if media cannot simulate.",
" -speed number[\"k\"|\"m\"|\"[x]CD\"|\"[x]DVD\"]",
" Set the burn speed. Default is 0 = maximum speed.",
" -stream_recording \"on\"|\"off\"",
" Try to circumvent slow checkread on DVD-RAM and BD-RE.",
" -fs number[\"k\"|\"m\"]",
" Set the size of the fifo buffer. (Default is 4m)",
" -eject \"in\"|\"out\"|\"all\"",
@ -11137,6 +11146,18 @@ int Xorriso_option_status_history_max(struct XorrisO *xorriso, int num,
}
/* Option -stream_recording */
int Xorriso_option_stream_recording(struct XorrisO *xorriso, char *mode,
int flag)
{
if(strcmp(mode,"on")==0 || mode[0]==0)
xorriso->do_stream_recording= 1;
else
xorriso->do_stream_recording= 0;
return(1);
}
/* Option -tell_media_space */
int Xorriso_option_tell_media_space(struct XorrisO *xorriso, int flag)
{
@ -11501,7 +11522,7 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
"padding","path_list","pathspecs","pkt_output","print","prompt",
"prog","publisher","reassure","report_about","rom_toc_scan",
"session_log","speed","split_size","status","status_history_max",
"temp_mem_limit","uid","volid","use_readline",
"stream_recording","temp_mem_limit","uid","volid","use_readline",
""
};
static char arg2_commands[][40]= {
@ -12028,6 +12049,10 @@ next_command:;
sscanf(arg1,"%d",&num1);
ret= Xorriso_option_status_history_max(xorriso, num1, 0);
} else if(strcmp(cmd,"stream_recording")==0) {
(*idx)++;
ret= Xorriso_option_stream_recording(xorriso, arg1, 0);
} else if(strcmp(cmd,"tell_media_space")==0) {
Xorriso_option_tell_media_space(xorriso, 0);

View File

@ -233,6 +233,10 @@ int Xorriso_option_compare(struct XorrisO *xorriso, char *disk_path,
int Xorriso_option_cpri( struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
/* Option -cpx */
int Xorriso_option_cpx(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
/* Option -cut_out */
int Xorriso_option_cut_out(struct XorrisO *xorriso, char *disk_path,
char *start, char *count, char *iso_rr_path, int flag);
@ -461,6 +465,10 @@ int Xorriso_option_status(struct XorrisO *xorriso, char *mode, int flag);
int Xorriso_option_status_history_max(struct XorrisO *xorriso, int num1,
int flag);
/* Option -stream_recording */
int Xorriso_option_stream_recording(struct XorrisO *xorriso, char *mode,
int flag);
/* Option -tell_media_space */
int Xorriso_option_tell_media_space(struct XorrisO *xorriso, int flag);

View File

@ -2,7 +2,7 @@
<HEAD>
<META NAME="description" CONTENT="xorriso, creates, loads, manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions">
<META NAME="keywords" CONTENT="xorriso, libburn, libburnia, burn, CD, DVD, ISO, ISO 9660, RockRidge, Rock Ridge, linux, recording, burning, CD-R, CD-RW, DVD-R, DVD-RW, DVD+RW, DVD+R, DVD+R DL, scdbackup">
<META NAME="keywords" CONTENT="xorriso, libburn, libburnia, burn, CD, DVD, ISO, ISO 9660, RockRidge, Rock Ridge, linux, recording, burning, CD-R, CD-RW, DVD-R, DVD-RW, DVD+RW, DVD+R, DVD+R DL, BD-RE, scdbackup">
<META NAME="robots" CONTENT="follow">
<TITLE>xorriso homepage english</TITLE>
</HEAD>
@ -33,10 +33,10 @@ optical media or to filesystem objects.
<P>
<H2>Hardware requirements:</H2>
A CD/DVD recorder suitable for
A CD/DVD/BD recorder suitable for
<A HREF="http://libburnia-project.org">http://libburnia-project.org</A> <BR>
(SCSI , ATA , USB , or SATA writers compliant to standard MMC-3 for CD
and to MMC-5 for DVD).
and to MMC-5 for DVD or BD).
<BR>
</P>
@ -59,7 +59,7 @@ GPL software included:<BR>
</H2>
<DL>
<DT>libburn-0.4.9</DT>
<DD>reads and writes data from and to CD and DVD.</DD>
<DD>reads and writes data from and to CD, DVD, BD-RE.</DD>
<DD>(founded by Derek Foreman and Ben Jansens,
furthered since August 2006 by team of libburnia-project.org)</DD>
<DT>libisofs-0.6.4</DT>
@ -86,7 +86,7 @@ For ports to other usable systems <A HREF="#contact">contact us</A>.
<H2>Special features:</H2>
<UL>
<LI>
ISO 9660 formatter and burner for CD or DVD are fixely integrated.
ISO 9660 formatter and burner for CD, DVD, BD-RE are fixely integrated.
</LI>
<LI>
Operates on an existing ISO image or creates a new one.
@ -287,7 +287,8 @@ output will be redirected to stderr in this case.</DT>
</DL>
Testers wanted who are willing to risk some double layer DVD media.
Testers wanted who are willing to risk some double layer DVD media or
are interested in using BD-R media.
</P>
@ -347,16 +348,19 @@ Enhancements towards previous stable version xorriso-0.1.4.pl00:
<DT><H3>Development snapshot, version 0.1.7 :</H3></DT>
<DD>Bug fixes towards xorriso-0.1.6.pl00:
<UL>
<LI>-indev -outdev modifying to overwriteable target yielded unmountable results</LI>
<!--
-->
<LI>- none yet -</LI>
-->
</UL>
</DD>
<DD>Enhancements towards stable version 0.1.6.pl00:
<UL>
<LI>New options -osirrox and -cpx</LI>
<LI>New option -stream_recording</LI>
<!--
-->
<LI>- none yet -</LI>
-->
</UL>
</DD>
<DD>&nbsp;</DD>

View File

@ -151,6 +151,7 @@ struct XorrisO { /* the global context of xorriso */
int speed; /* in libburn units : 1000 bytes/second , 0 = Max, -1 = Min */
int fs; /* fifo size in 2048 byte chunks : at most 1 GB */
int padding; /* number of bytes to add after ISO 9660 image */
int do_stream_recording;
int keep_boot_image;
int patch_isolinux_image;

View File

@ -1 +1 @@
#define Xorriso_timestamP "2008.05.26.181210"
#define Xorriso_timestamP "2008.05.27.201513"

View File

@ -814,6 +814,8 @@ int Xorriso_make_write_options(
burn_write_opts_set_multi(*burn_options,
!(xorriso->do_close || drive_role==0 || drive_role==3));
burn_drive_set_speed(drive, xorriso->speed, xorriso->speed);
burn_write_opts_set_stream_recording(*burn_options,
!! xorriso->do_stream_recording);
burn_write_opts_set_underrun_proof(*burn_options, 1);
return(1);
}
@ -2718,7 +2720,6 @@ int Xorriso_restore(struct XorrisO *xorriso,
char *img_path_pt;
IsoNode *node= NULL;
int done= 0, is_dir= 0, ret, target_is_dir, source_is_dir, stbuf_ret;
int target_is_split;
struct stat stbuf, target_stbuf;
struct PermiteM *perm_stack_mem;
@ -2766,8 +2767,16 @@ int Xorriso_restore(struct XorrisO *xorriso,
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE", 0);
return(0);
}
}
#ifdef Osirrox_not_yeT
/* >>> */
int source_is_split= 0;
if(is_dir)
source_is_split= Xorriso_is_split(xorriso, node, 0);
#endif
}
for(npt= apt; !done; apt= npt+1) {
npt= strchr(apt, '/');
if(npt==NULL) {
@ -2783,24 +2792,20 @@ int Xorriso_restore(struct XorrisO *xorriso,
continue;
}
source_is_dir= (is_dir || (flag&1) || !done);
stbuf_ret= stat(path, &target_stbuf);
if(stbuf_ret!=-1) {
target_is_dir= S_ISDIR(target_stbuf.st_mode);
target_is_split= 0;
#ifdef Osirrox_not_yeT
/* >>> */
if(target_is_dir)
target_is_split= Xorriso_is_split(xorriso, node, 0);
/* >>> Take into respect source_is_split */
#endif
if((!target_is_dir) && source_is_dir) {
if(!((target_is_dir && !target_is_split) && source_is_dir)) {
Xorriso_process_msg_queues(xorriso,0);
/* handle overwrite situation */;
/* handle overwrite situation */
if(xorriso->do_overwrite==1 ||
(xorriso->do_overwrite==2 && !(target_is_dir && !target_is_split))) {
(xorriso->do_overwrite==2 && !target_is_dir)) {
ret= Xorriso_rmx(xorriso, (off_t) 0, path, 1|8);
if(ret<=0)
return(ret);
@ -2813,11 +2818,10 @@ int Xorriso_restore(struct XorrisO *xorriso,
stbuf_ret= -1;
goto handle_path_node;
}
Xorriso_msgs_submit(xorriso, 0, disk_path, 0, "ERRFILE", 0);
sprintf(xorriso->info_text,
"While restoring '%s' : '%s' exists and may not be overwritten",
disk_path, path);
"While restoring '%s' : '%s' exists and may not be overwritten",
disk_path, path);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
}