$NetBSD: patch-aa,v 1.3 2013/01/22 10:42:06 jperkin Exp $

- Add support for DragonFly
- Fix output on OSX, and use raw disk device.

--- cd-discid.c.orig	2013-01-22 10:30:56.000000000 +0000
+++ cd-discid.c	2013-01-22 10:34:05.000000000 +0000
@@ -50,7 +50,7 @@
 /* __FreeBSD_kernel__ is needed for properly compiling on Debian GNU/kFreeBSD
  Look at http://glibc-bsd.alioth.debian.org/porting/PORTING for more info */
 
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
 
 #include <sys/cdio.h>
 #define        CDROM_LBA       CD_LBA_FORMAT   /* first frame is 0 */
@@ -100,7 +100,7 @@
 #define        cdth_trk1       lastTrackNumberInLastSessionLSB
 #define        cdrom_tocentry  CDTrackInfo
 #define	       cdte_track_address trackStartAddress
-#define        DEVICE_NAME     "/dev/disk1"
+#define        DEVICE_NAME     "/dev/rdisk1"
 
 #else
 # error "Your OS isn't supported yet."
@@ -221,7 +221,7 @@
 	 * TocEntry[last-1].lastRecordedAddress + 1, so we compute the start
 	 * of leadout from the start+length of the last track instead
 	 */
-	TocEntry[last].cdte_track_address = TocEntry[last-1].trackSize + TocEntry[last-1].trackStartAddress;
+	TocEntry[last].cdte_track_address = htonl(ntohl(TocEntry[last-1].trackSize) + ntohl(TocEntry[last-1].trackStartAddress));
 #else /* FreeBSD, Linux, Solaris */
 	for (i=0; i < last; i++) {
 		/* tracks start with 1, but I must start with 0 on OpenBSD */
@@ -241,12 +241,12 @@
 	}
 #endif
 
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__APPLE__)
 	TocEntry[i].cdte_track_address = ntohl(TocEntry[i].cdte_track_address);
 #endif       
 
 	for (i=0; i < last; i++) {
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__APPLE__)
 		TocEntry[i].cdte_track_address = ntohl(TocEntry[i].cdte_track_address);
 #endif
 		cksum += cddb_sum((TocEntry[i].cdte_track_address + CD_MSF_OFFSET) / CD_FRAMES);
