New cdrskin option cd_start_tno=

This commit is contained in:
Thomas Schmitt 2012-01-08 19:14:42 +00:00
parent 4d70043e78
commit a2493b97e4
3 changed files with 43 additions and 3 deletions

View File

@ -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 "Jan 06, 2012" .TH CDRSKIN 1 "Jan 08, 2012"
.\" 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:
@ -516,6 +516,8 @@ Non-CDRWIN commands ARRANGER, COMPOSER, MESSAGE are supported.
Cue sheet file commands CATALOG and ISRC may be overridden by option mcn= Cue sheet file commands CATALOG and ISRC may be overridden by option mcn=
and by input_sheet_v07t= purpose specifiers "UPC / EAN" and "ISRC". and by input_sheet_v07t= purpose specifiers "UPC / EAN" and "ISRC".
This does not affect their appearance in CD-TEXT, but only on Q sub-channel. This does not affect their appearance in CD-TEXT, but only on Q sub-channel.
.br
The track numbers may be overridden by option cd_start_tno=.
.TP .TP
.BI \-dao .BI \-dao
Alias for option -sao. Write CD in Session at Once mode Alias for option -sao. Write CD in Session at Once mode
@ -982,6 +984,16 @@ taken as plain block number with block size 2048 byte.
(E.g ...=1000 or ...=1000s means block 1000, ...=1m means block (E.g ...=1000 or ...=1000s means block 1000, ...=1m means block
512, ...=4096b means block number 2) 512, ...=4096b means block number 2)
.TP .TP
.BI cd_start_tno= number
Set the number which shall be written as CD track number with the first
track of the session. The following tracks will then get written with
consequtive CD track numbers. The resulting number of the last track
must not exceed 99. The lowest possible start number is 1, which is also
the default.
.br
This setting applies only to CD SAO writing. It overrides the track number
settings caused by options cuefile= or input_sheet_v07t=.
.TP
.BI \--demand_a_drive .BI \--demand_a_drive
Exit with a nonzero value if no drive can be found during a bus scan. Exit with a nonzero value if no drive can be found during a bus scan.
.TP .TP
@ -1212,6 +1224,8 @@ used as CD-TEXT language blocks 1 to 7.
.br .br
This option will get into effect only if no option textfile= is given. This option will get into effect only if no option textfile= is given.
The write mode must be SAO on CD. All tracks must be -audio tracks. The write mode must be SAO on CD. All tracks must be -audio tracks.
.br
The track numbers may be overridden by option cd_start_tno=.
.TP .TP
.BI \--list_formats .BI \--list_formats
List the available format descriptors as reported by the drive for the List the available format descriptors as reported by the drive for the

View File

@ -2783,6 +2783,8 @@ set_dev:;
" --any_track allow source_addresses to match '^-.' or '='\n"); " --any_track allow source_addresses to match '^-.' or '='\n");
printf( printf(
" assert_write_lba=<lba> abort if not next write address == lba\n"); " assert_write_lba=<lba> abort if not next write address == lba\n");
fprintf(stderr,
" cd_start_tno=<number> set number of first track in CD SAO session\n");
fprintf(stderr, fprintf(stderr,
" --cdtext_dummy show CD-TEXT pack array instead of writing CD\n"); " --cdtext_dummy show CD-TEXT pack array instead of writing CD\n");
fprintf(stderr, fprintf(stderr,
@ -3426,6 +3428,9 @@ struct CdrskiN {
/** a guess about what track might be processing right now */ /** a guess about what track might be processing right now */
int supposed_track_idx; int supposed_track_idx;
/** The number of the first track in a CD SAO session */
int cd_start_tno;
int fifo_enabled; int fifo_enabled;
/** Optional fifo between input fd and libburn. It uses a pipe(2) to transfer /** Optional fifo between input fd and libburn. It uses a pipe(2) to transfer
data to libburn. This fifo may be actually the start of a chain of fifos data to libburn. This fifo may be actually the start of a chain of fifos
@ -3588,6 +3593,7 @@ int Cdrskin_new(struct CdrskiN **skin, struct CdrpreskiN *preskin, int flag)
o->tracklist[i]= NULL; o->tracklist[i]= NULL;
o->track_counter= 0; o->track_counter= 0;
o->supposed_track_idx= -1; o->supposed_track_idx= -1;
o->cd_start_tno= 0;
o->fifo_enabled= 1; o->fifo_enabled= 1;
o->fifo= NULL; o->fifo= NULL;
o->fifo_outlet_fd= -1; o->fifo_outlet_fd= -1;
@ -6902,6 +6908,11 @@ burn_failed:;
burn_write_opts_set_mediacatalog(o, (unsigned char *) skin->mcn); burn_write_opts_set_mediacatalog(o, (unsigned char *) skin->mcn);
burn_write_opts_set_has_mediacatalog(o, 1); burn_write_opts_set_has_mediacatalog(o, 1);
} }
if(skin->cd_start_tno >= 1 && skin->cd_start_tno <= 99) {
ret= burn_session_set_start_tno(session, skin->cd_start_tno, 0);
if(ret <= 0)
goto burn_failed;
}
ret= Cdrskin_activate_write_mode(skin,o,disc,0); ret= Cdrskin_activate_write_mode(skin,o,disc,0);
if(ret<=0) if(ret<=0)
goto burn_failed; goto burn_failed;
@ -7381,7 +7392,7 @@ sorry_failed_to_eject:;
*/ */
int Cdrskin_setup(struct CdrskiN *skin, int argc, char **argv, int flag) int Cdrskin_setup(struct CdrskiN *skin, int argc, char **argv, int flag)
{ {
int i,k,l,ret, idx= -1; int i,k,l,ret, idx= -1, cd_start_tno;
double value,grab_and_wait_value= -1.0, num; double value,grab_and_wait_value= -1.0, num;
char *cpt,*value_pt,adr[Cdrskin_adrleN],*blank_mode= ""; char *cpt,*value_pt,adr[Cdrskin_adrleN],*blank_mode= "";
struct stat stbuf; struct stat stbuf;
@ -7631,6 +7642,21 @@ unsupported_blank_option:;
} else if(strcmp(argv[i],"--bragg_with_audio")==0) { } else if(strcmp(argv[i],"--bragg_with_audio")==0) {
/* OBSOLETE 0.2.3 : was handled in Cdrpreskin_setup() */; /* OBSOLETE 0.2.3 : was handled in Cdrpreskin_setup() */;
} else if(strncmp(argv[i], "-cd_start_tno", 14)==0) {
value_pt= argv[i] + 14;
goto set_cd_start_tno;
} else if(strncmp(argv[i], "cd_start_tno=", 13) ==0 ) {
value_pt= argv[i] + 13;
set_cd_start_tno:;
cd_start_tno= -1;
sscanf(value_pt, "%d", &cd_start_tno);
if(cd_start_tno < 1 || cd_start_tno > 99) {
fprintf(stderr,
"cdrskin: FATAL : cd_start_tno= gives a number outside [1 ... 99]\n");
return(0);
}
skin->cd_start_tno= cd_start_tno;
} else if(strcmp(argv[i],"--cdtext_dummy")==0) { } else if(strcmp(argv[i],"--cdtext_dummy")==0) {
skin->cdtext_test= 2; skin->cdtext_test= 2;

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2012.01.08.154822" #define Cdrskin_timestamP "2012.01.08.191443"