2008/02/20 (水) 00:25:34        [qwerty]
--- /usr/ports/audio/dagrab/work/dagrab-0.3.5/dagrab.c	Sun Sep 30 04:29:35 2001
+++ dagrab.c	Sun Sep 30 04:20:42 2001
@@ -106,7 +106,7 @@
 #include <sys/cdio.h>
 #include <sys/param.h>
 #include <sys/mount.h>
-#define CDDEVICE "/dev/cdrom"
+#define CDDEVICE "/dev/acd0c"
 #define N_BUF 12
 #define OVERLAP 2
 #define KEYLEN 12
@@ -186,6 +186,7 @@
 static int opt_spchk=0;
 static unsigned opt_srate = 44100;	// still unused
 static int opt_mono=0;
+static int opt_minus=0;
 static int retries=0;
 
 static int opt_cddb=0;
@@ -946,7 +947,8 @@
 	  "\t-N\t\t: use cddb name, changes behavior of -f's parameter\n"
 	  "\t-H host\t\t: cddbp server, default %s\n"
 	  "\t-P port\t\t: cddbp port number default %d\n"
-	  "\t-D dir\t\t: base of local cddb database\n",
+	  "\t-D dir\t\t: base of local cddb database\n"
+          "\t-M\t\t: minus-track\n" ,
 	  PROGNAME,VERSION,CDDEVICE,OVERLAP,N_BUF,KEYLEN,
 	  RETRYS,OFS,D_MODE,CDDB_HOST,CDDB_PORT);
   printf("\n\tVariables: (use lowcase values for removing slashes)\n");
@@ -970,7 +972,7 @@
 	char path[500];
 	FILE *f;
 	progname=av[0];
-	while((c=getopt(ac,av,"pshaivCSNd:f:n:o:k:r:t:m:e:H:P:D:"))!=-1){
+	while((c=getopt(ac,av,"MpshaivCSNd:f:n:o:k:r:t:m:e:H:P:D:"))!=-1){
 		switch(c){
 			case 'h':usage();break;
 			case 'd':CPARG(cd_dev);break;
@@ -993,6 +995,7 @@
 			case 'P':opt_cddb_port=atoi(optarg);break;
 			case 'H':opt_cddb_host=strdup(optarg);break;
 			case 'p':opt_mono=1;break;
+                        case 'M':opt_minus=1;break;
 		}
 	}
 	if (basename[0]==0){
@@ -1050,7 +1053,7 @@
 	opt_bufsize=CD_FRAMESIZE_RAW * opt_blocks;
 	opt_ibufsize=opt_bufsize/sizeof(int);
 	opt_bufstep=opt_blocks-opt_overlap;
-	if((optind==ac)&&!all_tracks&&!opt_save) {
+	if((optind==ac)&&!all_tracks&&!opt_save&&!opt_minus) {
 		if(disp_TOC){
 			if(cd_getinfo(cd_dev,&tl))
 				exit(1);
@@ -1088,7 +1091,14 @@
 			cd_read_track(basename,i,&tl,filter);
 		}
 	}
-	else
+        else if(opt_minus)
+        {
+                printf("Reading Minus track\n");
+                tl.starts[1]=tl.starts[0];
+                tl.starts[0]=0;
+                cd_read_track(basename,1,&tl,filter);
+        }
+        else
 	{
 		for(i=optind;i<ac;i++)
 		{