New option --allow_emulated_drives
This commit is contained in:
parent
3a84e030be
commit
b517db6b61
@ -2,7 +2,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 CDRSKIN 1 "August 27, 2007"
|
.TH CDRSKIN 1 "September 8, 2007"
|
||||||
.\" 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:
|
||||||
@ -48,7 +48,9 @@ or on DVD-R[W] (in Incremental mode) or on DVD+R.
|
|||||||
.br
|
.br
|
||||||
Single session on DVD-RW or DVD-R (Disk-at-once)
|
Single session on DVD-RW or DVD-R (Disk-at-once)
|
||||||
.br
|
.br
|
||||||
or on overwriteable DVD+RW, DVD-RW, DVD-RAM.
|
or on overwriteable DVD+RW, DVD-RW, DVD-RAM,
|
||||||
|
.br
|
||||||
|
or on data file or block device.
|
||||||
.br
|
.br
|
||||||
Bus scan, burnfree, speed options, retrieving media info, padding, fifo.
|
Bus scan, burnfree, speed options, retrieving media info, padding, fifo.
|
||||||
.br
|
.br
|
||||||
@ -257,6 +259,21 @@ Further are accepted on Linux: links to libburn-suitable device files,
|
|||||||
device files which have the same major and minor device number,
|
device files which have the same major and minor device number,
|
||||||
and device files which have the same SCSI address parameters (e.g. /dev/sg0).
|
and device files which have the same SCSI address parameters (e.g. /dev/sg0).
|
||||||
.br
|
.br
|
||||||
|
.PP
|
||||||
|
Option --allow_emulated_drives enables addressing of pseudo-drives
|
||||||
|
which get emulated on top of a regular data file or a block device.
|
||||||
|
The target file address is given after prefix "stdio:".
|
||||||
|
.br
|
||||||
|
E.g.: dev=stdio:/tmp/my_pseudo_drive
|
||||||
|
.br
|
||||||
|
Warning: Superusers must take care not to spoil their hard disk via its raw
|
||||||
|
block device (like /dev/hda or /dev/sd0).
|
||||||
|
.br
|
||||||
|
Pseudo-drives behave much like DVD-RAM. They allow -dummy, nevertheless, and
|
||||||
|
their reply with --tell_media_space is utopic. If the given address does
|
||||||
|
not exist yet, then it gets created as regular file.
|
||||||
|
Note: -dummy runs touch the file.
|
||||||
|
.br
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.TP
|
.TP
|
||||||
.BI \-\-help
|
.BI \-\-help
|
||||||
@ -624,6 +641,10 @@ drive for the loaded media. By default, such an adjustment is only made with
|
|||||||
pseudo-speeds 0 and -1 whereas speed settings > 0 are sent unchanged to the
|
pseudo-speeds 0 and -1 whereas speed settings > 0 are sent unchanged to the
|
||||||
drive which will then choose an appropriate speed on its own.
|
drive which will then choose an appropriate speed on its own.
|
||||||
.TP
|
.TP
|
||||||
|
.BI \--allow_emulated_drives
|
||||||
|
Enable drive addresses of the form dev=stdio:<path>. See above, paragraph
|
||||||
|
"Drive preparation and addressing".
|
||||||
|
.TP
|
||||||
.BI \--allow_setuid
|
.BI \--allow_setuid
|
||||||
Disable the loud warning about insecure discrepance between login user and
|
Disable the loud warning about insecure discrepance between login user and
|
||||||
effective user which indicates application of chmod u+s to the program binary.
|
effective user which indicates application of chmod u+s to the program binary.
|
||||||
|
@ -1641,6 +1641,9 @@ struct CdrpreskiN {
|
|||||||
/** Wether to support media types which are implemented but yet untested */
|
/** Wether to support media types which are implemented but yet untested */
|
||||||
int allow_untested_media;
|
int allow_untested_media;
|
||||||
|
|
||||||
|
/** Wether to allow libburn pseudo-drives "stdio:<path>" */
|
||||||
|
int allow_emulated_drives;
|
||||||
|
|
||||||
/** Wether an option is given which needs a full bus scan */
|
/** Wether an option is given which needs a full bus scan */
|
||||||
int no_whitelist;
|
int no_whitelist;
|
||||||
|
|
||||||
@ -1721,6 +1724,7 @@ int Cdrpreskin_new(struct CdrpreskiN **preskin, int flag)
|
|||||||
o->allow_setuid= 0;
|
o->allow_setuid= 0;
|
||||||
o->allow_fd_source= 0;
|
o->allow_fd_source= 0;
|
||||||
o->allow_untested_media= 0;
|
o->allow_untested_media= 0;
|
||||||
|
o->allow_emulated_drives= 0;
|
||||||
o->no_whitelist= 0;
|
o->no_whitelist= 0;
|
||||||
o->no_convert_fs_adr= 0;
|
o->no_convert_fs_adr= 0;
|
||||||
#ifdef Cdrskin_libburn_has_convert_scsi_adR
|
#ifdef Cdrskin_libburn_has_convert_scsi_adR
|
||||||
@ -2055,6 +2059,9 @@ return:
|
|||||||
if(strcmp(argv[i],"--abort_handler")==0) {
|
if(strcmp(argv[i],"--abort_handler")==0) {
|
||||||
o->abort_handler= 3;
|
o->abort_handler= 3;
|
||||||
|
|
||||||
|
} else if(strcmp(argv[i],"--allow_emulated_drives")==0) {
|
||||||
|
o->allow_emulated_drives= 1;
|
||||||
|
|
||||||
} else if(strcmp(argv[i],"--allow_setuid")==0) {
|
} else if(strcmp(argv[i],"--allow_setuid")==0) {
|
||||||
o->allow_setuid= 1;
|
o->allow_setuid= 1;
|
||||||
|
|
||||||
@ -2157,7 +2164,7 @@ set_dev:;
|
|||||||
|
|
||||||
#ifndef Cdrskin_extra_leaN
|
#ifndef Cdrskin_extra_leaN
|
||||||
|
|
||||||
printf("Supported SCSI transports for this platform:\n");
|
printf("\nSupported SCSI transports for this platform:\n");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
if(o->old_pseudo_scsi_adr) {
|
if(o->old_pseudo_scsi_adr) {
|
||||||
fprintf(stderr,"\nTransport name:\t\tlibburn OLD_PSEUDO\n");
|
fprintf(stderr,"\nTransport name:\t\tlibburn OLD_PSEUDO\n");
|
||||||
@ -2183,6 +2190,18 @@ set_dev:;
|
|||||||
fprintf(stderr,"SCSI Bus scanning:\tsupported\n");
|
fprintf(stderr,"SCSI Bus scanning:\tsupported\n");
|
||||||
fprintf(stderr,"Open via UNIX device:\tsupported\n");
|
fprintf(stderr,"Open via UNIX device:\tsupported\n");
|
||||||
}
|
}
|
||||||
|
if(o->allow_emulated_drives) {
|
||||||
|
fprintf(stderr,"\nTransport name:\t\tlibburn on standard i/o\n");
|
||||||
|
fprintf(stderr,
|
||||||
|
"Transport descr.:\twrite into data files and block devices\n");
|
||||||
|
fprintf(stderr,"Transp. layer ind.:\tstdio:\n");
|
||||||
|
fprintf(stderr,"Target specifier:\tpath\n");
|
||||||
|
fprintf(stderr,"Target example:\t\tstdio:/tmp/pseudo_drive\n");
|
||||||
|
fprintf(stderr,"SCSI Bus scanning:\tnot supported\n");
|
||||||
|
fprintf(stderr,"Open via UNIX device:\tsupported\n");
|
||||||
|
} else {
|
||||||
|
printf("\ncdrskin: NOTE : Option --allow_emulated_drives would allow dev=stdio:<path>\n");
|
||||||
|
}
|
||||||
|
|
||||||
#else /* ! Cdrskin_extra_leaN */
|
#else /* ! Cdrskin_extra_leaN */
|
||||||
|
|
||||||
@ -2262,6 +2281,8 @@ set_dev:;
|
|||||||
printf(
|
printf(
|
||||||
" --adjust_speed_to_drive set only speeds offered by drive and media\n");
|
" --adjust_speed_to_drive set only speeds offered by drive and media\n");
|
||||||
#endif
|
#endif
|
||||||
|
printf(
|
||||||
|
" --allow_emulated_drives dev=stdio:<path> on files and block devices\n");
|
||||||
printf(
|
printf(
|
||||||
" --allow_setuid disable setuid warning (setuid is insecure !)\n");
|
" --allow_setuid disable setuid warning (setuid is insecure !)\n");
|
||||||
printf(
|
printf(
|
||||||
@ -3620,7 +3641,7 @@ wrong_devno:;
|
|||||||
@return <0 error,
|
@return <0 error,
|
||||||
pseudo transport groups:
|
pseudo transport groups:
|
||||||
0 volatile drive number,
|
0 volatile drive number,
|
||||||
1 /dev/sgN, 2 /dev/hdX,
|
1 /dev/sgN, 2 /dev/hdX, 3 stdio,
|
||||||
1000000+busno = non-pseudo SCSI bus
|
1000000+busno = non-pseudo SCSI bus
|
||||||
2000000+busno = pseudo-ATA|ATAPI SCSI bus (currently busno==2)
|
2000000+busno = pseudo-ATA|ATAPI SCSI bus (currently busno==2)
|
||||||
*/
|
*/
|
||||||
@ -3645,6 +3666,14 @@ int Cdrskin_driveno_to_btldev(struct CdrskiN *skin, int driveno,
|
|||||||
goto fallback;
|
goto fallback;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef Cdrskin_libburn_has_get_drive_rolE
|
||||||
|
ret= burn_drive_get_drive_role(skin->drives[driveno].drive);
|
||||||
|
if(ret!=1) {
|
||||||
|
sprintf(btldev,"stdio:%s",adr);
|
||||||
|
{ret= 2; goto adr_translation;}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef Cdrskin_libburn_has_convert_scsi_adR
|
#ifdef Cdrskin_libburn_has_convert_scsi_adR
|
||||||
if(!skin->preskin->old_pseudo_scsi_adr) {
|
if(!skin->preskin->old_pseudo_scsi_adr) {
|
||||||
int host_no= -1,channel_no= -1,target_no= -1,lun_no= -1, bus_no= -1;
|
int host_no= -1,channel_no= -1,target_no= -1,lun_no= -1, bus_no= -1;
|
||||||
@ -3840,7 +3869,7 @@ int Cdrskin_report_disc_status(struct CdrskiN *skin, enum burn_disc_status s,
|
|||||||
} else
|
} else
|
||||||
printf("-unknown status code-\n");
|
printf("-unknown status code-\n");
|
||||||
|
|
||||||
if(flag&1)
|
if(flag&2)
|
||||||
return(1);
|
return(1);
|
||||||
|
|
||||||
#ifdef Cdrskin_libburn_has_get_profilE
|
#ifdef Cdrskin_libburn_has_get_profilE
|
||||||
@ -4682,6 +4711,7 @@ blanking_done:;
|
|||||||
ret= !!(wrote_well);
|
ret= !!(wrote_well);
|
||||||
ex:;
|
ex:;
|
||||||
skin->drive_is_busy= 0;
|
skin->drive_is_busy= 0;
|
||||||
|
if(skin->drive_is_grabbed)
|
||||||
Cdrskin_release_drive(skin,0);
|
Cdrskin_release_drive(skin,0);
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
@ -6408,6 +6438,9 @@ set_abort_max_wait:;
|
|||||||
skin->adjust_speed_to_drive= 1;
|
skin->adjust_speed_to_drive= 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
} else if(strcmp(argv[i],"--allow_emulated_drives")==0) {
|
||||||
|
/* is handled in Cdrpreskin_setup() */;
|
||||||
|
|
||||||
} else if(strcmp(argv[i],"--allow_setuid")==0) {
|
} else if(strcmp(argv[i],"--allow_setuid")==0) {
|
||||||
/* is handled in Cdrpreskin_setup() */;
|
/* is handled in Cdrpreskin_setup() */;
|
||||||
|
|
||||||
@ -7174,8 +7207,14 @@ int Cdrskin_create(struct CdrskiN **o, struct CdrpreskiN **preskin,
|
|||||||
"cdrskin: NOTE : greying out all drives besides given dev='%s'\n",
|
"cdrskin: NOTE : greying out all drives besides given dev='%s'\n",
|
||||||
(*preskin)->device_adr));
|
(*preskin)->device_adr));
|
||||||
burn_drive_add_whitelist((*preskin)->device_adr);
|
burn_drive_add_whitelist((*preskin)->device_adr);
|
||||||
if(strncmp((*preskin)->device_adr, "stdio:", 6)==0)
|
if(strncmp((*preskin)->device_adr, "stdio:", 6)==0) {
|
||||||
|
if((*preskin)->allow_emulated_drives)
|
||||||
stdio_drive= 1;
|
stdio_drive= 1;
|
||||||
|
else {
|
||||||
|
fprintf(stderr,"cdrskin: SORRY : dev=stdio:... works only with option --allow_emulated_drives\n");
|
||||||
|
{*exit_value= 2; goto ex;}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ret= Cdrskin_new(&skin,*preskin,1);
|
ret= Cdrskin_new(&skin,*preskin,1);
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Cdrskin_timestamP "2007.09.08.132206"
|
#define Cdrskin_timestamP "2007.09.08.164924"
|
||||||
|
@ -45,15 +45,16 @@ then
|
|||||||
-e 's/<b>Overview of features:<\/b>/\ <BR><b>Overview of features:<\/b>/' \
|
-e 's/<b>Overview of features:<\/b>/\ <BR><b>Overview of features:<\/b>/' \
|
||||||
-e 's/<b>General information paragraphs:<\/b>/\ <BR><b>General information paragraphs:<\/b>/' \
|
-e 's/<b>General information paragraphs:<\/b>/\ <BR><b>General information paragraphs:<\/b>/' \
|
||||||
-e 's/<b>Track recording model:<\/b>/\ <BR><b>Track recording model:<\/b>/' \
|
-e 's/<b>Track recording model:<\/b>/\ <BR><b>Track recording model:<\/b>/' \
|
||||||
-e 's/In general there are two types of tracks: data and audio./\ <BR>In general there are two types of tracks: data and audio./' \
|
-e 's/^In general there are two types of tracks: data and audio./\ <BR>In general there are two types of tracks: data and audio./' \
|
||||||
-e 's/While audio tracks just contain a given/\ <BR>While audio tracks just contain a given/' \
|
-e 's/^While audio tracks just contain a given/\ <BR>While audio tracks just contain a given/' \
|
||||||
-e 's/<b>Write mode selection:<\/b>/\ <BR><b>Write mode selection:<\/b>/' \
|
-e 's/<b>Write mode selection:<\/b>/\ <BR><b>Write mode selection:<\/b>/' \
|
||||||
-e 's/<b>Recordable CD Media:<\/b>/\ <BR><b>Recordable CD Media:<\/b>/' \
|
-e 's/<b>Recordable CD Media:<\/b>/\ <BR><b>Recordable CD Media:<\/b>/' \
|
||||||
-e 's/<b>Overwriteable DVD Media:<\/b>/\ <BR><b>Overwriteable DVD Media:<\/b>/' \
|
-e 's/<b>Overwriteable DVD Media:<\/b>/\ <BR><b>Overwriteable DVD Media:<\/b>/' \
|
||||||
-e 's/<b>Sequentially Recordable DVD Media:<\/b>/\ <BR><b>Sequentially Recordable DVD Media:<\/b>/' \
|
-e 's/<b>Sequentially Recordable DVD Media:<\/b>/\ <BR><b>Sequentially Recordable DVD Media:<\/b>/' \
|
||||||
-e 's/The write modes for DVD+R/\ <BR>The write modes for DVD+R/' \
|
-e 's/^The write modes for DVD+R/\ <BR>The write modes for DVD+R/' \
|
||||||
-e 's/<b>Drive preparation and addressing:<\/b>/\ <BR><b>Drive preparation and addressing:<\/b>/' \
|
-e 's/<b>Drive preparation and addressing:<\/b>/\ <BR><b>Drive preparation and addressing:<\/b>/' \
|
||||||
-e 's/If you only got one CD capable drive/\ <BR>If you only got one CD capable drive/' \
|
-e 's/^If you only got one CD capable drive/\ <BR>If you only got one CD capable drive/' \
|
||||||
|
-e 's/^Option --allow_emulated_drives enables/\ <BR>Option --allow_emulated_drives enables/' \
|
||||||
-e 's/^Alphabetical list of options/\ <BR>Alphabetical list of options/' \
|
-e 's/^Alphabetical list of options/\ <BR>Alphabetical list of options/' \
|
||||||
-e 's/and for all others\.<\/td><\/table>/and for all others.<\/td><\/table> <BR><HR><FONT SIZE=-1><CENTER>(HTML generated from '"$manpage"'.1 on '"$(date)"' by '$(basename "$0")' )<\/CENTER><\/FONT>/' \
|
-e 's/and for all others\.<\/td><\/table>/and for all others.<\/td><\/table> <BR><HR><FONT SIZE=-1><CENTER>(HTML generated from '"$manpage"'.1 on '"$(date)"' by '$(basename "$0")' )<\/CENTER><\/FONT>/' \
|
||||||
-e 's/See section EXAMPLES/See section <A HREF="#EXAMPLES">EXAMPLES<\/A>/' \
|
-e 's/See section EXAMPLES/See section <A HREF="#EXAMPLES">EXAMPLES<\/A>/' \
|
||||||
|
Loading…
Reference in New Issue
Block a user