Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 6 Mar 1999 20:08:46 +0200 (SAT)
From:      reg@shale.csir.co.za
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   ports/10434: New port: gnome-media-1.0.1
Message-ID:  <199903061808.UAA96762@shale.csir.co.za>

next in thread | raw e-mail | index | archive | help

>Number:         10434
>Category:       ports
>Synopsis:       New port: gnome-media-1.0.1
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat Mar  6 10:10:01 PST 1999
>Closed-Date:
>Last-Modified:
>Originator:     Jeremy Lea
>Release:        FreeBSD 4.0-CURRENT i386
>Organization:
Arb's Inc.
>Environment:

	FreeBSD Ports Collection.

>Description:

	This is a port of the GNOME Multimedia package, including gtcd,
	a CDDB aware CD player, and gmix, a mixer control.  I added BSD
	style ioctl support (in patch-ae), so please report problems to
	me.

>How-To-Repeat:

	

>Fix:
	
	
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	.
#	./files
#	./files/md5
#	./patches
#	./patches/patch-aa
#	./patches/patch-ab
#	./patches/patch-ac
#	./patches/patch-ad
#	./patches/patch-ae
#	./pkg
#	./pkg/COMMENT
#	./pkg/DESCR
#	./pkg/PLIST
#	./Makefile
#
echo c - .
mkdir -p . > /dev/null 2>&1
echo c - ./files
mkdir -p ./files > /dev/null 2>&1
echo x - ./files/md5
sed 's/^X//' >./files/md5 << 'END-of-./files/md5'
XMD5 (gnome-media-1.0.1.tar.gz) = 34c5fa120431aa3ff07b087cbc7cdcdf
END-of-./files/md5
echo c - ./patches
mkdir -p ./patches > /dev/null 2>&1
echo x - ./patches/patch-aa
sed 's/^X//' >./patches/patch-aa << 'END-of-./patches/patch-aa'
X--- configure.orig	Tue Mar  2 00:30:17 1999
X+++ configure	Sat Mar  6 19:22:06 1999
X@@ -4480,7 +4480,7 @@
X   cat conftest.$ac_ext >&5
X   rm -rf conftest*
X   CATOBJEXT=.mo
X-		   DATADIRNAME=lib
X+		   DATADIRNAME=share
X fi
X rm -f conftest*
X 		INSTOBJEXT=.mo
END-of-./patches/patch-aa
echo x - ./patches/patch-ab
sed 's/^X//' >./patches/patch-ab << 'END-of-./patches/patch-ab'
X--- ltconfig.orig	Tue Mar  2 00:30:01 1999
X+++ ltconfig	Sat Mar  6 18:38:36 1999
X@@ -1225,7 +1225,7 @@
X     ;;
X 
X   # FreeBSD 3, at last, uses gcc -shared to do shared libraries.
X-  freebsd3*)
X+  freebsd*)
X     archive_cmds='$CC -shared -o $lib $libobjs $deplibs'
X     hardcode_libdir_flag_spec='-R$libdir'
X     hardcode_direct=yes
X@@ -1661,7 +1661,7 @@
X   shlibpath_var=PATH
X   ;;
X 
X-freebsd2* | freebsd3*)
X+freebsd*)
X   objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
X   version_type=freebsd-$objformat
X   library_names_spec='${libname}${release}.so$versuffix $libname.so'
END-of-./patches/patch-ab
echo x - ./patches/patch-ac
sed 's/^X//' >./patches/patch-ac << 'END-of-./patches/patch-ac'
X--- vu-meter/Makefile.in.orig	Wed Mar  3 12:35:57 1999
X+++ vu-meter/Makefile.in	Wed Mar  3 12:36:25 1999
X@@ -116,9 +116,9 @@
X ZVT_LIBS = @ZVT_LIBS@
X l = @l@
X 
X-Audiodir = $(datadir)/gnome/apps/Multimedia
X+Audiodir = $(datadir)/apps/Multimedia
X 
X-INCLUDES =  	-DGNOMELOCALEDIR=\""$(datadir)/locale"\" 	$(GNOME_INCLUDEDIR)
X+INCLUDES =  	-DGNOMELOCALEDIR=\""$(prefix)/share/locale"\" 	$(GNOME_INCLUDEDIR)
X 
X 
X bin_PROGRAMS = vumeter
X--- gmix/Makefile.in.orig	Sat Feb 27 09:22:00 1999
X+++ gmix/Makefile.in	Wed Mar  3 12:37:46 1999
X@@ -116,11 +116,11 @@
X ZVT_LIBS = @ZVT_LIBS@
X l = @l@
X 
X-Audiodir = $(datadir)/gnome/apps/Multimedia
X+Audiodir = $(datadir)/apps/Multimedia
X 
X EXTRA_DIST = README TODO NEWS gmix.desktop
X 
X-INCLUDES =  	-DGNOMELOCALEDIR=\""$(datadir)/locale"\"		$(GNOME_INCLUDEDIR)
X+INCLUDES =  	-DGNOMELOCALEDIR=\""$(prefix)/share/locale"\"		$(GNOME_INCLUDEDIR)
X 
X 
X bin_PROGRAMS = gmix
X--- tcd/Makefile.in.orig	Sat Feb 27 09:22:02 1999
X+++ tcd/Makefile.in	Wed Mar  3 12:38:28 1999
X@@ -116,7 +116,7 @@
X ZVT_LIBS = @ZVT_LIBS@
X l = @l@
X 
X-Audiodir = $(datadir)/gnome/apps/Multimedia
X+Audiodir = $(datadir)/apps/Multimedia
X 
X EXTRA_DIST = README TODO NEWS gtcd.desktop
X 
X@@ -141,7 +141,7 @@
X 
X CLEANFILES = *~
X 
X-INCLUDES = -I$(includedir) $(GNOME_INCLUDEDIR) $(CURSES_INCLUDEDIR) 	-DGNOMELOCALEDIR=\""$(datadir)/locale"\" $(USE_CD_CHANGER) -g
X+INCLUDES = -I$(includedir) $(GNOME_INCLUDEDIR) $(CURSES_INCLUDEDIR) 	-DGNOMELOCALEDIR=\""$(prefix)/share/locale"\" $(USE_CD_CHANGER) -g
X 
X 
X Audio_DATA = gtcd.desktop
END-of-./patches/patch-ac
echo x - ./patches/patch-ad
sed 's/^X//' >./patches/patch-ad << 'END-of-./patches/patch-ad'
X--- gmix/gmix.c.orig	Fri Feb 19 18:30:49 1999
X+++ gmix/gmix.c	Wed Mar  3 10:49:51 1999
X@@ -94,6 +94,17 @@
X /* 
X  * All, that is known about a mixer-device
X  */
X+
X+#if !defined(OPEN_SOUND_SYSTEM)
X+typedef struct mixer_info
X+{
X+  char id[16];
X+  char name[32];
X+  int  modify_counter;
X+  int fillers[10];
X+} mixer_info;
X+#endif
X+
X typedef struct device_info {
X 	int fd;
X 	mixer_info info;
X@@ -272,11 +283,7 @@
X 	/*
X 	 * open the mixer-device
X 	 */
X-	if (num==0) {
X-		sprintf(device_name, "/dev/mixer");
X-	} else {
X-		sprintf(device_name, "/dev/mixer%i", num);
X-	}
X+	sprintf(device_name, "/dev/mixer%i", num);
X 	new_device->fd=open(device_name, O_RDWR, 0);
X 	if (new_device->fd<0) {
X 		free(new_device);
X@@ -291,6 +298,8 @@
X 		fprintf(stderr, "Warning: This version of gmix was compiled with a different version of\nsoundcard.h.\n");
X 	}
X #endif
X+
X+#if defined(OPEN_SOUND_SYSTEM)
X 	/*
X 	 * mixer-name
X 	 */
X@@ -301,6 +310,11 @@
X 	}
X 	if(!isalpha(new_device->info.name[0]))
X 		g_snprintf(new_device->info.name, 31, "Card %d", num+1);
X+#else
X+	g_snprintf(new_device->info.id, 15, "mixer%d", num);
X+	g_snprintf(new_device->info.name, 31, "Sound Card %d", num+1);
X+	new_device->info.modify_counter=0;
X+#endif
X 	/* 
X 	 * several bitmasks describing the mixer
X 	 */
X@@ -386,15 +400,15 @@
X {
X 	int cnt;
X 	device_info *new_device;
X-	cnt=0; devices=NULL;
X+	cnt=0; num_mixers=0; devices=NULL;
X 	do {
X 		new_device=open_device(cnt++);
X 		if (new_device) {
X 			new_device->channels=make_channels(new_device);
X 			devices=g_list_append(devices, new_device);
X+			num_mixers++;
X 		}
X-	} while (new_device);
X-	num_mixers=cnt-1;
X+	} while ((errno == EACCES) || (errno == EINVAL) || new_device);
X }
X 
X void free_one_device(gpointer a, gpointer b)
END-of-./patches/patch-ad
echo x - ./patches/patch-ae
sed 's/^X//' >./patches/patch-ae << 'END-of-./patches/patch-ae'
X--- tcd/callbacks.c.orig	Sun Feb 21 20:32:04 1999
X+++ tcd/callbacks.c	Wed Mar  3 10:57:00 1999
X@@ -10,7 +10,7 @@
X 
X void play_cb(GtkWidget *widget, gpointer data)
X {
X-    if(cd.sc.cdsc_audiostatus==CDROM_AUDIO_PAUSED)
X+    if(SC_AUDIOSTATUS(cd.sc)==CDROM_AUDIO_PAUSED)
X 	tcd_pausecd(&cd);
X     else
X 	tcd_playtracks(&cd, cd.first_t, cd.last_t, prefs.only_use_trkind);
X@@ -42,7 +42,7 @@
X     cd.play_method = NORMAL;
X     cd.repeat_track = -1;
X     /* SDH: Make sure play/pause state change is noticed */
X-    cd.sc.cdsc_audiostatus = -1;
X+    SC_AUDIOSTATUS(cd.sc) = -1;
X     if(cd.isplayable)
X     {
X 	make_goto_menu();
X--- tcd/cddb.c.orig	Sat Feb 20 23:08:10 1999
X+++ tcd/cddb.c	Wed Mar  3 10:57:00 1999
X@@ -120,16 +120,16 @@
X 	{
X 		int min, sec;
X 		
X-		min = cd->trk[i].toc.cdte_addr.msf.minute;
X-		sec = cd->trk[i].toc.cdte_addr.msf.second;
X+		min = TOC_MINUTE(cd->trk[i]);
X+		sec = TOC_MINUTE(cd->trk[i]);
X 	
X 		n = (min*60)+sec;
X-		fprintf( fp, "# %u\n", (n*75)+cd->trk[i].toc.cdte_addr.msf.frame );
X+		fprintf( fp, "# %u\n", (n*75)+TOC_FRAME(cd->trk[i]) );
X 	}
X 	/* Print the number of seconds */
X 	fprintf( fp, "#\n# Disc length: %i seconds\n", 
X-		(cd->trk[cd->last_t+1].toc.cdte_addr.msf.minute*60)
X-                +(cd->trk[cd->last_t+1].toc.cdte_addr.msf.second) );
X+		(TOC_MINUTE(cd->trk[cd->last_t+1])*60)
X+		+(TOC_SECOND(cd->trk[cd->last_t+1])) );
X 
X 	/* FIXME increment revision. sigh, lousy cddb */
X 	fprintf( fp, "#\n# Revision: 0\n" );
X@@ -160,10 +160,10 @@
X     {
X 	int min, sec;
X 	
X-	min = cd->trk[i].toc.cdte_addr.msf.minute;
X-	sec = cd->trk[i].toc.cdte_addr.msf.second;
X+	min = TOC_MINUTE(cd->trk[i]);
X+	sec = TOC_SECOND(cd->trk[i]);
X         
X-	l=sprintf( tmp, "%u ", calc_offset(min,sec,cd->trk[i].toc.cdte_addr.msf.frame));
X+	l=sprintf( tmp, "%u ", calc_offset(min,sec,TOC_FRAME(cd->trk[i])));
X 	
X 	if(blen>l)
X 	{
X@@ -172,8 +172,8 @@
X 	}
X     }
X     l=sprintf( tmp, "%i\n",
X-	       (cd->trk[cd->last_t+1].toc.cdte_addr.msf.minute*60)
X-	       +(cd->trk[cd->last_t+1].toc.cdte_addr.msf.second) );
X+	       (TOC_MINUTE(cd->trk[cd->last_t+1])*60)
X+	       +(TOC_SECOND(cd->trk[cd->last_t+1])) );
X     if(blen>l)
X 	strcat( buf,tmp );
X 
X@@ -203,9 +203,9 @@
X 
X 	for( i=0; i <= cd->last_t+1; i++ )
X 	{
X- 		cdtoc[i].frame = cd->trk[i+1].toc.cdte_addr.msf.frame;
X- 		cdtoc[i].min = cd->trk[i+1].toc.cdte_addr.msf.minute;
X- 		cdtoc[i].sec = cd->trk[i+1].toc.cdte_addr.msf.second;
X+ 		cdtoc[i].frame = TOC_FRAME(cd->trk[i+1]);
X+ 		cdtoc[i].min = TOC_MINUTE(cd->trk[i+1]);
X+ 		cdtoc[i].sec = TOC_SECOND(cd->trk[i+1]);
X  	}
X  	
X 
X--- tcd/gtcd.c.orig	Wed Feb 24 02:48:49 1999
X+++ tcd/gtcd.c	Wed Mar  3 10:57:00 1999
X@@ -408,8 +408,8 @@
X 	break;
X     case DISC_R:
X 	cur = cd.cur_pos_abs;
X-	end = (cd.trk[cd.last_t+1].toc.cdte_addr.msf.minute
X-	       *60)+cd.trk[cd.last_t+1].toc.cdte_addr.msf.second;
X+	end = (TOC_MINUTE(cd.trk[cd.last_t+1])*60
X+		+TOC_SECOND(cd.trk[cd.last_t+1]));
X 	pos = end-cur;
X 	min = pos/60;
X 	sec = pos-(pos/60)*60;
X@@ -490,7 +490,7 @@
X 
X     if( !cd.err )
X     {
X-	switch( cd.sc.cdsc_audiostatus )
X+	switch( SC_AUDIOSTATUS(cd.sc) )
X 	{
X 	case CDROM_AUDIO_INVALID:
X 	    strcpy(tmp, _("No Disc"));
X@@ -577,8 +577,8 @@
X     }
X 
X     /* see if we need to repeat */
X-    if( cd.sc.cdsc_audiostatus != CDROM_AUDIO_PLAY &&
X-	cd.sc.cdsc_audiostatus != CDROM_AUDIO_PAUSED )
X+    if( SC_AUDIOSTATUS(cd.sc) != CDROM_AUDIO_PLAY &&
X+	SC_AUDIOSTATUS(cd.sc) != CDROM_AUDIO_PAUSED )
X     {
X 	if( cd.play_method == REPEAT_CD )
X 	    tcd_playtracks( &cd, cd.first_t, cd.last_t, prefs.only_use_trkind);
X@@ -593,14 +593,14 @@
X 
X void status_changed(void)
X {
X-    if(old_status != cd.sc.cdsc_audiostatus)
X+    if(old_status != SC_AUDIOSTATUS(cd.sc))
X     {
X 	GtkWidget *pixmap;
X 	GtkSignalFunc func;
X 	char tmp[256];
X 	char *name;
X 	
X-	old_status = cd.sc.cdsc_audiostatus;
X+	old_status = SC_AUDIOSTATUS(cd.sc);
X 	g_snprintf(tmp, 255, "tcd/%s.xpm", 
X 		    (old_status==CDROM_AUDIO_PLAY)?"pause":"play");
X 
X--- tcd/gtracked.c.orig	Thu Feb 11 18:48:56 1999
X+++ tcd/gtracked.c	Wed Mar  3 10:57:00 1999
X@@ -166,8 +166,8 @@
X     /* Disc area */
X     disc_table  = gtk_table_new(2, 2, FALSE);
X     g_snprintf(tmp, 63, _("Disc Information (%02u:%02u minutes)"),
X-	       cd.trk[cd.last_t+1].toc.cdte_addr.msf.minute,
X-	       cd.trk[cd.last_t+1].toc.cdte_addr.msf.second);
X+	       TOC_MINUTE(cd.trk[cd.last_t+1]),
X+	       TOC_SECOND(cd.trk[cd.last_t+1]));
X 	              
X     disc_frame = gtk_frame_new(tmp);
X     label 	   = gtk_label_new(_("Artist / Title"));
X--- tcd/linux-cdrom.c.orig	Tue Feb 23 06:52:46 1999
X+++ tcd/linux-cdrom.c	Wed Mar  3 10:57:00 1999
X@@ -77,7 +77,7 @@
X     if(!homedir)
X 	homedir = "/";
X     
X-#if defined(TCD_CHANGER_ENABLED)
X+#if defined(TCD_CHANGER_ENABLED) && !defined(TCD_BSD)
X     cd->nslots = ioctl( cd->cd_dev, CDROM_CHANGER_NSLOTS );
X #else
X     cd->nslots = 0;
X@@ -120,34 +120,58 @@
X 
X int tcd_readtoc( cd_struct *cd )
X {
X-    int tmp,i;
X+    int i;
X     int delsecs;
X+#ifdef TCD_BSD
X+    struct ioc_read_toc_single_entry tocentry;
X+#endif
X 
X     debug("cdrom.c: tcd_readtoc(%p) top\n", cd );
X     cd->err = FALSE;
X     cd->isplayable=FALSE;
X 	
X     /* read the TOC header */
X+#ifdef TCD_BSD
X+    if(ioctl( cd->cd_dev, CDIOREADTOCHEADER, &cd->tochdr))
X+#else
X     if(ioctl( cd->cd_dev, CDROMREADTOCHDR, &cd->tochdr))
X+#endif
X     {
X 	strcpy( cd->errmsg, "Can't read disc." );
X 	cd->err = TRUE;
X 	debug("cdrom.c: tcd_readtoc exiting prematurly. CDROMREADTOCHDR ioctl error.\n" );
X 	cd->cur_t = 0;
X 	cd->cddb_id = 0;
X+#ifdef TCD_BSD
X+	ioctl( cd->cd_dev, CDIOCALLOW);
X+#endif
X 	return(-1);		
X     }
X 
X     /* grab first & last tracks */
X+#ifdef TCD_BSD
X+    cd->first_t = cd->tochdr.starting_track;
X+    cd->last_t = cd->tochdr.ending_track;
X+#else
X     cd->first_t = cd->tochdr.cdth_trk0;
X     cd->last_t = cd->tochdr.cdth_trk1;
X+#endif
X 
X     /* read the leadout track */
X+#ifdef TCD_BSD
X+    tocentry.track = cd->last_t+1;  /* Magic last track */
X+    tocentry.address_format = CD_MSF_FORMAT;
X+#else
X     cd->trk[C(cd->last_t+1)].toc.cdte_track = CDROM_LEADOUT;
X     cd->trk[C(cd->last_t+1)].toc.cdte_format = CDROM_MSF;
X+#endif
X 
X     /* read the leadout toc */
X+#ifdef TCD_BSD
X+    if(ioctl(cd->cd_dev, CDIOREADTOCENTRY, &tocentry))
X+#else
X     if(ioctl(cd->cd_dev, CDROMREADTOCENTRY, &cd->trk[C(cd->last_t+1)].toc))
X+#endif
X     {
X 	strcpy(cd->errmsg, "Can't read disc.");
X 	cd->err = TRUE;
X@@ -155,40 +179,65 @@
X 	debug("cdrom.c: tcd_readtoc exiting prematurly. CDROMREADTOCENTRY ioctl error.\n" );
X 	cd->cur_t = 0;
X 	cd->cddb_id = 0;
X+#ifdef TCD_BSD
X+	ioctl( cd->cd_dev, CDIOCALLOW);
X+#endif
X 	return(-1);
X     }                                         
X+#ifdef TCD_BSD
X+    cd->trk[C(cd->last_t+1)].toc = tocentry.entry;
X+#endif
X+    cd->trk[C(cd->last_t+1)].length = TOC_MINUTE(cd->trk[C(cd->last_t+1)]) * 60 +
X+    	TOC_SECOND(cd->trk[C(cd->last_t+1)]);
X+    cd->trk[C(cd->last_t+1)].start = cd->trk[C(cd->last_t+1)].length * 75 + 
X+    	TOC_FRAME(cd->trk[C(cd->last_t+1)]);
X 
X     /* read the rest of the tocs */
X     for( i = cd->first_t; i <= cd->last_t; i++ )
X     {
X+#ifdef TCD_BSD
X+        tocentry.track = i;
X+        tocentry.address_format = CD_MSF_FORMAT;
X+#else
X 	cd->trk[C(i)].toc.cdte_track = i;
X 	cd->trk[C(i)].toc.cdte_format = CDROM_MSF;
X+#endif
X 	
X+#ifdef TCD_BSD
X+	if(ioctl(cd->cd_dev, CDIOREADTOCENTRY, &tocentry))
X+#else
X 	if(ioctl(cd->cd_dev, CDROMREADTOCENTRY, &cd->trk[C(i)].toc))
X+#endif
X 	{
X 	    strcpy( cd->errmsg, "Can't read disc." );
X 	    cd->err = TRUE;
X 	    debug("cdrom.c: tcd_readtoc exiting prematurly. CDROMREADTOCENTRY ioctl error.\n" );
X 	    cd->cur_t = 0;
X 	    cd->cddb_id = 0;
X+#ifdef TCD_BSD
X+	ioctl( cd->cd_dev, CDIOCALLOW);
X+#endif
X 	    return(-1);
X 	}
X 
X+#ifdef TCD_BSD
X+        cd->trk[C(i)].toc = tocentry.entry;
X+	cd->trk[C(i)].type = cd->trk[C(i)].toc.control;
X+#else
X 	cd->trk[C(i)].type = cd->trk[C(i)].toc.cdte_ctrl;
X-	cd->trk[C(i)].length = cd->trk[C(i)].toc.cdte_addr.msf.minute * 60 +
X-	    cd->trk[C(i)].toc.cdte_addr.msf.second;
X+#endif
X+	cd->trk[C(i)].length = TOC_MINUTE(cd->trk[C(i)]) * 60 +
X+	    TOC_SECOND(cd->trk[C(i)]);
X 	cd->trk[C(i)].start = cd->trk[C(i)].length * 75 + 
X-	    cd->trk[C(i)].toc.cdte_addr.msf.frame;
X+	    TOC_FRAME(cd->trk[C(i)]);
X     }
X 
X     /* calculate track times */
X     for(i = cd->first_t; i <= cd->last_t; i ++)
X     {
X 	/* Taken from cdtool...Thanks Thomas I.! */
X-	delsecs = cd->trk[C(i+1)].toc.cdte_addr.msf.minute * 60
X-	    + cd->trk[C(i+1)].toc.cdte_addr.msf.second
X-	    - cd->trk[C(i)].toc.cdte_addr.msf.minute * 60
X-	    - cd->trk[C(i)].toc.cdte_addr.msf.second;
X+	delsecs = cd->trk[C(i+1)].length
X+	    - cd->trk[C(i)].length;
X 
X 	cd->trk[C(i)].tot_min = delsecs / 60;
X 	cd->trk[C(i)].tot_sec = delsecs - (delsecs/60)*60;
X@@ -207,7 +256,7 @@
X 
X     cd->isplayable=TRUE;
X     debug("cdrom.c: tcd_readtoc exiting normally\n" );
X-    return tmp;
X+    return 0;
X }
X 
X void tcd_recalculate(cd_struct *cd)
X@@ -215,9 +264,8 @@
X     int result;
X 
X     /* calculate various timing values */
X-    cd->cur_pos_abs = cd->sc.cdsc_absaddr.msf.minute * 60 +
X-	cd->sc.cdsc_absaddr.msf.second;
X-    cd->cur_frame = cd->cur_pos_abs * 75 + cd->sc.cdsc_absaddr.msf.frame;
X+    cd->cur_pos_abs = SC_MINUTE(cd->sc) * 60 + SC_SECOND(cd->sc);
X+    cd->cur_frame = cd->cur_pos_abs * 75 + SC_FRAME(cd->sc);
X         
X     cd->cur_pos_rel = (cd->cur_frame - cd->trk[C(cd->cur_t)].start) / 75;
X 	
X@@ -235,42 +283,83 @@
X     cd->cd_sec = cd->cur_pos_abs % 60;
X     cd->cd_min = cd->cur_pos_abs / 60;
X 
X-#ifdef TCD_CHANGER_ENABLED
X+#if defined(TCD_CHANGER_ENABLED) & !defined(TCD_BSD)
X     cd->cur_disc = ioctl( cd->cd_dev, CDROM_SELECT_DISC, CDSL_CURRENT );
X #endif
X }
X 
X void tcd_gettime( cd_struct *cd )
X {
X+#ifdef TCD_BSD
X+    struct ioc_read_subchannel subch;
X+#endif
X+
X     cd->err = FALSE;
X+#ifdef TCD_BSD
X+    subch.address_format = CD_MSF_FORMAT;
X+    subch.data_format = CD_CURRENT_POSITION;
X+    subch.data_len = sizeof(cd->sc);
X+    subch.data = &(cd->sc);
X+#else
X     cd->sc.cdsc_format = CDROM_MSF;
X+#endif
X         
X     if(cd->isplayable)
X     {
X+#ifdef TCD_BSD
X+	if(ioctl( cd->cd_dev, CDIOCREADSUBCHANNEL, &subch))
X+#else
X 	if(ioctl( cd->cd_dev, CDROMSUBCHNL, &cd->sc))
X+#endif
X 	{
X 	    strcpy( cd->errmsg, "Can't read disc." );
X 	    cd->err = TRUE;
X 	    debug("cdrom.c: tcd_gettime exiting early. CDROMSUBCHNL ioctl error.\n" );
X 	    cd->cur_t = 0;
X+#ifdef TCD_BSD
X+	    ioctl( cd->cd_dev, CDIOCALLOW);
X+#endif
X 	    return;
X 	}
X-	if(cd->sc.cdsc_audiostatus==CDROM_AUDIO_PLAY)
X-		cd->cur_t = cd->sc.cdsc_trk;
X+	if( SC_AUDIOSTATUS(cd->sc)==CDROM_AUDIO_PLAY )
X+	{
X+#ifdef TCD_BSD
X+	    ioctl( cd->cd_dev, CDIOCPREVENT);
X+#endif
X+	    cd->cur_t = SC_TRACK(cd->sc);
X+	}
X 	else
X-		cd->cur_t = 0;
X+	{
X+#ifdef TCD_BSD
X+	    ioctl( cd->cd_dev, CDIOCALLOW);
X+#endif
X+	    cd->cur_t = 0;
X+	}
X 	tcd_recalculate(cd);
X     }
X }
X 
X int tcd_set_volume(cd_struct *cd, int volume)
X {
X+#ifdef TCD_BSD
X+    struct ioc_vol vol;
X+#else
X     struct cdrom_volctrl vol;
X+#endif
X 
X+#ifdef TCD_BSD
X+    vol.vol[0] = volume;
X+    vol.vol[1] = vol.vol[2] = vol.vol[3] = vol.vol[0];
X+#else
X     vol.channel0 = volume;
X     vol.channel1 = vol.channel2 = vol.channel3 = vol.channel0;
X+#endif
X 	
X+#ifdef TCD_BSD
X+    if(ioctl(cd->cd_dev, CDIOCSETVOL, &vol) < 0)
X+#else
X     if(ioctl(cd->cd_dev, CDROMVOLCTRL, &vol) < 0)
X+#endif
X 	return FALSE;
X 
X     return TRUE;
X@@ -278,6 +367,14 @@
X 
X int tcd_get_volume(cd_struct *cd)
X {
X+#ifdef TCD_BSD
X+    struct ioc_vol vol;
X+
X+    if(ioctl(cd->cd_dev, CDIOCGETVOL, &vol) < 0)
X+	return -1;
X+
X+    return vol.vol[0];
X+#else
X #ifdef CDROMVOLREAD
X     struct cdrom_volctrl vol;
X 
X@@ -287,13 +384,40 @@
X     return vol.channel0;
X #else
X     return 0;
X+#endif    
X #endif
X }	
X 	                                  
X int tcd_playtracks(cd_struct *cd, int start_t, int end_t, int only_use_trkind)
X {
X+#ifdef TCD_BSD
X+    struct ioc_play_msf msf;
X+#define MSF_START_MIN	(msf.start_m)
X+#define MSF_START_SEC	(msf.start_s)
X+#define MSF_START_FRM	(msf.start_f)
X+#define MSF_END_MIN	(msf.end_m)
X+#define MSF_END_SEC	(msf.end_s)
X+#define MSF_END_FRM	(msf.end_f)
X+    struct ioc_play_track trkind;
X+#define TI_START_TRK	(trkind.start_track)
X+#define TI_START_IND	(trkind.start_index)
X+#define TI_END_TRK	(trkind.end_track)
X+#define TI_END_IND	(trkind.end_index)
X+#else
X     struct cdrom_msf msf;
X+#define MSF_START_MIN	(msf.cdmsf_min0)
X+#define MSF_START_SEC	(msf.cdmsf_sec0)
X+#define MSF_START_FRM	(msf.cdmsf_frame0)
X+#define MSF_END_MIN	(msf.cdmsf_min1)
X+#define MSF_END_SEC	(msf.cdmsf_sec1)
X+#define MSF_END_FRM	(msf.cdmsf_frame0)
X     struct cdrom_ti trkind;
X+#define TI_START_TRK	(trkind.cdti_trk0)
X+#define TI_START_IND	(trkind.cdti_ind0)
X+#define TI_END_TRK	(trkind.cdti_trk1)
X+#define TI_END_IND	(trkind.cdti_ind1)
X+#endif
X+
X     int tmp;
X     debug("cdrom.c: tcd_playtracks( %p, %d, %d )\n", cd, start_t, end_t );
X     cd->err = FALSE;
X@@ -302,7 +426,7 @@
X     tcd_gettime(cd);
X     if(cd->err) 
X     {
X-	/* try and inject cd */
X+	/* try and eject cd */
X 	tcd_ejectcd(cd);
X 
X 	if(cd->err) 
X@@ -312,64 +436,88 @@
X 	}
X     }
X 
X+#ifdef TCD_BSD
X+    ioctl(cd->cd_dev, CDIOCCLOSE);
X+#else
X #if defined(CDROMCLOSETRAY)
X     ioctl(cd->cd_dev, CDROMCLOSETRAY);
X-#endif	        
X-	
X-    if(cd->trk[start_t].toc.cdte_ctrl == CDROM_DATA_TRACK)
X-	start_t++;		/* bad hack. most data tracks are the first track... */
X+#endif
X+#endif
X 
X-    msf.cdmsf_min0 = cd->trk[start_t].toc.cdte_addr.msf.minute;
X-    msf.cdmsf_sec0 = cd->trk[start_t].toc.cdte_addr.msf.second;
X-    msf.cdmsf_frame0 = cd->trk[start_t].toc.cdte_addr.msf.frame;
X+    /* bad hack. most data tracks are the first track... */	
X+#ifdef TCD_BSD
X+    if(cd->trk[start_t].toc.control == 0x04)
X+#else
X+    if(cd->trk[start_t].toc.cdte_ctrl == CDROM_DATA_TRACK)
X+#endif
X+	start_t++;
X+	
X+    MSF_START_MIN = TOC_MINUTE(cd->trk[start_t]);
X+    MSF_START_SEC = TOC_SECOND(cd->trk[start_t]);
X+    MSF_START_FRM = TOC_FRAME(cd->trk[start_t]); 
X 	
X     if( end_t < 0 )
X     {
X-	msf.cdmsf_min1 = cd->trk[start_t].tot_min+msf.cdmsf_min0;
X-	msf.cdmsf_sec1 = cd->trk[start_t].tot_sec+msf.cdmsf_sec0;
X-	msf.cdmsf_frame1=0;
X+	MSF_END_MIN = cd->trk[start_t].tot_min+MSF_START_MIN;
X+	MSF_END_SEC = cd->trk[start_t].tot_sec+MSF_START_SEC;
X+	MSF_END_FRM = 0;
X     }
X     else
X     {
X-	msf.cdmsf_min1 = cd->trk[end_t+1].toc.cdte_addr.msf.minute;
X-	msf.cdmsf_sec1 = cd->trk[end_t+1].toc.cdte_addr.msf.second;
X-	msf.cdmsf_frame1 = cd->trk[end_t+1].toc.cdte_addr.msf.frame - 1;
X+	MSF_END_MIN = TOC_MINUTE(cd->trk[end_t+1]);
X+	MSF_END_SEC = TOC_SECOND(cd->trk[end_t+1]);
X+	MSF_END_FRM = TOC_FRAME(cd->trk[end_t+1]) - 1;
X 
X #ifdef UNSIGNED_NUMBERS_CAN_BE_NEGATIVE
X-	if(msf.cdmsf_frame1 < 0)
X+	if(MSF_END_FRM < 0)
X 	{
X-	    msf.cdmsf_sec1 += msf.cdmsf_frame1;
X-	    msf.cdmsf_frame1 = 0;
X+	    MSF_END_SEC += MSF_END_FRM;
X+	    MSF_END_FRM = 0;
X 	}
X-	if(msf.cdmsf_sec1 < 0)
X+	if(MSF_END_SEC < 0)
X 	{
X-	    msf.cdmsf_min1 += msf.cdmsf_sec1;
X-	    msf.cdmsf_sec1 = 0;
X+	    MSF_END_MIN += MSF_END_SEC;
X+	    MSF_END_SEC = 0;
X 	}
X-	if(msf.cdmsf_min1 < 0)
X+	if(MSF_END_MIN < 0)
X 	{
X-	    msf.cdmsf_min1 = 0;
X+	    MSF_END_MIN = 0;
X 	}
X #endif
X     }
X-    msf.cdmsf_min1 += (msf.cdmsf_sec1 / 60);
X-    msf.cdmsf_sec1 %= 60;
X+    MSF_END_MIN += (MSF_END_SEC / 60);
X+    MSF_END_SEC %= 60;
X 
X+#ifdef TCD_BSD
X+    ioctl( cd->cd_dev, CDIOCPREVENT);
X+#endif
X+
X+#ifdef TCD_BSD
X+    if(only_use_trkind || ioctl( cd->cd_dev, CDIOCPLAYMSF, &msf))
X+#else
X     if(ioctl( cd->cd_dev, CDROMPLAYMSF, &msf) || only_use_trkind)
X+#endif
X     {
X 	debug("cdrom.c: tcd_playtracks error. CDROMPLAYMSF ioctl error (or user override). Trying PLAYTRKIND\n" );
X 
X 	/* Try alternate method of playing */
X-	trkind.cdti_trk0 = start_t;     /* start track */
X-	trkind.cdti_ind0 = 0;      	/* start index */
X-	trkind.cdti_trk1 = end_t;      	/* end track */
X-	trkind.cdti_ind1 = 0;      	/* end index */
X+	TI_START_TRK = start_t;  	/* start track */
X+	TI_START_IND = 0;      	 	/* start index */
X+	TI_END_TRK = end_t;      	/* end track */
X+	TI_END_IND = 0;      		/* end index */
X 		                                
X+#ifdef TCD_BSD
X+	if(ioctl(cd->cd_dev, CDIOCPLAYTRACKS, &trkind))
X+#else
X 	if(ioctl(cd->cd_dev, CDROMPLAYTRKIND, &trkind))
X+#endif
X 	{
X 	    strcpy( cd->errmsg, "Error playing disc" );
X 	    cd->err = TRUE;
X 	    debug("cdrom.c: tcd_playtracks error. CDROMPLAYTRKIND ioctl error.\n");
X+#ifdef TCD_BSD
X+	    ioctl( cd->cd_dev, CDIOCALLOW);
X+#endif
X 	    return -1;
X 	}
X     }
X@@ -381,7 +529,11 @@
X 
X int tcd_play_seconds( cd_struct *cd, long int offset )
X {
X+#ifdef TCD_BSD
X+    struct ioc_play_msf msf;
X+#else
X     struct cdrom_msf msf;
X+#endif
X     int tmp;
X 
X     debug("cdrom.c: tcd_playseconds( %p, %ld )\n", cd, offset );
X@@ -390,42 +542,53 @@
X     cd->isplayable=FALSE;
X 
X     /* got subchannel? */
X-    msf.cdmsf_sec0 = cd->sc.cdsc_absaddr.msf.second+offset;
X-    msf.cdmsf_min0 = cd->sc.cdsc_absaddr.msf.minute;
X-    msf.cdmsf_frame0 = cd->sc.cdsc_absaddr.msf.frame;
X-    msf.cdmsf_min1 = cd->trk[C(cd->last_t+1)].toc.cdte_addr.msf.minute;
X-    msf.cdmsf_sec1 = cd->trk[C(cd->last_t+1)].toc.cdte_addr.msf.second;
X-    msf.cdmsf_frame1 = cd->trk[C(cd->last_t+1)].toc.cdte_addr.msf.frame - 1;
X+    MSF_START_SEC = SC_SECOND(cd->sc)+offset;
X+    MSF_START_MIN = SC_MINUTE(cd->sc);
X+    MSF_START_FRM = SC_FRAME(cd->sc);
X+    MSF_END_MIN = TOC_MINUTE(cd->trk[C(cd->last_t+1)]);
X+    MSF_END_SEC = TOC_SECOND(cd->trk[C(cd->last_t+1)]);
X+    MSF_END_FRM = TOC_FRAME(cd->trk[C(cd->last_t+1)]) - 1;
X 
X #ifdef UNSIGNED_NUMBERS_CAN_BE_NEGATIVE
X-    if(msf.cdmsf_frame1 < 0)
X+    if(MSF_END_FRM < 0)
X     {
X-	msf.cdmsf_sec1 += msf.cdmsf_frame1;
X-	msf.cdmsf_frame1 = 0;
X+	MSF_END_SEC += MSF_END_FRM;
X+	MSF_END_FRM = 0;
X     }
X-    if(msf.cdmsf_sec1 < 0)
X+    if(MSF_END_SEC < 0)
X     {
X-	msf.cdmsf_min1 += msf.cdmsf_sec1;
X-	msf.cdmsf_sec1 = 0;
X+	MSF_END_MIN += MSF_END_SEC;
X+	MSF_END_SEC = 0;
X     }
X-    if(msf.cdmsf_min1 < 0)
X+    if(MSF_END_MIN < 0)
X     {
X-	msf.cdmsf_min1 = 0;
X+	MSF_END_MIN = 0;
X     }
X #endif
X 	
X-    if( msf.cdmsf_sec0 > 60 && (offset<0) )
X+    if( MSF_START_SEC > 60 && (offset<0) )
X     {
X-	msf.cdmsf_sec0 = 60-abs(offset);
X-	msf.cdmsf_min0--;
X+	MSF_START_SEC = 60-abs(offset);
X+	MSF_START_MIN--;
X     }
X+
X+#ifdef TCD_BSD
X+    ioctl( cd->cd_dev, CDIOCPREVENT);
X+#endif
X 	
X+#ifdef TCD_BSD
X+    if(ioctl(cd->cd_dev, CDIOCPLAYMSF, &msf))
X+#else
X     if(ioctl(cd->cd_dev, CDROMPLAYMSF, &msf))
X+#endif
X     {
X 	strcpy( cd->errmsg, "Error playing disc." );
X 	cd->err = TRUE;
X 
X 	debug("cdrom.c: tcd_play_seconds error. CDROMPLAYMSF ioctl error.\n" );
X+#ifdef TCD_BSD
X+	ioctl( cd->cd_dev, CDIOCALLOW);
X+#endif
X 	return(-1);
X     }
X     cd->isplayable=TRUE;                                                 
X@@ -442,7 +605,15 @@
X     if(cd->isplayable) tcd_stopcd(cd);
X     cd->err = FALSE;
X 
X+#ifdef TCD_BSD
X+    ioctl( cd->cd_dev, CDIOCALLOW);
X+#endif
X+
X+#ifdef TCD_BSD
X+    if(!ioctl(cd->cd_dev, CDIOCEJECT))
X+#else
X     if(!ioctl(cd->cd_dev, CDROMEJECT))
X+#endif
X     {
X 	cd->isplayable = FALSE;
X 	strcpy(cd->errmsg, "No disc in drive ");
X@@ -450,9 +621,17 @@
X     } 
X     else 
X     {
X+#ifdef TCD_BSD
X+	tmp = ioctl( cd->cd_dev, CDIOCCLOSE );
X+#else
X #ifdef CDROMCLOSETRAY
X 	tmp = ioctl( cd->cd_dev, CDROMCLOSETRAY );
X #endif
X+#endif
X+
X+#ifdef TCD_BSD
X+	ioctl( cd->cd_dev, CDIOCPREVENT);
X+#endif
X 
X 	if(tcd_post_init(cd))
X 	{
X@@ -461,6 +640,9 @@
X 			
X 	    debug("cdrom.c: tcd_eject - disc init error. %s\n",  
X 		  strerror(errno) );
X+#ifdef TCD_BSD
X+	    ioctl( cd->cd_dev, CDIOCALLOW);
X+#endif
X 
X 	    return(-1);
X 	}
X@@ -479,11 +661,19 @@
X     debug("cdrom.c: tcd_stopcd(%p)\n", cd );
X 	
X     /* SDH: Makes things cleaner on eject */
X-    if( cd->sc.cdsc_audiostatus==CDROM_AUDIO_PAUSED )
X+    if( SC_AUDIOSTATUS(cd->sc)==CDROM_AUDIO_PAUSED )
X 	tcd_pausecd(cd);
X 
X+#ifdef TCD_BSD
X+    ioctl( cd->cd_dev, CDIOCALLOW);
X+#endif
X+
X     cd->err = FALSE;
X+#ifdef TCD_BSD
X+    if(ioctl(cd->cd_dev, CDIOCSTOP))
X+#else
X     if(ioctl(cd->cd_dev, CDROMSTOP))
X+#endif
X     {
X 	strcpy( cd->errmsg, "Can't stop disc." );
X 	cd->err = TRUE;
X@@ -501,31 +691,51 @@
X     int tmp;
X     cd->err = FALSE;
X 	
X-    if(cd->sc.cdsc_audiostatus==CDROM_AUDIO_PAUSED)
X+    if(SC_AUDIOSTATUS(cd->sc)==CDROM_AUDIO_PAUSED)
X     {       
X+#ifdef TCD_BSD
X+	if((tmp=ioctl(cd->cd_dev, CDIOCRESUME)))
X+#else
X 	if((tmp=ioctl(cd->cd_dev, CDROMRESUME)))
X+#endif
X 	{
X 	    strcpy(cd->errmsg, strerror(errno));
X 	    cd->err = TRUE;
X+#ifdef TCD_BSD
X+	    ioctl( cd->cd_dev, CDIOCALLOW);
X+#endif
X 	    return(-1);
X 	}
X+#ifdef TCD_BSD
X+	ioctl( cd->cd_dev, CDIOCPREVENT);
X+#endif
X 	return tmp;
X     }	        
X     else
X     {
X+#ifdef TCD_BSD
X+	if((tmp=ioctl(cd->cd_dev, CDIOCPAUSE)))
X+#else
X 	if((tmp=ioctl(cd->cd_dev, CDROMPAUSE)))
X+#endif
X 	{
X 	    strcpy( cd->errmsg, strerror( errno ) );
X 	    cd->err = TRUE;
X+#ifdef TCD_BSD
X+	    ioctl( cd->cd_dev, CDIOCALLOW);
X+#endif
X 	    return(-1);
X 	}
X+#ifdef TCD_BSD
X+	ioctl( cd->cd_dev, CDIOCPREVENT);
X+#endif
X 	return tmp;
X     }
X }
X 
X int tcd_change_disc( cd_struct *cd, int disc )
X {
X-#ifdef TCD_CHANGER_ENABLED
X+#if defined(TCD_CHANGER_ENABLED) && !defined(TCD_BSD)
X     int tmp;
X     cd->err = FALSE;
X 
X--- tcd/linux-cdrom.h.orig	Thu Feb 11 18:49:43 1999
X+++ tcd/linux-cdrom.h	Wed Mar  3 10:57:00 1999
X@@ -27,11 +27,26 @@
X 
X #include <sys/types.h>
X 
X-#if !defined(linux) && !defined(sun) && !defined(__sun__)
X-#error TCD only builds on linux and Solaris/SunOs
X-#endif
X+#if defined(__FreeBSD__)
X+
X+#define TCD_BSD
X+
X+#include <sys/cdio.h>
X 
X-#ifdef linux
X+#define CDROM_AUDIO_INVALID	CD_AS_AUDIO_INVALID
X+#define CDROM_AUDIO_PLAY	CD_AS_PLAY_IN_PROGRESS
X+#define CDROM_AUDIO_PAUSED	CD_AS_PLAY_PAUSED
X+#define CDROM_AUDIO_COMPLETED	CD_AS_PLAY_COMPLETED
X+#define CDROM_AUDIO_ERROR	CD_AS_PLAY_ERROR
X+#define CDROM_AUDIO_NO_STATUS	CD_AS_NO_STATUS
X+
X+#define CDROM
X+
X+#else
X+
X+#define TCD_LINUX
X+
X+#if defined(linux)
X #include <linux/cdrom.h>
X #endif
X 
X@@ -98,6 +113,7 @@
X 
X #endif	/* SVR4 */
X #endif	/* sun __sun__ */
X+#endif /* __FreeBSD__ */
X 
X #define TRK_NAME_LEN 	512
X #define DISC_INFO_LEN	512
X@@ -106,7 +122,17 @@
X struct cd_track
X {
X 	char name[TRK_NAME_LEN+1];
X+#ifdef TCD_BSD
X+	struct cd_toc_entry toc;
X+#define TOC_MINUTE(trk)	(trk.toc.addr.msf.minute)
X+#define TOC_SECOND(trk)	(trk.toc.addr.msf.second)
X+#define TOC_FRAME(trk)	(trk.toc.addr.msf.frame)
X+#else
X 	struct cdrom_tocentry toc;
X+#define TOC_MINUTE(trk)	(trk.toc.cdte_addr.msf.minute)
X+#define TOC_SECOND(trk)	(trk.toc.cdte_addr.msf.second)
X+#define TOC_FRAME(trk)	(trk.toc.cdte_addr.msf.frame)
X+#endif
X 	int titled;
X 	int start, length;
X 	int tot_min, tot_sec;
X@@ -130,10 +156,27 @@
X 	char dtitle[DISC_INFO_LEN+1];	/* Disc title */
X 	char album[DISC_INFO_LEN+1], artist[DISC_INFO_LEN+1];
X 	
X+#ifdef TCD_BSD
X+	/* See /usr/include/sys/cdio.h */
X+	struct ioc_play_track ti;
X+	struct ioc_toc_header tochdr;
X+	struct cd_sub_channel_info sc;
X+#define SC_AUDIOSTATUS(sc)	(sc.header.audio_status)
X+#define SC_TRACK(sc)		(sc.what.position.track_number)
X+#define SC_MINUTE(sc)		(sc.what.position.absaddr.msf.minute)
X+#define SC_SECOND(sc)		(sc.what.position.absaddr.msf.second)
X+#define SC_FRAME(sc)		(sc.what.position.absaddr.msf.frame)
X+#else
X 	/* See /usr/src/linux/include/linux/cdrom.h */
X 	struct cdrom_ti ti;		/* Track info */
X 	struct cdrom_tochdr tochdr; 	/* TOC header */
X 	struct cdrom_subchnl sc;	/* Subchannel, for time */
X+#define SC_AUDIOSTATUS(sc)	(sc.cdsc_audiostatus)
X+#define SC_TRACK(sc)		(sc.cdsc_trk)
X+#define SC_MINUTE(sc)		(sc.cdsc_absaddr.msf.minute)
X+#define SC_SECOND(sc)		(sc.cdsc_absaddr.msf.second)
X+#define SC_FRAME(sc)		(sc.cdsc_absaddr.msf.frame)
X+#endif
X 	int volume;			/* Must range 0-100 */
X 
X 	int cd_min, cd_sec;		/* Total CD time */
X--- tcd/tcd.c.orig	Mon Feb  8 21:13:22 1999
X+++ tcd/tcd.c	Wed Mar  3 10:57:00 1999
X@@ -139,8 +139,8 @@
X 		
X 	/* if the user hasn't stopped the cd, but it is 
X 	   stopped anyway, fix it. */
X-	if( cd->sc.cdsc_audiostatus != CDROM_AUDIO_PLAY &&
X-	    cd->sc.cdsc_audiostatus != CDROM_AUDIO_PAUSED )
X+	if( SC_AUDIOSTATUS(cd->sc) != CDROM_AUDIO_PLAY &&
X+	    SC_AUDIOSTATUS(cd->sc) != CDROM_AUDIO_PAUSED )
X 	{
X 	    if( cd->play_method == REPEAT_CD )
X 		tcd_playtracks(cd, cd->first_t, cd->last_t, 0);
END-of-./patches/patch-ae
echo c - ./pkg
mkdir -p ./pkg > /dev/null 2>&1
echo x - ./pkg/COMMENT
sed 's/^X//' >./pkg/COMMENT << 'END-of-./pkg/COMMENT'
XMultimedia applications for the GNOME desktop.
END-of-./pkg/COMMENT
echo x - ./pkg/DESCR
sed 's/^X//' >./pkg/DESCR << 'END-of-./pkg/DESCR'
XMultimedia applications for the GNOME desktop.  Includes gtcd, a CDDB
Xaware CD player; GMix, for controlling the sound card's mixer; and
XVU-Meter, to slow down your desktop...
END-of-./pkg/DESCR
echo x - ./pkg/PLIST
sed 's/^X//' >./pkg/PLIST << 'END-of-./pkg/PLIST'
Xbin/cddbslave
Xbin/gmix
Xbin/gtcd
Xbin/vumeter
Xshare/gnome/apps/Multimedia/gmix.desktop
Xshare/gnome/apps/Multimedia/gtcd.desktop
Xshare/gnome/apps/Multimedia/vumeter.desktop
Xshare/gnome/pixmaps/tcd/cdrom.xpm
Xshare/gnome/pixmaps/tcd/eject.xpm
Xshare/gnome/pixmaps/tcd/ff.xpm
Xshare/gnome/pixmaps/tcd/goto.xpm
Xshare/gnome/pixmaps/tcd/next_t.xpm
Xshare/gnome/pixmaps/tcd/pause.xpm
Xshare/gnome/pixmaps/tcd/play.xpm
Xshare/gnome/pixmaps/tcd/prev_t.xpm
Xshare/gnome/pixmaps/tcd/rw.xpm
Xshare/gnome/pixmaps/tcd/stop.xpm
Xshare/locale/da/LC_MESSAGES/gnome-media.mo
Xshare/locale/de/LC_MESSAGES/gnome-media.mo
Xshare/locale/es/LC_MESSAGES/gnome-media.mo
Xshare/locale/fi/LC_MESSAGES/gnome-media.mo
Xshare/locale/fr/LC_MESSAGES/gnome-media.mo
Xshare/locale/ga/LC_MESSAGES/gnome-media.mo
Xshare/locale/hu/LC_MESSAGES/gnome-media.mo
Xshare/locale/it/LC_MESSAGES/gnome-media.mo
Xshare/locale/ja/LC_MESSAGES/gnome-media.mo
Xshare/locale/ko/LC_MESSAGES/gnome-media.mo
Xshare/locale/nl/LC_MESSAGES/gnome-media.mo
Xshare/locale/no/LC_MESSAGES/gnome-media.mo
Xshare/locale/pt/LC_MESSAGES/gnome-media.mo
Xshare/locale/ru_RU/LC_MESSAGES/gnome-media.mo
X@dirrm share/gnome/pixmaps/tcd/
END-of-./pkg/PLIST
echo x - ./Makefile
sed 's/^X//' >./Makefile << 'END-of-./Makefile'
X# New ports collection makefile for:	gnome-media
X# Version required:			1.0.1
X# Date created:				20 January 1999
X# Whom:					Jeremy Lea <reg@shale.csir.co.za>
X#
X# $Id: $
X#
X
XDISTNAME=	gnome-media-1.0.1
XPKGNAME=	gnomemedia-1.0.1
XCATEGORIES=	audio gnome
XMASTER_SITES=	${MASTER_SITE_GNOME}
XMASTER_SITE_SUBDIR=	gnome-1.0/sources
X
XMAINTAINER=	reg@shale.csir.co.za
X
XBUILD_DEPENDS=	panel:${PORTSDIR}/x11/gnomecore
XRUN_DEPENDS=	panel:${PORTSDIR}/x11/gnomecore
X
X# implicit dependencies:
X# gettext, esound, gnomelibs
X
XUSE_X_PREFIX=	yes
XUSE_GMAKE=	yes
XGNU_CONFIGURE=	yes
XCONFIGURE_ARGS=	--without-ncurses \
X		--localstatedir=${PREFIX}/share/gnome \
X		--datadir=${PREFIX}/share/gnome \
X		--with-gnome=${X11BASE}
XCONFIGURE_ENV=	CPPFLAGS="-I${LOCALBASE}/include" \
X		LIBS="-L${LOCALBASE}/lib"
X
Xpost-install:
X	@${SETENV} OBJFORMAT=${PORTOBJFORMAT} ${LDCONFIG} -m ${PREFIX}/lib
X
X.include <bsd.port.mk>
END-of-./Makefile
exit




>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199903061808.UAA96762>