ports/153653: [maintainer update] audio/libmikmod

Gleb Sushko neuroworker at gmail.com
Mon Jan 3 18:00:24 UTC 2011


>Number:         153653
>Category:       ports
>Synopsis:       [maintainer update] audio/libmikmod
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jan 03 18:00:23 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator:     Gleb Sushko
>Release:        
>Organization:
>Environment:
>Description:
[maintainer update]

New version and patches.
>How-To-Repeat:

>Fix:
--- old/Makefile	2010-12-23 01:23:36.000000000 +0700
+++ mikmod/Makefile	2011-01-04 00:34:44.000000000 +0700
@@ -6,16 +6,11 @@
 #
 
 PORTNAME=	libmikmod
-PORTVERSION=	3.1.11
-PORTREVISION=	2
+PORTVERSION=	3.1.12
 CATEGORIES=	audio
-MASTER_SITES=	http://mikmod.raphnet.net/files/
+MASTER_SITES=	SF/mikmod/libmikmod%20%28source%29/${PORTVERSION}/
 
-PATCH_SITES=	http://mikmod.raphnet.net/files/
-PATCHFILES=	libmikmod-3.1.11-a.diff
-PATCH_DIST_STRIP=	-p1
-
-MAINTAINER=	ports at FreeBSD.org
+MAINTAINER=	neuroworker at gmail.com
 COMMENT=	MikMod Sound Library
 
 USE_AUTOTOOLS=	libtool
