New option -stream_recording
This commit is contained in:
parent
d3dd065a15
commit
6fc7f9f1c9
@ -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
|
the speed value given by the burn program only as upper limit
|
||||||
for their own decision.
|
for their own decision.
|
||||||
.TP
|
.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"
|
\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.
|
no simulation is possible, do neither blank nor format.
|
||||||
.TP
|
.TP
|
||||||
\fB-fs\fR number["k"|"m"]
|
\fB-fs\fR number["k"|"m"]
|
||||||
|
@ -2790,6 +2790,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
|||||||
m->speed= 0;
|
m->speed= 0;
|
||||||
m->fs= 4*512; /* 4 MiB */
|
m->fs= 4*512; /* 4 MiB */
|
||||||
m->padding= 300*1024;
|
m->padding= 300*1024;
|
||||||
|
m->do_stream_recording= 0;
|
||||||
m->keep_boot_image= 0;
|
m->keep_boot_image= 0;
|
||||||
m->patch_isolinux_image= 0;
|
m->patch_isolinux_image= 0;
|
||||||
m->allow_graft_points= 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))
|
if(!(is_default && no_defaults))
|
||||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
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);
|
is_default= (xorriso->fs==4*512);
|
||||||
if((xorriso->fs/512)*512==xorriso->fs)
|
if((xorriso->fs/512)*512==xorriso->fs)
|
||||||
sprintf(line,"-fs %dm\n", xorriso->fs/512);
|
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.",
|
" If \"on\" simulate burning. Refuse if media cannot simulate.",
|
||||||
" -speed number[\"k\"|\"m\"|\"[x]CD\"|\"[x]DVD\"]",
|
" -speed number[\"k\"|\"m\"|\"[x]CD\"|\"[x]DVD\"]",
|
||||||
" Set the burn speed. Default is 0 = maximum speed.",
|
" 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\"]",
|
" -fs number[\"k\"|\"m\"]",
|
||||||
" Set the size of the fifo buffer. (Default is 4m)",
|
" Set the size of the fifo buffer. (Default is 4m)",
|
||||||
" -eject \"in\"|\"out\"|\"all\"",
|
" -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 */
|
/* Option -tell_media_space */
|
||||||
int Xorriso_option_tell_media_space(struct XorrisO *xorriso, int flag)
|
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",
|
"padding","path_list","pathspecs","pkt_output","print","prompt",
|
||||||
"prog","publisher","reassure","report_about","rom_toc_scan",
|
"prog","publisher","reassure","report_about","rom_toc_scan",
|
||||||
"session_log","speed","split_size","status","status_history_max",
|
"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]= {
|
static char arg2_commands[][40]= {
|
||||||
@ -12028,6 +12049,10 @@ next_command:;
|
|||||||
sscanf(arg1,"%d",&num1);
|
sscanf(arg1,"%d",&num1);
|
||||||
ret= Xorriso_option_status_history_max(xorriso, num1, 0);
|
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) {
|
} else if(strcmp(cmd,"tell_media_space")==0) {
|
||||||
Xorriso_option_tell_media_space(xorriso, 0);
|
Xorriso_option_tell_media_space(xorriso, 0);
|
||||||
|
|
||||||
|
@ -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 Xorriso_option_cpri( struct XorrisO *xorriso, int argc, char **argv,
|
||||||
int *idx, int flag);
|
int *idx, int flag);
|
||||||
|
|
||||||
|
/* Option -cpx */
|
||||||
|
int Xorriso_option_cpx(struct XorrisO *xorriso, int argc, char **argv,
|
||||||
|
int *idx, int flag);
|
||||||
|
|
||||||
/* Option -cut_out */
|
/* Option -cut_out */
|
||||||
int Xorriso_option_cut_out(struct XorrisO *xorriso, char *disk_path,
|
int Xorriso_option_cut_out(struct XorrisO *xorriso, char *disk_path,
|
||||||
char *start, char *count, char *iso_rr_path, int flag);
|
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 Xorriso_option_status_history_max(struct XorrisO *xorriso, int num1,
|
||||||
int flag);
|
int flag);
|
||||||
|
|
||||||
|
/* Option -stream_recording */
|
||||||
|
int Xorriso_option_stream_recording(struct XorrisO *xorriso, char *mode,
|
||||||
|
int flag);
|
||||||
|
|
||||||
/* Option -tell_media_space */
|
/* Option -tell_media_space */
|
||||||
int Xorriso_option_tell_media_space(struct XorrisO *xorriso, int flag);
|
int Xorriso_option_tell_media_space(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<HEAD>
|
<HEAD>
|
||||||
<META NAME="description" CONTENT="xorriso, creates, loads, manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions">
|
<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">
|
<META NAME="robots" CONTENT="follow">
|
||||||
<TITLE>xorriso homepage english</TITLE>
|
<TITLE>xorriso homepage english</TITLE>
|
||||||
</HEAD>
|
</HEAD>
|
||||||
@ -33,10 +33,10 @@ optical media or to filesystem objects.
|
|||||||
|
|
||||||
<P>
|
<P>
|
||||||
<H2>Hardware requirements:</H2>
|
<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>
|
<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
|
(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>
|
<BR>
|
||||||
</P>
|
</P>
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ GPL software included:<BR>
|
|||||||
</H2>
|
</H2>
|
||||||
<DL>
|
<DL>
|
||||||
<DT>libburn-0.4.9</DT>
|
<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,
|
<DD>(founded by Derek Foreman and Ben Jansens,
|
||||||
furthered since August 2006 by team of libburnia-project.org)</DD>
|
furthered since August 2006 by team of libburnia-project.org)</DD>
|
||||||
<DT>libisofs-0.6.4</DT>
|
<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>
|
<H2>Special features:</H2>
|
||||||
<UL>
|
<UL>
|
||||||
<LI>
|
<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>
|
||||||
<LI>
|
<LI>
|
||||||
Operates on an existing ISO image or creates a new one.
|
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>
|
</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>
|
</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>
|
<DT><H3>Development snapshot, version 0.1.7 :</H3></DT>
|
||||||
<DD>Bug fixes towards xorriso-0.1.6.pl00:
|
<DD>Bug fixes towards xorriso-0.1.6.pl00:
|
||||||
<UL>
|
<UL>
|
||||||
|
<LI>-indev -outdev modifying to overwriteable target yielded unmountable results</LI>
|
||||||
<!--
|
<!--
|
||||||
-->
|
|
||||||
<LI>- none yet -</LI>
|
<LI>- none yet -</LI>
|
||||||
|
-->
|
||||||
</UL>
|
</UL>
|
||||||
</DD>
|
</DD>
|
||||||
<DD>Enhancements towards stable version 0.1.6.pl00:
|
<DD>Enhancements towards stable version 0.1.6.pl00:
|
||||||
<UL>
|
<UL>
|
||||||
|
<LI>New options -osirrox and -cpx</LI>
|
||||||
|
<LI>New option -stream_recording</LI>
|
||||||
<!--
|
<!--
|
||||||
-->
|
|
||||||
<LI>- none yet -</LI>
|
<LI>- none yet -</LI>
|
||||||
|
-->
|
||||||
</UL>
|
</UL>
|
||||||
</DD>
|
</DD>
|
||||||
<DD> </DD>
|
<DD> </DD>
|
||||||
|
@ -151,6 +151,7 @@ struct XorrisO { /* the global context of xorriso */
|
|||||||
int speed; /* in libburn units : 1000 bytes/second , 0 = Max, -1 = Min */
|
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 fs; /* fifo size in 2048 byte chunks : at most 1 GB */
|
||||||
int padding; /* number of bytes to add after ISO 9660 image */
|
int padding; /* number of bytes to add after ISO 9660 image */
|
||||||
|
int do_stream_recording;
|
||||||
|
|
||||||
int keep_boot_image;
|
int keep_boot_image;
|
||||||
int patch_isolinux_image;
|
int patch_isolinux_image;
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2008.05.26.181210"
|
#define Xorriso_timestamP "2008.05.27.201513"
|
||||||
|
@ -814,6 +814,8 @@ int Xorriso_make_write_options(
|
|||||||
burn_write_opts_set_multi(*burn_options,
|
burn_write_opts_set_multi(*burn_options,
|
||||||
!(xorriso->do_close || drive_role==0 || drive_role==3));
|
!(xorriso->do_close || drive_role==0 || drive_role==3));
|
||||||
burn_drive_set_speed(drive, xorriso->speed, xorriso->speed);
|
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);
|
burn_write_opts_set_underrun_proof(*burn_options, 1);
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
@ -2718,7 +2720,6 @@ int Xorriso_restore(struct XorrisO *xorriso,
|
|||||||
char *img_path_pt;
|
char *img_path_pt;
|
||||||
IsoNode *node= NULL;
|
IsoNode *node= NULL;
|
||||||
int done= 0, is_dir= 0, ret, target_is_dir, source_is_dir, stbuf_ret;
|
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 stat stbuf, target_stbuf;
|
||||||
struct PermiteM *perm_stack_mem;
|
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);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE", 0);
|
||||||
return(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) {
|
for(npt= apt; !done; apt= npt+1) {
|
||||||
npt= strchr(apt, '/');
|
npt= strchr(apt, '/');
|
||||||
if(npt==NULL) {
|
if(npt==NULL) {
|
||||||
@ -2783,24 +2792,20 @@ int Xorriso_restore(struct XorrisO *xorriso,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
source_is_dir= (is_dir || (flag&1) || !done);
|
source_is_dir= (is_dir || (flag&1) || !done);
|
||||||
|
|
||||||
stbuf_ret= stat(path, &target_stbuf);
|
stbuf_ret= stat(path, &target_stbuf);
|
||||||
if(stbuf_ret!=-1) {
|
if(stbuf_ret!=-1) {
|
||||||
target_is_dir= S_ISDIR(target_stbuf.st_mode);
|
target_is_dir= S_ISDIR(target_stbuf.st_mode);
|
||||||
target_is_split= 0;
|
|
||||||
|
|
||||||
#ifdef Osirrox_not_yeT
|
#ifdef Osirrox_not_yeT
|
||||||
/* >>> */
|
/* >>> Take into respect source_is_split */
|
||||||
if(target_is_dir)
|
|
||||||
target_is_split= Xorriso_is_split(xorriso, node, 0);
|
|
||||||
#endif
|
#endif
|
||||||
|
if((!target_is_dir) && source_is_dir) {
|
||||||
|
|
||||||
if(!((target_is_dir && !target_is_split) && source_is_dir)) {
|
|
||||||
Xorriso_process_msg_queues(xorriso,0);
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
|
|
||||||
/* handle overwrite situation */;
|
/* handle overwrite situation */
|
||||||
if(xorriso->do_overwrite==1 ||
|
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);
|
ret= Xorriso_rmx(xorriso, (off_t) 0, path, 1|8);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
return(ret);
|
return(ret);
|
||||||
@ -2813,11 +2818,10 @@ int Xorriso_restore(struct XorrisO *xorriso,
|
|||||||
stbuf_ret= -1;
|
stbuf_ret= -1;
|
||||||
goto handle_path_node;
|
goto handle_path_node;
|
||||||
}
|
}
|
||||||
|
|
||||||
Xorriso_msgs_submit(xorriso, 0, disk_path, 0, "ERRFILE", 0);
|
Xorriso_msgs_submit(xorriso, 0, disk_path, 0, "ERRFILE", 0);
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"While restoring '%s' : '%s' exists and may not be overwritten",
|
"While restoring '%s' : '%s' exists and may not be overwritten",
|
||||||
disk_path, path);
|
disk_path, path);
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user