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