ports/57227: audio/dagrab fix to work under -CURRENT
Simon Barner
barner at in.tum.de
Wed Nov 5 13:50:21 UTC 2003
The following reply was made to PR ports/57227; it has been noted by GNATS.
From: Simon Barner <barner at in.tum.de>
To: freebsd-gnats-submit at FreeBSD.org, vkushnir at Alfacom.net
Cc:
Subject: Re: ports/57227: audio/dagrab fix to work under -CURRENT
Date: Wed, 5 Nov 2003 14:40:57 +0100
I modified the patch to make a case distinction using
__FreeBSD_version.
diff -ruN dagrab.orig/Makefile dagrab/Makefile
--- dagrab.orig/Makefile Mon Oct 27 07:17:10 2003
+++ dagrab/Makefile Wed Nov 5 14:14:08 2003
@@ -7,7 +7,7 @@
PORTNAME= dagrab
PORTVERSION= 0.3.5
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= audio
MASTER_SITES= ${MASTER_SITE_SUNSITE}
MASTER_SITE_SUBDIR= apps/sound/cdrom
@@ -21,10 +21,4 @@
${INSTALL_PROGRAM} ${WRKSRC}/dagrab ${PREFIX}/bin
${INSTALL_MAN} ${WRKSRC}/dagrab.1 ${MANPREFIX}/man/man1
-.include <bsd.port.pre.mk>
-
-.if ${OSVERSION} >= 501106
-BROKEN= "Broken by new ATA driver"
-.endif
-
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff -ruN dagrab.orig/files/patch-ab dagrab/files/patch-ab
--- dagrab.orig/files/patch-ab Wed Mar 5 11:14:11 2003
+++ dagrab/files/patch-ab Wed Nov 5 14:33:03 2003
@@ -1,5 +1,5 @@
---- dagrab.c.orig Sat Feb 19 08:32:46 2000
-+++ dagrab.c Wed Mar 5 02:12:38 2003
+--- dagrab.c.orig Sat Feb 19 17:32:46 2000
++++ dagrab.c Wed Nov 5 14:32:35 2003
@@ -94,26 +94,20 @@
#include <string.h>
#include <errno.h>
@@ -104,11 +104,22 @@
}
void cd_read_audio(int lba,int num,char *buf)
-@@ -244,13 +248,13 @@
+@@ -244,16 +248,27 @@
/*NOTE: if num>CDROM_NBLOCKS_BUFFER as defined in ide_cd.c (8 in linux 2.0.32)
jitter correction may be required inside the block. */
{
- struct cdrom_read_audio ra;
++/* CDIOCREADAUDIO has been removed in FreeBSD 5.1-CURRENT */
++#if defined (__FreeBSD__) && (__FreeBSD_version >= 501106)
++ int bsize = 2352;
++ if(ioctl(cdrom_fd,CDRIOCSETBLOCKSIZE,&bsize) == -1) {
++ fprintf(stderr, "setblocksize");
++ exit(1);
++ }
++ if (pread(cdrom_fd, buf, num*bsize, lba*bsize) != num*bsize){
++ fprintf(stderr,"\n%s: read device at lba %d length %d: %s\n",
++ progname,lba,num,strerror(errno));
++#else
+ struct ioc_read_audio ra;
- ra.addr.lba=lba;
@@ -118,12 +129,16 @@
ra.nframes=num;
- ra.buf=buf;
- if(ioctl(cdrom_fd,CDROMREADAUDIO,&ra)){
+- /*fprintf(stderr,"%s: read raw ioctl failed \n",progname);*/
+ ra.buffer=buf;
+ if(ioctl(cdrom_fd,CDIOCREADAUDIO,&ra)){
- /*fprintf(stderr,"%s: read raw ioctl failed \n",progname);*/
fprintf(stderr,"\n%s: read raw ioctl failed at lba %d length %d: %s\n",
progname,lba,num,strerror(errno));
-@@ -471,7 +475,7 @@
++#endif
+ exit(1);
+ }
+ }
+@@ -471,7 +486,7 @@
DIR *d;
struct dirent *e;
char *id2,*p,*cddb,*loc;
@@ -132,7 +147,7 @@
char id[12];
char *path;
char path2[500];
-@@ -645,10 +649,10 @@
+@@ -645,10 +660,10 @@
int cd_getinfo(char *cd_dev,struct cd_trk_list *tl)
{
int i;
@@ -146,7 +161,7 @@
fprintf(stderr,"%s: error opening device %s\n",progname,cd_dev);
exit(1);
}
-@@ -656,7 +660,7 @@
+@@ -656,7 +671,7 @@
fprintf(stderr,"%s: read TOC ioctl failed: %s\n",progname,strerror(errno));
exit(1);
}
@@ -155,7 +170,7 @@
if((tl->starts=(int *)malloc((tl->max-tl->min+2)*sizeof(int)))==NULL){
fprintf(stderr,"%s: list data allocation failed\n",progname);
exit(1);
-@@ -668,21 +672,21 @@
+@@ -668,21 +683,21 @@
for (i=tl->min;i<=tl->max;i++)
{
@@ -183,7 +198,7 @@
i=cddb_main(tl);
if(i==-1) {
-@@ -796,6 +800,7 @@
+@@ -796,6 +811,7 @@
struct Wavefile header;
int fd,bytes,i,n,q,space;
int bcount, sc, missing, speed = 0, ldp, now;
@@ -191,7 +206,7 @@
if(tn<tl->min || tn>tl->max) return (-1);
space = ((tl->starts[tn-tl->min+1]-tl->starts[tn-tl->min]) *
-@@ -879,8 +884,10 @@
+@@ -879,8 +895,10 @@
d = p1[c];
buf3[c] = ((short)(d&65535) + (short)(d>>16)) >> 1;
}
@@ -204,7 +219,7 @@
fprintf(stderr,"%s: error writing wave file %s: %s\n",
progname,nam,strerror(errno));
exit(1);
-@@ -896,7 +903,17 @@
+@@ -896,7 +914,17 @@
/* dump last bytes */
if (bytes<(tl->starts[tn+1]-tl->starts[tn])*CD_FRAMESIZE_RAW){
n=(tl->starts[tn+1]-tl->starts[tn])*CD_FRAMESIZE_RAW-bytes;
@@ -223,7 +238,7 @@
fprintf(stderr,"%s: error writing wave file %s: %s\n",progname,nam,strerror(errno));
exit(1);
};
-@@ -961,7 +978,7 @@
+@@ -961,7 +989,7 @@
int main(int ac,char **av)
{
int i,l,disp_TOC=0;
@@ -232,7 +247,7 @@
int all_tracks=0;
struct cd_trk_list tl;
char cd_dev[BLEN+1]=CDDEVICE;
-@@ -969,10 +986,8 @@
+@@ -969,10 +997,8 @@
char filter[BLEN+1] = "";
char path[500];
FILE *f;
More information about the freebsd-ports-bugs
mailing list