head 1.2; access; symbols pkgsrc-2013Q2:1.2.0.52 pkgsrc-2013Q2-base:1.2 pkgsrc-2012Q4:1.2.0.50 pkgsrc-2012Q4-base:1.2 pkgsrc-2011Q4:1.2.0.48 pkgsrc-2011Q4-base:1.2 pkgsrc-2011Q2:1.2.0.46 pkgsrc-2011Q2-base:1.2 pkgsrc-2009Q4:1.2.0.44 pkgsrc-2009Q4-base:1.2 pkgsrc-2008Q4:1.2.0.42 pkgsrc-2008Q4-base:1.2 pkgsrc-2008Q3:1.2.0.40 pkgsrc-2008Q3-base:1.2 cube-native-xorg:1.2.0.38 cube-native-xorg-base:1.2 pkgsrc-2008Q2:1.2.0.36 pkgsrc-2008Q2-base:1.2 pkgsrc-2008Q1:1.2.0.34 pkgsrc-2008Q1-base:1.2 pkgsrc-2007Q4:1.2.0.32 pkgsrc-2007Q4-base:1.2 pkgsrc-2007Q3:1.2.0.30 pkgsrc-2007Q3-base:1.2 pkgsrc-2007Q2:1.2.0.28 pkgsrc-2007Q2-base:1.2 pkgsrc-2007Q1:1.2.0.26 pkgsrc-2007Q1-base:1.2 pkgsrc-2006Q4:1.2.0.24 pkgsrc-2006Q4-base:1.2 pkgsrc-2006Q3:1.2.0.22 pkgsrc-2006Q3-base:1.2 pkgsrc-2006Q2:1.2.0.20 pkgsrc-2006Q2-base:1.2 pkgsrc-2006Q1:1.2.0.18 pkgsrc-2006Q1-base:1.2 pkgsrc-2005Q4:1.2.0.16 pkgsrc-2005Q4-base:1.2 pkgsrc-2005Q3:1.2.0.14 pkgsrc-2005Q3-base:1.2 pkgsrc-2005Q2:1.2.0.12 pkgsrc-2005Q2-base:1.2 pkgsrc-2005Q1:1.2.0.10 pkgsrc-2005Q1-base:1.2 pkgsrc-2004Q4:1.2.0.8 pkgsrc-2004Q4-base:1.2 pkgsrc-2004Q3:1.2.0.6 pkgsrc-2004Q3-base:1.2 pkgsrc-2004Q2:1.2.0.4 pkgsrc-2004Q2-base:1.2 pkgsrc-2004Q1:1.2.0.2 pkgsrc-2004Q1-base:1.2; locks; strict; comment @# @; 1.2 date 2004.02.22.16.40.16; author jmmv; state dead; branches; next 1.1; 1.1 date 2003.12.31.02.30.22; author xtraeme; state Exp; branches; next ; desc @@ 1.2 log @Moved to the multimedia category. @ text @$NetBSD: patch-ag,v 1.1 2003/12/31 02:30:22 xtraeme Exp $ --- gnome-cd/bsd-cdrom.c.orig 2003-01-11 06:23:03.000000000 -0600 +++ gnome-cd/bsd-cdrom.c @@@@ -20,7 +20,7 @@@@ #endif #include -#include "freebsd-cdrom.h" +#include "bsd-cdrom.h" #define CD_FRAMES 75 @@@@ -166,7 +166,12 @@@@ freebsd_cdrom_update_cd (GnomeCDRom *cdr { FreeBSDCDRom *lcd = FREEBSD_CDROM (cdrom); FreeBSDCDRomPrivate *priv; +#ifdef __FreeBSD__ struct ioc_read_toc_single_entry tocentry; +#else + struct ioc_read_toc_entry tocentries; + struct cd_toc_entry tocentry; +#endif int i, j; GError *error; @@@@ -190,29 +195,53 @@@@ freebsd_cdrom_update_cd (GnomeCDRom *cdr freebsd_cdrom_invalidate (lcd); priv->track_info = g_malloc ((priv->number_tracks + 1) * sizeof (FreeBSDCDRomTrackInfo)); +#ifdef __FreeBSD__ for (i = 0, j = priv->track0; i < priv->number_tracks; i++, j++) { tocentry.track = j; tocentry.address_format = CD_MSF_FORMAT; +#else + tocentries.data_len = sizeof(tocentry); + tocentries.data = &tocentry; + for (i = 0, j = priv->track0; i < priv->number_tracks; i++, j++) { + tocentries.starting_track = j; + tocentries.address_format = CD_MSF_FORMAT; +#endif - if (ioctl (cdrom->fd, CDIOREADTOCENTRY, &tocentry) < 0) { + if (ioctl (cdrom->fd, CDIOREADTOCENTRYS, &tocentries) < 0) { g_warning ("IOCtl failed"); continue; } priv->track_info[i].track = j; +#ifdef __FreeBSD__ priv->track_info[i].audio_track = tocentry.entry.control == 0 ? 1 : 0; ASSIGN_MSF (priv->track_info[i].address, tocentry.entry.addr.msf); +#else + priv->track_info[i].audio_track = tocentry.control == 0 ? 1 : 0; + ASSIGN_MSF (priv->track_info[i].address, tocentry.addr.msf); +#endif } +#ifdef __FreeBSD__ /* On FreeBSD, the leadout track is the track LAST_TRACK + 1. */ tocentry.track = priv->number_tracks + 1; tocentry.address_format = CD_MSF_FORMAT; if (ioctl (cdrom->fd, CDIOREADTOCENTRY, &tocentry) < 0) { +#else + /* On NetBSD, the leadout track is the track 0xAA. */ + tocentries.starting_track = 0xAA; + tocentries.address_format = CD_MSF_FORMAT; + if (ioctl (cdrom->fd, CDIOREADTOCENTRYS, &tocentries) < 0) { +#endif g_warning ("Error getting leadout"); freebsd_cdrom_invalidate (lcd); return; } +#ifdef __FreeBSD__ ASSIGN_MSF (priv->track_info[priv->number_tracks].address, tocentry.entry.addr.msf); +#else + ASSIGN_MSF (priv->track_info[priv->number_tracks].address, tocentry.addr.msf); +#endif calculate_track_lengths (lcd); freebsd_cdrom_close (lcd); @@@@ -232,11 +261,18 @@@@ freebsd_cdrom_eject (GnomeCDRom *cdrom, return FALSE; } +#ifdef __FreeBSD__ if (gnome_cdrom_get_status (cdrom, &status, error) == FALSE) { freebsd_cdrom_close (lcd); g_free (status); return FALSE; } +#else + status = g_new0 (GnomeCDRomStatus, 1); + status->volume = 0; + status->cd = GNOME_CDROM_STATUS_OK; + ioctl(cdrom->fd, CDIOCALLOW); +#endif if (status->cd != GNOME_CDROM_STATUS_TRAY_OPEN) { if (ioctl (cdrom->fd, CDIOCEJECT, 0) < 0) { @@@@ -862,7 +898,19 @@@@ freebsd_cdrom_get_status (GnomeCDRom *cd return FALSE; } #endif +#ifdef __FreeBSD__ /* FIXME: Figure out how to do this on FreeBSD */ +#else + if (ioctl (cdrom->fd, CDIOREADTOCHEADER, priv->tochdr) < 0) { + realstatus->cd = GNOME_CDROM_STATUS_NO_DISC; + realstatus->audio = GNOME_CDROM_AUDIO_NOTHING; + realstatus->track = -1; + + freebsd_cdrom_close (lcd); + return TRUE; + } + subchnl.track = 0; +#endif realstatus->cd = GNOME_CDROM_STATUS_OK; subchnl.address_format = CD_MSF_FORMAT; @ 1.1 log @Update to 2.4.1.1, Thanks to Min Sik Kim for his help. Bugs were fixed, features were added, etc. Please review Changelog file to see a full list of changes. @ text @d1 1 a1 1 $NetBSD$ @