diff -ruN old/distinfo mikmod/distinfo
--- old/distinfo	2006-10-12 16:43:00.000000000 +0800
+++ mikmod/distinfo	2011-01-03 21:38:17.000000000 +0700
@@ -1,6 +1,2 @@
-MD5 (libmikmod-3.1.11.tar.gz) = 705106da305e8de191549f1e7393185c
-SHA256 (libmikmod-3.1.11.tar.gz) = 2d7598cd2a8c61c023f27c9c7c1aca8bbfd92aadbee2f98b7a6d421eae35c929
-SIZE (libmikmod-3.1.11.tar.gz) = 611590
-MD5 (libmikmod-3.1.11-a.diff) = 5e56be5a32eecf3cfa195379a5ecb0ef
-SHA256 (libmikmod-3.1.11-a.diff) = 4d546e905fd9f93da02701fc813f557f79b17084dc1f9ba5626475f4577eedbc
-SIZE (libmikmod-3.1.11-a.diff) = 67970
+SHA256 (libmikmod-3.1.12.tar.gz) = 891a2b780306e6ef86e381f459e71a085d4e7f56c970a879d3bf341c01bdfc32
+SIZE (libmikmod-3.1.12.tar.gz) = 618011
diff -ruN old/files/patch-64bit-fix mikmod/files/patch-64bit-fix
--- old/files/patch-64bit-fix	1970-01-01 07:00:00.000000000 +0700
+++ mikmod/files/patch-64bit-fix	2011-01-03 21:44:04.000000000 +0700
@@ -0,0 +1,24 @@
+diff -ru include/mikmod.h.in libmikmod-3.1.12/include/mikmod.h.in
+--- include/mikmod.h.in	2007-12-15 01:24:19.000000000 -0800
++++ include/mikmod.h.in	2009-10-05 00:18:56.000000000 -0700
+@@ -85,7 +85,7 @@
+ 
+ @DOES_NOT_HAVE_SIGNED@
+ 
+-#if defined(__arch64__) || defined(__alpha) || defined(__x86_64)
++#if defined(__arch64__) || defined(__alpha) || defined(__x86_64) || defined(_LP64)
+ /* 64 bit architectures */
+ 
+ typedef signed char     SBYTE;      /* 1 byte, signed */
+diff -ru include/mikmod_internals.h libmikmod-3.1.12/include/mikmod_internals.h
+--- include/mikmod_internals.h	2007-12-15 04:24:51.000000000 -0800
++++ include/mikmod_internals.h	2009-10-05 00:19:15.000000000 -0700
+@@ -50,7 +50,7 @@
+ /*========== More type definitions */
+ 
+ /* SLONGLONG: 64bit, signed */
+-#if defined (__arch64__) || defined(__alpha)
++#if defined(__arch64__) || defined(__alpha) || defined(__x86_64) || defined(_LP64)
+ typedef long		SLONGLONG;
+ #define NATIVE_64BIT_INT
+ #elif defined(__WATCOMC__)
diff -ruN old/files/patch-CVE-2009-0179 mikmod/files/patch-CVE-2009-0179
--- old/files/patch-CVE-2009-0179	1970-01-01 07:00:00.000000000 +0700
+++ mikmod/files/patch-CVE-2009-0179	2011-01-03 21:41:32.000000000 +0700
@@ -0,0 +1,33 @@
+diff -ur loaders/load_xm.c libmikmod-3.1.11/loaders/load_xm.c
+--- loaders/load_xm.c	2004-01-21 18:43:53.000000000 +0100
++++ loaders/load_xm.c	2008-04-16 04:30:45.000000000 +0200
+@@ -622,7 +622,8 @@
+ 				/* read the remainder of the header */
+ 				for(u=headend-_mm_ftell(modreader);u;u--) _mm_read_UBYTE(modreader);
+ 
+-				if(_mm_eof(modreader)) {
++				/* last instrument is at the end of file in version 0x0104 */
++				if(_mm_eof(modreader) && (mh->version<0x0104 || t<of.numins-1)) {
+ 					free(nextwav);free(wh);
+ 					nextwav=NULL;wh=NULL;
+ 					_mm_errno = MMERR_LOADING_SAMPLEINFO;
+diff -ur playercode/mloader.c libmikmod-3.1.11/playercode/mloader.c
+--- playercode/mloader.c	2004-01-21 18:43:53.000000000 +0100
++++ playercode/mloader.c	2008-04-16 04:30:45.000000000 +0200
+@@ -450,10 +450,12 @@
+ 	if (!l->Init || l->Init()) {
+ 		_mm_rewind(modreader);
+ 		ok = l->Load(curious);
+-		/* propagate inflags=flags for in-module samples */
+-		for (t = 0; t < of.numsmp; t++)
+-			if (of.samples[t].inflags == 0)
+-				of.samples[t].inflags = of.samples[t].flags;
++		if (ok) {
++			/* propagate inflags=flags for in-module samples */
++			for (t = 0; t < of.numsmp; t++)
++				if (of.samples[t].inflags == 0)
++					of.samples[t].inflags = of.samples[t].flags;
++		}
+ 	} else
+ 		ok = 0;
+ 
diff -ruN old/files/patch-ad mikmod/files/patch-ad
--- old/files/patch-ad	2000-05-29 14:34:02.000000000 +0800
+++ mikmod/files/patch-ad	1970-01-01 07:00:00.000000000 +0700
@@ -1,32 +0,0 @@
---- drivers/drv_raw.c	2000/05/26 10:10:11	1.1
-+++ drivers/drv_raw.c	2000/05/26 10:11:48
-@@ -58,6 +58,7 @@
- static	int rawout=-1;
- static	SBYTE *audiobuffer=NULL;
- static	CHAR *filename=NULL;
-+static  unsigned long counter=0;
- 
- static void RAW_CommandLine(CHAR *cmdline)
- {
-@@ -113,13 +114,20 @@
- 	if (rawout!=-1) {
- 		close(rawout);
- 		rawout=-1;
-+		if (counter==0)
-+			unlink(filename?filename:FILENAME);
-+		else
-+			counter=0;
- 	}
- 	_mm_free(audiobuffer);
- }
- 
- static void RAW_Update(void)
- {
--	write(rawout,audiobuffer,VC_WriteBytes(audiobuffer,BUFFERSIZE));
-+	int num;
-+	num=write(rawout,audiobuffer,VC_WriteBytes(audiobuffer,BUFFERSIZE));
-+	if (num>0)
-+		counter+=num;
- }
- 
- static BOOL RAW_Reset(void)
diff -ruN old/files/patch-exitcrash mikmod/files/patch-exitcrash
--- old/files/patch-exitcrash	1970-01-01 07:00:00.000000000 +0700
+++ mikmod/files/patch-exitcrash	2011-01-03 21:44:14.000000000 +0700
@@ -0,0 +1,12 @@
+diff -ru playercode/virtch_common.c libmikmod-3.1.12/playercode/virtch_common.c
+--- playercode/virtch_common.c	2007-12-15 01:26:53.000000000 -0800
++++ playercode/virtch_common.c	2009-10-05 00:37:12.000000000 -0700
+@@ -347,7 +347,7 @@
+ 
+ void VC1_SampleUnload(SWORD handle)
+ {
+-	if (handle<MAXSAMPLEHANDLES) {
++	if (Samples && handle<MAXSAMPLEHANDLES) {
+ 		if (Samples[handle])
+ 			free(Samples[handle]);
+ 		Samples[handle]=NULL;
diff -ruN old/files/patch-md_sngchn mikmod/files/patch-md_sngchn
--- old/files/patch-md_sngchn	1970-01-01 07:00:00.000000000 +0700
+++ mikmod/files/patch-md_sngchn	2011-01-03 21:48:41.000000000 +0700
@@ -0,0 +1,110 @@
+diff -ru playercode/mplayer.c libmikmod-3.1.12/playercode/mplayer.c
+--- playercode/mplayer.c	2007-12-15 01:26:28.000000000 -0800
++++ playercode/mplayer.c	2009-10-04 23:48:36.000000000 -0700
+@@ -52,6 +52,8 @@
+    will wait */
+ /*static*/ MODULE *pf = NULL;
+ 
++#define NUMVOICES(mod)	(md_sngchn < (mod)->numvoices ? md_sngchn : (mod)->numvoices)
++
+ #define	HIGH_OCTAVE		2	/* number of above-range octaves */
+ 
+ static	UWORD oldperiods[OCTAVE*2]={
+@@ -248,14 +250,14 @@
+ 	MP_VOICE *a;
+ 	ULONG t,k,tvol,pp;
+ 
+-	for (t=0;t<md_sngchn;t++)
++	for (t=0;t<NUMVOICES(mod);t++)
+ 		if (((mod->voice[t].main.kick==KICK_ABSENT)||
+ 			 (mod->voice[t].main.kick==KICK_ENV))&&
+ 		   Voice_Stopped_internal(t))
+ 			return t;
+ 
+ 	tvol=0xffffffUL;t=-1;a=mod->voice;
+-	for (k=0;k<md_sngchn;k++,a++) {
++	for (k=0;k<NUMVOICES(mod);k++,a++) {
+ 		/* allow us to take over a nonexisting sample */
+ 		if (!a->main.s)
+ 			return k;
+@@ -2249,12 +2251,12 @@
+ 
+ 	switch (dat) {
+ 	case 0x0: /* past note cut */
+-		for (t=0;t<md_sngchn;t++)
++		for (t=0;t<NUMVOICES(mod);t++)
+ 			if (mod->voice[t].master==a)
+ 				mod->voice[t].main.fadevol=0;
+ 		break;
+ 	case 0x1: /* past note off */
+-		for (t=0;t<md_sngchn;t++)
++		for (t=0;t<NUMVOICES(mod);t++)
+ 			if (mod->voice[t].master==a) {
+ 				mod->voice[t].main.keyoff|=KEY_OFF;
+ 				if ((!(mod->voice[t].venv.flg & EF_ON))||
+@@ -2263,7 +2265,7 @@
+ 			}
+ 		break;
+ 	case 0x2: /* past note fade */
+-		for (t=0;t<md_sngchn;t++)
++		for (t=0;t<NUMVOICES(mod);t++)
+ 			if (mod->voice[t].master==a)
+ 				mod->voice[t].main.keyoff|=KEY_FADE;
+ 		break;
+@@ -2318,7 +2320,7 @@
+ 	SAMPLE *s;
+ 
+ 	mod->totalchn=mod->realchn=0;
+-	for (channel=0;channel<md_sngchn;channel++) {
++	for (channel=0;channel<NUMVOICES(mod);channel++) {
+ 		aout=&mod->voice[channel];
+ 		i=aout->main.i;
+ 		s=aout->main.s;
+@@ -2736,7 +2738,7 @@
+ 			if (a->dct!=DCT_OFF) {
+ 				int t;
+ 
+-				for (t=0;t<md_sngchn;t++)
++				for (t=0;t<NUMVOICES(mod);t++)
+ 					if ((!Voice_Stopped_internal(t))&&
+ 					   (mod->voice[t].masterchn==channel)&&
+ 					   (a->main.sample==mod->voice[t].main.sample)) {
+@@ -2978,6 +2980,11 @@
+ 	if (!(mod->voice=(MP_VOICE*)_mm_calloc(md_sngchn,sizeof(MP_VOICE))))
+ 		return 1;
+ 
++	/* mod->numvoices was used during loading to clamp md_sngchn.
++	   After loading it's used to remember how big mod->voice is.
++	*/
++	mod->numvoices = md_sngchn;
++
+ 	Player_Init_internal(mod);
+ 	return 0;
+ }
+@@ -3086,7 +3093,7 @@
+ 		pf->patbrk=0;
+ 		pf->vbtick=pf->sngspd;
+ 
+-		for (t=0;t<md_sngchn;t++) {
++		for (t=0;t<NUMVOICES(pf);t++) {
+ 			Voice_Stop_internal(t);
+ 			pf->voice[t].main.i=NULL;
+ 			pf->voice[t].main.s=NULL;
+@@ -3111,7 +3118,7 @@
+ 		pf->patbrk=0;
+ 		pf->vbtick=pf->sngspd;
+ 
+-		for (t=0;t<md_sngchn;t++) {
++		for (t=0;t<NUMVOICES(pf);t++) {
+ 			Voice_Stop_internal(t);
+ 			pf->voice[t].main.i=NULL;
+ 			pf->voice[t].main.s=NULL;
+@@ -3138,7 +3145,7 @@
+ 		pf->sngpos=pos;
+ 		pf->vbtick=pf->sngspd;
+ 
+-		for (t=0;t<md_sngchn;t++) {
++		for (t=0;t<NUMVOICES(pf);t++) {
+ 			Voice_Stop_internal(t);
+ 			pf->voice[t].main.i=NULL;
+ 			pf->voice[t].main.s=NULL;
diff -ruN old/files/patch-ngvolume mikmod/files/patch-ngvolume
--- old/files/patch-ngvolume	1970-01-01 07:00:00.000000000 +0700
+++ mikmod/files/patch-ngvolume	2011-01-03 21:48:38.000000000 +0700
@@ -0,0 +1,12 @@
+diff -ru playercode/mplayer.c libmikmod-3.1.12/playercode/mplayer.c
+--- playercode/mplayer.c	2009-10-05 00:19:59.000000000 -0700
++++ playercode/mplayer.c	2009-10-05 00:44:35.000000000 -0700
+@@ -3019,7 +3019,7 @@
+ {
+ 	MUTEX_LOCK(vars);
+ 	if (pf)
+-		pf->volume=(volume<0)?0:(volume>128)?128:volume;
++		pf->volume=pf->initvolume=(volume<0)?0:(volume>128)?128:volume;
+ 	MUTEX_UNLOCK(vars);
+ }
+ 


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



More information about the freebsd-ports-bugs mailing list