Date: Thu, 20 Nov 2003 20:00:11 +0400 (SAMT) From: "Sergey V. Belov" <argail@visit.ru> To: FreeBSD-gnats-submit@FreeBSD.org Cc: argail@visit.ru Subject: ports/59514: audio/xmms-cdread fix to work under -CURRENT too Message-ID: <200311201600.hAKG0BtJ000821@dexter.csite.ru> Resent-Message-ID: <200311201610.hAKGAIRf077741@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>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@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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200311201600.hAKG0BtJ000821>