ports/59514: audio/xmms-cdread fix to work under -CURRENT too
Sergey V. Belov
argail at visit.ru
Thu Nov 20 16:10:20 UTC 2003
>Number: 59514
>Category: ports
>Synopsis: audio/xmms-cdread fix to work under -CURRENT too
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: maintainer-update
>Submitter-Id: current-users
>Arrival-Date: Thu Nov 20 08:10:17 PST 2003
>Closed-Date:
>Last-Modified:
>Originator: Sergey V. Belov
>Release: FreeBSD 5.1-CURRENT i386
>Organization:
Sergey V. Belov
>Environment:
System: FreeBSD dexter 5.1-CURRENT FreeBSD 5.1-CURRENT #4: Sat Nov 15 22:02:17 SAMT 2003 root at dexter:/usr/obj/usr/src/sys/DEXTER3 i386
>Description:
Under FreeBSD-CURRENT, audio/xmms-cdread port would
not work because of CDIOCREADAUDIO ioctl removal from
ATA/ATAPI driver.
>How-To-Repeat:
audio/xmms-cdread ports is not building under -CURRENT
>Fix:
--- xmms-cdread.diff begins here ---
diff -ruN xmms-cdread.bak/files/patch-cdrombsd.h xmms-cdread/files/patch-cdrombsd.h
--- xmms-cdread.bak/files/patch-cdrombsd.h Sun Mar 23 11:51:47 2003
+++ xmms-cdread/files/patch-cdrombsd.h Thu Nov 20 19:25:03 2003
@@ -1,6 +1,16 @@
---- cdrombsd.h.orig Sat Aug 18 19:09:10 2001
-+++ cdrombsd.h Sun Mar 23 16:35:33 2003
-@@ -9,12 +9,9 @@
+--- cdrombsd.h.orig Sat Aug 18 15:09:10 2001
++++ cdrombsd.h Thu Nov 20 19:24:05 2003
+@@ -5,15 +5,19 @@
+ #ifndef CDROMBSD_H
+ #define CDROMBSD_H
+ #include <sys/param.h>
++#if __FreeBSD_version >= 501106
++#include <sys/cdrio.h>
++#ifndef CD_FRAMESIZE_RAW
++#define CD_FRAMESIZE_RAW 2352
++#endif
++#endif
+ /*\
|*| FreeBSD (?) specific code
\*/
@@ -9,10 +19,34 @@
- ((entry.addr.msf.minute * 60 + \
- entry.addr.msf.second) * 75 + \
- entry.addr.msf.frame))
--
+#define GET_LBA(entry) ((entry.addr.msf.minute * 60 \
+ + entry.addr.msf.second) * 75 \
+ + entry.addr.msf.frame)
+
/*\
- |*| Open cdrom device
+@@ -84,6 +88,16 @@
+ |*| from device cdfd, at position lba
+ |*| Return number of successfully read frames, -1 on error.
+ \*/
++#if __FreeBSD_version >= 501106
++static int
++cdrom_read_audio(int cdfd, int lba, char *buf, int btw)
++{
++ int bsize = CD_FRAMESIZE_RAW;
++ if (ioctl(cdfd, CDRIOCSETBLOCKSIZE, &bsize) == -1) return -errno;
++ if (pread(cdfd, buf, btw*bsize, (lba - 150)*bsize) != btw*bsize) return 0;
++ return btw;
++}
++#else // 4-STABLE
+ static int
+ cdrom_read_audio(int cdfd, int lba, char *buf, int btw)
+ {
+@@ -101,6 +115,7 @@
+ } while (--rtr >= 0);
+ return -1;
+ }
++#endif // FreeBSD_version
+
+ /*\ Play audio from lba address from, to lba address to
+ |*| return -1 on failure
--- xmms-cdread.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list