Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Sep 2005 20:00:45 -0300
From:      "Alejandro Pulver" <alejandro@varnet.biz>
To:        "FreeBSD gnats submit" <FreeBSD-gnats-submit@FreeBSD.org>
Subject:   ports/86737: [NEW PORT] games/quake2-source - Quake II game source
Message-ID:  <1128034845.0@phobos.mars.bsd>
Resent-Message-ID: <200509292310.j8TNAIKF023807@freefall.freebsd.org>

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

>Number:         86737
>Category:       ports
>Synopsis:       [NEW PORT] games/quake2-source - Quake II game source
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu Sep 29 23:10:18 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Alejandro Pulver
>Release:        FreeBSD 5.4-RELEASE i386
>Organization:
>Environment:





>Description:





>How-To-Repeat:





>Fix:


--- quake2-source.shar begins here ---
# 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:
#
#	quake2-source
#	quake2-source/files
#	quake2-source/files/extra-patch-src_rogue_q__shared.c
#	quake2-source/files/Makefile.xatrix
#	quake2-source/files/Makefile.game
#	quake2-source/files/Makefile.ctf
#	quake2-source/files/Makefile.rogue
#	quake2-source/files/patch-src_game_g__phys.c
#	quake2-source/files/extra-patch-src_rogue_g__local.h
#	quake2-source/files/extra-patch-src_xatrix_q__shared.c
#	quake2-source/files/patch-security
#	quake2-source/Makefile
#	quake2-source/pkg-descr
#	quake2-source/distinfo
#	quake2-source/pkg-plist
#
echo c - quake2-source
mkdir -p quake2-source > /dev/null 2>&1
echo c - quake2-source/files
mkdir -p quake2-source/files > /dev/null 2>&1
echo x - quake2-source/files/extra-patch-src_rogue_q__shared.c
sed 's/^X//' >quake2-source/files/extra-patch-src_rogue_q__shared.c << 'END-of-quake2-source/files/extra-patch-src_rogue_q__shared.c'
X--- src/rogue/q_shared.c.orig	Mon Nov 30 17:53:34 1998
X+++ src/rogue/q_shared.c	Tue Sep 27 20:03:24 2005
X@@ -329,7 +329,7 @@
X Returns 1, 2, or 1 + 2
X ==================
X */
X-#if !id386 || defined __linux__ 
X+#if !id386 || defined __linux__ || defined __FreeBSD__
X int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p)
X {
X 	float	dist1, dist2;
END-of-quake2-source/files/extra-patch-src_rogue_q__shared.c
echo x - quake2-source/files/Makefile.xatrix
sed 's/^X//' >quake2-source/files/Makefile.xatrix << 'END-of-quake2-source/files/Makefile.xatrix'
X# BSD Makefile for Quake II: The Reckoning (Xatrix) game source
X
XSHLIB_NAME=	game${MACHINE_ARCH}.so
X
XSRCS=		g_ai.c \
X		g_chase.c \
X		g_cmds.c \
X		g_combat.c \
X		g_func.c \
X		g_items.c \
X		g_main.c \
X		g_misc.c \
X		g_monster.c \
X		g_phys.c \
X		g_save.c \
X		g_spawn.c \
X		g_svcmds.c \
X		g_target.c \
X		g_trigger.c \
X		g_turret.c \
X		g_utils.c \
X		g_weapon.c \
X		m_actor.c \
X		m_berserk.c \
X		m_boss2.c \
X		m_boss3.c \
X		m_boss31.c \
X		m_boss32.c \
X		m_boss5.c \
X		m_brain.c \
X		m_chick.c \
X		m_fixbot.c \
X		m_flash.c \
X		m_flipper.c \
X		m_float.c \
X		m_flyer.c \
X		m_gekk.c \
X		m_gladb.c \
X		m_gladiator.c \
X		m_gunner.c \
X		m_hover.c \
X		m_infantry.c \
X		m_insane.c \
X		m_medic.c \
X		m_move.c \
X		m_mutant.c \
X		m_parasite.c \
X		m_soldier.c \
X		m_supertank.c \
X		m_tank.c \
X		p_client.c \
X		p_hud.c \
X		p_trail.c \
X		p_view.c \
X		p_weapon.c \
X		q_shared.c
X
X.include <bsd.lib.mk>
END-of-quake2-source/files/Makefile.xatrix
echo x - quake2-source/files/Makefile.game
sed 's/^X//' >quake2-source/files/Makefile.game << 'END-of-quake2-source/files/Makefile.game'
X# BSD Makefile for Quake II game source
X
XSHLIB_NAME=	game${MACHINE_ARCH}.so
X
XSRCS=		g_ai.c \
X		g_chase.c \
X		g_cmds.c \
X		g_combat.c \
X		g_func.c \
X		g_items.c \
X		g_main.c \
X		g_misc.c \
X		g_monster.c \
X		g_phys.c \
X		g_save.c \
X		g_spawn.c \
X		g_svcmds.c \
X		g_target.c \
X		g_trigger.c \
X		g_turret.c \
X		g_utils.c \
X		g_weapon.c \
X		m_actor.c \
X		m_berserk.c \
X		m_boss2.c \
X		m_boss3.c \
X		m_boss31.c \
X		m_boss32.c \
X		m_brain.c \
X		m_chick.c \
X		m_flash.c \
X		m_flipper.c \
X		m_float.c \
X		m_flyer.c \
X		m_gladiator.c \
X		m_gunner.c \
X		m_hover.c \
X		m_infantry.c \
X		m_insane.c \
X		m_medic.c \
X		m_move.c \
X		m_mutant.c \
X		m_parasite.c \
X		m_soldier.c \
X		m_supertank.c \
X		m_tank.c \
X		p_client.c \
X		p_hud.c \
X		p_trail.c \
X		p_view.c \
X		p_weapon.c \
X		q_shared.c
X
X.include <bsd.lib.mk>
END-of-quake2-source/files/Makefile.game
echo x - quake2-source/files/Makefile.ctf
sed 's/^X//' >quake2-source/files/Makefile.ctf << 'END-of-quake2-source/files/Makefile.ctf'
X# BSD Makefile for Quake II: Capture The Flag game source
X
XSHLIB_NAME=	game${MACHINE_ARCH}.so
X
XSRCS=		g_ai.c \
X		g_chase.c \
X		g_cmds.c \
X		g_combat.c \
X		g_ctf.c \
X		g_func.c \
X		g_items.c \
X		g_main.c \
X		g_misc.c \
X		g_monster.c \
X		g_phys.c \
X		g_save.c \
X		g_spawn.c \
X		g_svcmds.c \
X		g_target.c \
X		g_trigger.c \
X		g_utils.c \
X		g_weapon.c \
X		m_move.c \
X		p_client.c \
X		p_hud.c \
X		p_menu.c \
X		p_trail.c \
X		p_view.c \
X		p_weapon.c \
X		q_shared.c
X
X.include <bsd.lib.mk>
END-of-quake2-source/files/Makefile.ctf
echo x - quake2-source/files/Makefile.rogue
sed 's/^X//' >quake2-source/files/Makefile.rogue << 'END-of-quake2-source/files/Makefile.rogue'
X# BSD Makefile for Quake II: Ground Zero (Rogue) game source
X
XSHLIB_NAME=	game${MACHINE_ARCH}.so
X
XSRCS=		dm_ball.c \
X		dm_tag.c \
X		g_ai.c \
X		g_chase.c \
X		g_cmds.c \
X		g_combat.c \
X		g_func.c \
X		g_items.c \
X		g_main.c \
X		g_misc.c \
X		g_monster.c \
X		g_newai.c \
X		g_newdm.c \
X		g_newfnc.c \
X		g_newtarg.c \
X		g_newtrig.c \
X		g_newweap.c \
X		g_phys.c \
X		g_save.c \
X		g_spawn.c \
X		g_sphere.c \
X		g_svcmds.c \
X		g_target.c \
X		g_trigger.c \
X		g_turret.c \
X		g_utils.c \
X		g_weapon.c \
X		m_actor.c \
X		m_berserk.c \
X		m_boss2.c \
X		m_boss3.c \
X		m_boss31.c \
X		m_boss32.c \
X		m_brain.c \
X		m_carrier.c \
X		m_chick.c \
X		m_flash.c \
X		m_flipper.c \
X		m_float.c \
X		m_flyer.c \
X		m_gladiator.c \
X		m_gunner.c \
X		m_hover.c \
X		m_infantry.c \
X		m_insane.c \
X		m_medic.c \
X		m_move.c \
X		m_mutant.c \
X		m_parasite.c \
X		m_soldier.c \
X		m_stalker.c \
X		m_supertank.c \
X		m_tank.c \
X		m_turret.c \
X		m_widow.c \
X		m_widow2.c \
X		p_client.c \
X		p_hud.c \
X		p_trail.c \
X		p_view.c \
X		p_weapon.c \
X		q_shared.c
X
X.include <bsd.lib.mk>
END-of-quake2-source/files/Makefile.rogue
echo x - quake2-source/files/patch-src_game_g__phys.c
sed 's/^X//' >quake2-source/files/patch-src_game_g__phys.c << 'END-of-quake2-source/files/patch-src_game_g__phys.c'
X--- src/game/g_phys.c.orig	Tue Mar 15 22:15:11 2005
X+++ src/game/g_phys.c	Tue Mar 15 22:16:41 2005
X@@ -356,7 +356,13 @@
X 		mask = MASK_SOLID;
X 
X 	trace = gi.trace (start, ent->mins, ent->maxs, end, ent, mask);
X-	
X+
X+	if (trace.startsolid || trace.allsolid)
X+	{
X+		mask ^= CONTENTS_DEADMONSTER;
X+		trace = gi.trace (start, ent->mins, ent->maxs, end, ent, mask);
X+	}
X+
X 	VectorCopy (trace.endpos, ent->s.origin);
X 	gi.linkentity (ent);
X 
END-of-quake2-source/files/patch-src_game_g__phys.c
echo x - quake2-source/files/extra-patch-src_rogue_g__local.h
sed 's/^X//' >quake2-source/files/extra-patch-src_rogue_g__local.h << 'END-of-quake2-source/files/extra-patch-src_rogue_g__local.h'
X--- src/rogue/g_local.h.orig	Mon Nov 30 17:53:20 1998
X+++ src/rogue/g_local.h	Tue Sep 27 20:20:27 2005
X@@ -22,7 +22,6 @@
X //==================================================================
X 
X #ifndef _WIN32
X-#include <nan.h>
X #define min(a,b) ((a) < (b) ? (a) : (b))
X #define max(a,b) ((a) > (b) ? (a) : (b))
X #ifdef __sun__
END-of-quake2-source/files/extra-patch-src_rogue_g__local.h
echo x - quake2-source/files/extra-patch-src_xatrix_q__shared.c
sed 's/^X//' >quake2-source/files/extra-patch-src_xatrix_q__shared.c << 'END-of-quake2-source/files/extra-patch-src_xatrix_q__shared.c'
X--- src/xatrix/q_shared.c.orig	Mon Nov 30 17:55:36 1998
X+++ src/xatrix/q_shared.c	Tue Sep 27 20:04:53 2005
X@@ -326,7 +326,7 @@
X Returns 1, 2, or 1 + 2
X ==================
X */
X-#if !id386 || defined __linux__ 
X+#if !id386 || defined __linux__ || defined __FreeBSD__
X int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p)
X {
X 	float	dist1, dist2;
END-of-quake2-source/files/extra-patch-src_xatrix_q__shared.c
echo x - quake2-source/files/patch-security
sed 's/^X//' >quake2-source/files/patch-security << 'END-of-quake2-source/files/patch-security'
XIndex: client/cl_parse.c
X===================================================================
XRCS file: /cvs/cvsroot/quake2/src/client/cl_parse.c,v
Xretrieving revision 1.3
Xdiff -u -r1.3 cl_parse.c
X--- src/client/cl_parse.c	24 Sep 2004 22:06:52 -0000	1.3
X+++ src/client/cl_parse.c	29 Jan 2005 20:57:01 -0000
X@@ -397,6 +397,9 @@
X 	strncpy(ci->cinfo, s, sizeof(ci->cinfo));
X 	ci->cinfo[sizeof(ci->cinfo)-1] = 0;
X 
X+	// sku - avoid potentional buffer overflow vulnerability
X+	s = ci->cinfo;
X+
X 	// isolate the player's name
X 	strncpy(ci->name, s, sizeof(ci->name));
X 	ci->name[sizeof(ci->name)-1] = 0;
X@@ -528,6 +531,7 @@
X 	int		i;
X 	char	*s;
X 	char	olds[MAX_QPATH];
X+	int		length;
X 
X 	i = MSG_ReadShort (&net_message);
X 	if (i < 0 || i >= MAX_CONFIGSTRINGS)
X@@ -537,6 +541,12 @@
X 	strncpy (olds, cl.configstrings[i], sizeof(olds));
X 	olds[sizeof(olds) - 1] = 0;
X 
X+	// sku - avoid potentional buffer overflow vulnerability
X+	length = strlen( s );
X+	if( length > sizeof( cl.configstrings ) - sizeof( cl.configstrings[0] ) * i - 1 ) {
X+		Com_Error( ERR_DROP, "CL_ParseConfigString: oversize configstring" );
X+	}
X+
X 	strcpy (cl.configstrings[i], s);
X 
X 	// do something apropriate 
XIndex: qcommon/cmd.c
X===================================================================
XRCS file: /cvs/cvsroot/quake2/src/qcommon/cmd.c,v
Xretrieving revision 1.2
Xdiff -u -r1.2 cmd.c
X--- src/qcommon/cmd.c	3 Jan 2002 05:10:14 -0000	1.2
X+++ src/qcommon/cmd.c	29 Jan 2005 20:57:01 -0000
X@@ -215,8 +215,11 @@
X 			if (text[i] == '\n')
X 				break;
X 		}
X-			
X-				
X+		
X+		// sku - removed potentional buffer overflow vulnerability
X+		if( i > sizeof( line ) - 1 ) {
X+			i = sizeof( line ) - 1;
X+		}
X 		memcpy (line, text, i);
X 		line[i] = 0;
X 		
X@@ -657,7 +660,8 @@
X 		{
X 			int		l;
X 
X-			strcpy (cmd_args, text);
X+			// sku - removed potentional buffer overflow vulnerability
X+			strncpy( cmd_args, text, sizeof( cmd_args ) );
X 
X 			// strip off any trailing whitespace
X 			l = strlen(cmd_args) - 1;
XIndex: qcommon/common.c
X===================================================================
XRCS file: /cvs/cvsroot/quake2/src/qcommon/common.c,v
Xretrieving revision 1.4
Xdiff -u -r1.4 common.c
X--- src/qcommon/common.c	30 Mar 2002 22:48:36 -0000	1.4
X+++ src/qcommon/common.c	29 Jan 2005 20:57:02 -0000
X@@ -797,7 +797,9 @@
X 	l = 0;
X 	do
X 	{
X-		c = MSG_ReadChar (msg_read);
X+		// sku - replaced MSG_ReadChar with MSG_ReadByte to avoid
X+		// potentional vulnerability
X+		c = MSG_ReadByte (msg_read);
X 		if (c == -1 || c == 0)
X 			break;
X 		string[l] = c;
X@@ -817,7 +819,9 @@
X 	l = 0;
X 	do
X 	{
X-		c = MSG_ReadChar (msg_read);
X+		// sku - replaced MSG_ReadChar with MSG_ReadByte to avoid
X+		// potentional vulnerability
X+		c = MSG_ReadByte (msg_read);
X 		if (c == -1 || c == 0 || c == '\n')
X 			break;
X 		string[l] = c;
XIndex: server/sv_main.c
X===================================================================
XRCS file: /cvs/cvsroot/quake2/src/server/sv_main.c,v
Xretrieving revision 1.2
Xdiff -u -r1.2 sv_main.c
X--- src/server/sv_main.c	22 Mar 2002 00:24:37 -0000	1.2
X+++ src/server/sv_main.c	29 Jan 2005 20:57:03 -0000
X@@ -293,8 +293,9 @@
X 
X 	challenge = atoi(Cmd_Argv(3));
X 
X-	strncpy (userinfo, Cmd_Argv(4), sizeof(userinfo)-1);
X-	userinfo[sizeof(userinfo) - 1] = 0;
X+	// sku - reserve 32 bytes for the IP address
X+	strncpy (userinfo, Cmd_Argv(4), sizeof(userinfo)-32);
X+	userinfo[sizeof(userinfo) - 32] = 0;
X 
X 	// force the IP key/value pair so the game can filter based on ip
X 	Info_SetValueForKey (userinfo, "ip", NET_AdrToString(net_from));
X@@ -317,8 +318,11 @@
X 		{
X 			if (NET_CompareBaseAdr (net_from, svs.challenges[i].adr))
X 			{
X-				if (challenge == svs.challenges[i].challenge)
X+				// sku - ignore zero challenges
X+				if( svs.challenges[i].challenge && challenge == svs.challenges[i].challenge ) {
X+					svs.challenges[i].challenge = 0;
X 					break;		// good
X+				}
X 				Netchan_OutOfBandPrint (NS_SERVER, adr, "print\nBad challenge.\n");
X 				return;
X 			}
X@@ -342,6 +346,11 @@
X 			&& ( cl->netchan.qport == qport 
X 			|| adr.port == cl->netchan.remote_address.port ) )
X 		{
X+			// sku - avoid reusing slot of the client already connected
X+			if( cl->state != cs_zombie ) {
X+				Netchan_OutOfBandPrint( NS_SERVER, adr, "print\nConnected client from this IP is already present.\n" );
X+				return;
X+			}
X 			if (!NET_IsLocalAddress (adr) && (svs.realtime - cl->lastconnect) < ((int)sv_reconnect_limit->value * 1000))
X 			{
X 				Com_DPrintf ("%s:reconnect rejected : too soon\n", NET_AdrToString (adr));
XIndex: server/sv_user.c
X===================================================================
XRCS file: /cvs/cvsroot/quake2/src/server/sv_user.c,v
Xretrieving revision 1.2
Xdiff -u -r1.2 sv_user.c
X--- src/server/sv_user.c	21 Mar 2002 04:44:46 -0000	1.2
X+++ src/server/sv_user.c	29 Jan 2005 20:57:04 -0000
X@@ -142,6 +142,9 @@
X 	}
X 	
X 	start = atoi(Cmd_Argv(2));
X+	if( start < 0 ) {
X+		start = 0;	// sku - catch negative offsets
X+	}
X 
X 	// write a packet full of data
X 
X@@ -150,9 +153,18 @@
X 	{
X 		if (sv.configstrings[start][0])
X 		{
X+			int length;
X+
X+			// sku - write configstrings that exceed MAX_QPATH in proper-sized chunks
X+			length = strlen( sv.configstrings[start] );
X+			if( length > MAX_QPATH ) {
X+				length = MAX_QPATH;
X+			}
X+
X 			MSG_WriteByte (&sv_client->netchan.message, svc_configstring);
X 			MSG_WriteShort (&sv_client->netchan.message, start);
X-			MSG_WriteString (&sv_client->netchan.message, sv.configstrings[start]);
X+			SZ_Write (&sv_client->netchan.message, sv.configstrings[start], length);
X+			MSG_WriteByte (&sv_client->netchan.message, 0);
X 		}
X 		start++;
X 	}
X@@ -199,6 +211,9 @@
X 	}
X 	
X 	start = atoi(Cmd_Argv(2));
X+	if( start < 0 ) {
X+		start = 0;
X+	}
X 
X 	memset (&nullstate, 0, sizeof(nullstate));
X 
X@@ -398,7 +413,7 @@
X */
X void SV_ShowServerinfo_f (void)
X {
X-	Info_Print (Cvar_Serverinfo());
X+//	Info_Print (Cvar_Serverinfo());
X }
X 
X 
X
X
X
END-of-quake2-source/files/patch-security
echo x - quake2-source/Makefile
sed 's/^X//' >quake2-source/Makefile << 'END-of-quake2-source/Makefile'
X# New ports collection makefile for:	quake2-source
X# Date created:				29 Sep 2005
X# Whom:					Alejandro Pulver <alejandro@varnet.biz>
X#
X# $FreeBSD$
X#
X
XPORTNAME=	source
XPORTVERSION=	3.21
XCATEGORIES=	games
XMASTER_SITES=	http://www.icculus.org/quake2/files/:icc \
X		ftp://ftp.idsoftware.com/idstuff/quake2/source/:id
XPKGNAMEPREFIX=	quake2-
XDISTNAME=	quake2-r0.16.2
XDISTFILES=	${DISTNAME}${EXTRACT_SUFX}:icc
XDIST_SUBDIR=	quake2lnx
XEXTRACT_ONLY=	${DISTNAME}${EXTRACT_SUFX}
X
XMAINTAINER=	alejandro@varnet.biz
XCOMMENT=	Quake II game source
X
XNO_BUILD=	yes
X
XOPTIONS=	CTF "Install Capture The Flag mod source" off \
X		ROGUE "Install Ground Zero (Rogue) mission pack source" off \
X		XATRIX "Install The Reckoning (Xatrix) mission pack source" off
X
XLATEST_LINK=	${PKGNAMEPREFIX}${PORTNAME}
X
XDATADIR=	${PREFIX}/share/${PKGNAMEPREFIX}${PORTNAME}
X
X.include <bsd.port.pre.mk>
X
X.if defined(WITH_CTF)
XPLIST_SUB+=	CTF=""
X.else
XPLIST_SUB+=	CTF="@comment "
X.endif
X
X.if defined(WITH_ROGUE)
XDISTFILES+=	roguesrc320.shar.Z:id
XEXTRA_PATCHES+=	${FILESDIR}/extra-patch-src_rogue_g__local.h \
X		${FILESDIR}/extra-patch-src_rogue_q__shared.c
XROGUE_OFF=	454
XPLIST_SUB+=	ROGUE=""
X.else
XPLIST_SUB+=	ROGUE="@comment "
X.endif
X
X.if defined(WITH_XATRIX)
XDISTFILES+=	xatrixsrc320.shar.Z:id
XEXTRA_PATCHES+=	${FILESDIR}/extra-patch-src_xatrix_q__shared.c
XXATRIX_OFF=	441
XPLIST_SUB+=	XATRIX=""
X.else
XPLIST_SUB+=	XATRIX="@comment "
X.endif
X
Xpost-extract:
X.for f in rogue xatrix
X.   if defined(WITH_${f:U})
X	@${MKDIR} ${WRKSRC}/src/${f}
X	@(cd ${WRKSRC}/src/${f} && ${GUNZIP_CMD} -c \
X		${DISTDIR}/${DIST_SUBDIR}/${f}src320.shar.Z > \
X		${f}src320.shar && \
X		${TAIL} +${${f:U}_OFF} ${f}src320.shar | ${SH})
X.   endif
X.endfor
X
Xpre-install:
X	@${FIND} -E ${WRKSRC} -type f \
X		-iregex "(Makefile|.*\.(def|dsp|orig|shar))" -print0 | \
X		${XARGS} -0 ${RM}
X
Xdo-install:
X	@${MKDIR} ${DATADIR}
X	@${CP} -R ${WRKSRC}/src/game ${DATADIR}
X	@${INSTALL_DATA} ${FILESDIR}/Makefile.game ${DATADIR}/game/Makefile
X.for f in ctf rogue xatrix
X.   if defined(WITH_${f:U})
X	@${CP} -R ${WRKSRC}/src/${f} ${DATADIR}
X	@${INSTALL_DATA} ${FILESDIR}/Makefile.${f} ${DATADIR}/${f}/Makefile
X.   endif
X.endfor
X
X.include <bsd.port.post.mk>
END-of-quake2-source/Makefile
echo x - quake2-source/pkg-descr
sed 's/^X//' >quake2-source/pkg-descr << 'END-of-quake2-source/pkg-descr'
XQuake II game source.
X
XThis port installs the Quake II game source, together with BSD Makefiles, for
Xbuilding modifications. It can also install the Capture the Flag mod, Rogue
Xand Xatrix game source.
END-of-quake2-source/pkg-descr
echo x - quake2-source/distinfo
sed 's/^X//' >quake2-source/distinfo << 'END-of-quake2-source/distinfo'
XMD5 (quake2lnx/quake2-r0.16.2.tar.gz) = 872fee27fb13a2a4c8876d5973c3c691
XSIZE (quake2lnx/quake2-r0.16.2.tar.gz) = 1496377
XMD5 (quake2lnx/maxpak.pak) = 04d3f1fb7fb4dada7175a41f4595c7eb
XSIZE (quake2lnx/maxpak.pak) = 3282742
XMD5 (quake2lnx/pak10.pak) = fc2de3c33c23cca5f0e6fcec068ce616
XSIZE (quake2lnx/pak10.pak) = 16315845
XMD5 (quake2lnx/pak11.pak) = 221019679613a13c6d7e5f9e21701d85
XSIZE (quake2lnx/pak11.pak) = 1702702
XMD5 (quake2lnx/pak12.pak) = 0c8b49c303014e535394168aed9b668a
XSIZE (quake2lnx/pak12.pak) = 3629554
XMD5 (quake2lnx/pak13.pak) = 9628c82566535e48c59caaee5281b963
XSIZE (quake2lnx/pak13.pak) = 2198193
XMD5 (quake2lnx/pak14.pak) = 5d47605de09c458c7f1c69d8e6fea6a7
XSIZE (quake2lnx/pak14.pak) = 2397651
XMD5 (quake2lnx/pak16.pak) = 94b18e1f2d76fb7e7d0c5bd0ae8d7c69
XSIZE (quake2lnx/pak16.pak) = 2675893
XMD5 (quake2lnx/pak17.pak) = e24d79286ba3c1f3da1f9642a78c49af
XSIZE (quake2lnx/pak17.pak) = 1431798
XMD5 (quake2lnx/pak19.pak) = 070a4d00b93a2a427ca92adee2736000
XSIZE (quake2lnx/pak19.pak) = 648896
XMD5 (quake2lnx/roguesrc320.shar.Z) = 7d5e052839c9e629bad0a6570aa70554
XSIZE (quake2lnx/roguesrc320.shar.Z) = 626769
XMD5 (quake2lnx/xatrixsrc320.shar.Z) = 41fc4ecc4f25c068e7d1f488bd4a1e1a
XSIZE (quake2lnx/xatrixsrc320.shar.Z) = 455917
END-of-quake2-source/distinfo
echo x - quake2-source/pkg-plist
sed 's/^X//' >quake2-source/pkg-plist << 'END-of-quake2-source/pkg-plist'
X%%CTF%%%%DATADIR%%/ctf/docs/admin.gif
X%%CTF%%%%DATADIR%%/ctf/docs/adminset.gif
X%%CTF%%%%DATADIR%%/ctf/docs/automac.gif
X%%CTF%%%%DATADIR%%/ctf/docs/ghost.jpg
X%%CTF%%%%DATADIR%%/ctf/docs/grapple.jpg
X%%CTF%%%%DATADIR%%/ctf/docs/layout.jpg
X%%CTF%%%%DATADIR%%/ctf/docs/mainctf_back.jpg
X%%CTF%%%%DATADIR%%/ctf/docs/menu.gif
X%%CTF%%%%DATADIR%%/ctf/docs/q2ctf.html
X%%CTF%%%%DATADIR%%/ctf/docs/say_team.gif
X%%CTF%%%%DATADIR%%/ctf/docs/stats.jpg
X%%CTF%%%%DATADIR%%/ctf/docs/tech1.gif
X%%CTF%%%%DATADIR%%/ctf/docs/tech2.gif
X%%CTF%%%%DATADIR%%/ctf/docs/tech3.gif
X%%CTF%%%%DATADIR%%/ctf/docs/tech4.gif
X%%CTF%%%%DATADIR%%/ctf/Makefile
X%%CTF%%%%DATADIR%%/ctf/g_ai.c
X%%CTF%%%%DATADIR%%/ctf/g_chase.c
X%%CTF%%%%DATADIR%%/ctf/g_cmds.c
X%%CTF%%%%DATADIR%%/ctf/g_combat.c
X%%CTF%%%%DATADIR%%/ctf/g_ctf.c
X%%CTF%%%%DATADIR%%/ctf/g_ctf.h
X%%CTF%%%%DATADIR%%/ctf/g_func.c
X%%CTF%%%%DATADIR%%/ctf/g_items.c
X%%CTF%%%%DATADIR%%/ctf/g_local.h
X%%CTF%%%%DATADIR%%/ctf/g_main.c
X%%CTF%%%%DATADIR%%/ctf/g_misc.c
X%%CTF%%%%DATADIR%%/ctf/g_monster.c
X%%CTF%%%%DATADIR%%/ctf/g_phys.c
X%%CTF%%%%DATADIR%%/ctf/g_save.c
X%%CTF%%%%DATADIR%%/ctf/g_spawn.c
X%%CTF%%%%DATADIR%%/ctf/g_svcmds.c
X%%CTF%%%%DATADIR%%/ctf/g_target.c
X%%CTF%%%%DATADIR%%/ctf/g_trigger.c
X%%CTF%%%%DATADIR%%/ctf/g_utils.c
X%%CTF%%%%DATADIR%%/ctf/g_weapon.c
X%%CTF%%%%DATADIR%%/ctf/game.h
X%%CTF%%%%DATADIR%%/ctf/m_move.c
X%%CTF%%%%DATADIR%%/ctf/m_player.h
X%%CTF%%%%DATADIR%%/ctf/p_client.c
X%%CTF%%%%DATADIR%%/ctf/p_hud.c
X%%CTF%%%%DATADIR%%/ctf/p_menu.c
X%%CTF%%%%DATADIR%%/ctf/p_menu.h
X%%CTF%%%%DATADIR%%/ctf/p_trail.c
X%%CTF%%%%DATADIR%%/ctf/p_view.c
X%%CTF%%%%DATADIR%%/ctf/p_weapon.c
X%%CTF%%%%DATADIR%%/ctf/q_shared.c
X%%CTF%%%%DATADIR%%/ctf/q_shared.h
X%%DATADIR%%/game/Makefile
X%%DATADIR%%/game/g_ai.c
X%%DATADIR%%/game/g_chase.c
X%%DATADIR%%/game/g_cmds.c
X%%DATADIR%%/game/g_combat.c
X%%DATADIR%%/game/g_func.c
X%%DATADIR%%/game/g_items.c
X%%DATADIR%%/game/g_local.h
X%%DATADIR%%/game/g_main.c
X%%DATADIR%%/game/g_misc.c
X%%DATADIR%%/game/g_monster.c
X%%DATADIR%%/game/g_phys.c
X%%DATADIR%%/game/g_save.c
X%%DATADIR%%/game/g_spawn.c
X%%DATADIR%%/game/g_svcmds.c
X%%DATADIR%%/game/g_target.c
X%%DATADIR%%/game/g_trigger.c
X%%DATADIR%%/game/g_turret.c
X%%DATADIR%%/game/g_utils.c
X%%DATADIR%%/game/g_weapon.c
X%%DATADIR%%/game/game.h
X%%DATADIR%%/game/m_actor.c
X%%DATADIR%%/game/m_actor.h
X%%DATADIR%%/game/m_berserk.c
X%%DATADIR%%/game/m_berserk.h
X%%DATADIR%%/game/m_boss2.c
X%%DATADIR%%/game/m_boss2.h
X%%DATADIR%%/game/m_boss3.c
X%%DATADIR%%/game/m_boss31.c
X%%DATADIR%%/game/m_boss31.h
X%%DATADIR%%/game/m_boss32.c
X%%DATADIR%%/game/m_boss32.h
X%%DATADIR%%/game/m_brain.c
X%%DATADIR%%/game/m_brain.h
X%%DATADIR%%/game/m_chick.c
X%%DATADIR%%/game/m_chick.h
X%%DATADIR%%/game/m_flash.c
X%%DATADIR%%/game/m_flipper.c
X%%DATADIR%%/game/m_flipper.h
X%%DATADIR%%/game/m_float.c
X%%DATADIR%%/game/m_float.h
X%%DATADIR%%/game/m_flyer.c
X%%DATADIR%%/game/m_flyer.h
X%%DATADIR%%/game/m_gladiator.c
X%%DATADIR%%/game/m_gladiator.h
X%%DATADIR%%/game/m_gunner.c
X%%DATADIR%%/game/m_gunner.h
X%%DATADIR%%/game/m_hover.c
X%%DATADIR%%/game/m_hover.h
X%%DATADIR%%/game/m_infantry.c
X%%DATADIR%%/game/m_infantry.h
X%%DATADIR%%/game/m_insane.c
X%%DATADIR%%/game/m_insane.h
X%%DATADIR%%/game/m_medic.c
X%%DATADIR%%/game/m_medic.h
X%%DATADIR%%/game/m_move.c
X%%DATADIR%%/game/m_mutant.c
X%%DATADIR%%/game/m_mutant.h
X%%DATADIR%%/game/m_parasite.c
X%%DATADIR%%/game/m_parasite.h
X%%DATADIR%%/game/m_player.h
X%%DATADIR%%/game/m_rider.h
X%%DATADIR%%/game/m_soldier.c
X%%DATADIR%%/game/m_soldier.h
X%%DATADIR%%/game/m_supertank.c
X%%DATADIR%%/game/m_supertank.h
X%%DATADIR%%/game/m_tank.c
X%%DATADIR%%/game/m_tank.h
X%%DATADIR%%/game/p_client.c
X%%DATADIR%%/game/p_hud.c
X%%DATADIR%%/game/p_trail.c
X%%DATADIR%%/game/p_view.c
X%%DATADIR%%/game/p_weapon.c
X%%DATADIR%%/game/q_shared.c
X%%DATADIR%%/game/q_shared.h
X%%ROGUE%%%%DATADIR%%/rogue/Makefile
X%%ROGUE%%%%DATADIR%%/rogue/dm_ball.c
X%%ROGUE%%%%DATADIR%%/rogue/dm_tag.c
X%%ROGUE%%%%DATADIR%%/rogue/g_ai.c
X%%ROGUE%%%%DATADIR%%/rogue/g_chase.c
X%%ROGUE%%%%DATADIR%%/rogue/g_cmds.c
X%%ROGUE%%%%DATADIR%%/rogue/g_combat.c
X%%ROGUE%%%%DATADIR%%/rogue/g_func.c
X%%ROGUE%%%%DATADIR%%/rogue/g_items.c
X%%ROGUE%%%%DATADIR%%/rogue/g_local.h
X%%ROGUE%%%%DATADIR%%/rogue/g_main.c
X%%ROGUE%%%%DATADIR%%/rogue/g_misc.c
X%%ROGUE%%%%DATADIR%%/rogue/g_monster.c
X%%ROGUE%%%%DATADIR%%/rogue/g_newai.c
X%%ROGUE%%%%DATADIR%%/rogue/g_newdm.c
X%%ROGUE%%%%DATADIR%%/rogue/g_newfnc.c
X%%ROGUE%%%%DATADIR%%/rogue/g_newtarg.c
X%%ROGUE%%%%DATADIR%%/rogue/g_newtrig.c
X%%ROGUE%%%%DATADIR%%/rogue/g_newweap.c
X%%ROGUE%%%%DATADIR%%/rogue/g_phys.c
X%%ROGUE%%%%DATADIR%%/rogue/g_save.c
X%%ROGUE%%%%DATADIR%%/rogue/g_spawn.c
X%%ROGUE%%%%DATADIR%%/rogue/g_sphere.c
X%%ROGUE%%%%DATADIR%%/rogue/g_svcmds.c
X%%ROGUE%%%%DATADIR%%/rogue/g_target.c
X%%ROGUE%%%%DATADIR%%/rogue/g_trigger.c
X%%ROGUE%%%%DATADIR%%/rogue/g_turret.c
X%%ROGUE%%%%DATADIR%%/rogue/g_utils.c
X%%ROGUE%%%%DATADIR%%/rogue/g_weapon.c
X%%ROGUE%%%%DATADIR%%/rogue/game.h
X%%ROGUE%%%%DATADIR%%/rogue/m_actor.c
X%%ROGUE%%%%DATADIR%%/rogue/m_actor.h
X%%ROGUE%%%%DATADIR%%/rogue/m_berserk.c
X%%ROGUE%%%%DATADIR%%/rogue/m_berserk.h
X%%ROGUE%%%%DATADIR%%/rogue/m_boss2.c
X%%ROGUE%%%%DATADIR%%/rogue/m_boss2.h
X%%ROGUE%%%%DATADIR%%/rogue/m_boss3.c
X%%ROGUE%%%%DATADIR%%/rogue/m_boss31.c
X%%ROGUE%%%%DATADIR%%/rogue/m_boss31.h
X%%ROGUE%%%%DATADIR%%/rogue/m_boss32.c
X%%ROGUE%%%%DATADIR%%/rogue/m_boss32.h
X%%ROGUE%%%%DATADIR%%/rogue/m_brain.c
X%%ROGUE%%%%DATADIR%%/rogue/m_brain.h
X%%ROGUE%%%%DATADIR%%/rogue/m_carrier.c
X%%ROGUE%%%%DATADIR%%/rogue/m_carrier.h
X%%ROGUE%%%%DATADIR%%/rogue/m_chick.c
X%%ROGUE%%%%DATADIR%%/rogue/m_chick.h
X%%ROGUE%%%%DATADIR%%/rogue/m_flash.c
X%%ROGUE%%%%DATADIR%%/rogue/m_flipper.c
X%%ROGUE%%%%DATADIR%%/rogue/m_flipper.h
X%%ROGUE%%%%DATADIR%%/rogue/m_float.c
X%%ROGUE%%%%DATADIR%%/rogue/m_float.h
X%%ROGUE%%%%DATADIR%%/rogue/m_flyer.c
X%%ROGUE%%%%DATADIR%%/rogue/m_flyer.h
X%%ROGUE%%%%DATADIR%%/rogue/m_gladiator.c
X%%ROGUE%%%%DATADIR%%/rogue/m_gladiator.h
X%%ROGUE%%%%DATADIR%%/rogue/m_gunner.c
X%%ROGUE%%%%DATADIR%%/rogue/m_gunner.h
X%%ROGUE%%%%DATADIR%%/rogue/m_hover.c
X%%ROGUE%%%%DATADIR%%/rogue/m_hover.h
X%%ROGUE%%%%DATADIR%%/rogue/m_infantry.c
X%%ROGUE%%%%DATADIR%%/rogue/m_infantry.h
X%%ROGUE%%%%DATADIR%%/rogue/m_insane.c
X%%ROGUE%%%%DATADIR%%/rogue/m_insane.h
X%%ROGUE%%%%DATADIR%%/rogue/m_medic.c
X%%ROGUE%%%%DATADIR%%/rogue/m_medic.h
X%%ROGUE%%%%DATADIR%%/rogue/m_move.c
X%%ROGUE%%%%DATADIR%%/rogue/m_move2.c
X%%ROGUE%%%%DATADIR%%/rogue/m_mutant.c
X%%ROGUE%%%%DATADIR%%/rogue/m_mutant.h
X%%ROGUE%%%%DATADIR%%/rogue/m_parasite.c
X%%ROGUE%%%%DATADIR%%/rogue/m_parasite.h
X%%ROGUE%%%%DATADIR%%/rogue/m_player.h
X%%ROGUE%%%%DATADIR%%/rogue/m_rider.h
X%%ROGUE%%%%DATADIR%%/rogue/m_soldier.c
X%%ROGUE%%%%DATADIR%%/rogue/m_soldier.h
X%%ROGUE%%%%DATADIR%%/rogue/m_stalker.c
X%%ROGUE%%%%DATADIR%%/rogue/m_stalker.h
X%%ROGUE%%%%DATADIR%%/rogue/m_supertank.c
X%%ROGUE%%%%DATADIR%%/rogue/m_supertank.h
X%%ROGUE%%%%DATADIR%%/rogue/m_tank.c
X%%ROGUE%%%%DATADIR%%/rogue/m_tank.h
X%%ROGUE%%%%DATADIR%%/rogue/m_turret.c
X%%ROGUE%%%%DATADIR%%/rogue/m_turret.h
X%%ROGUE%%%%DATADIR%%/rogue/m_widow.c
X%%ROGUE%%%%DATADIR%%/rogue/m_widow.h
X%%ROGUE%%%%DATADIR%%/rogue/m_widow2.c
X%%ROGUE%%%%DATADIR%%/rogue/m_widow2.h
X%%ROGUE%%%%DATADIR%%/rogue/p_client.c
X%%ROGUE%%%%DATADIR%%/rogue/p_hud.c
X%%ROGUE%%%%DATADIR%%/rogue/p_trail.c
X%%ROGUE%%%%DATADIR%%/rogue/p_view.c
X%%ROGUE%%%%DATADIR%%/rogue/p_weapon.c
X%%ROGUE%%%%DATADIR%%/rogue/q_shared.c
X%%ROGUE%%%%DATADIR%%/rogue/q_shared.h
X%%XATRIX%%%%DATADIR%%/xatrix/Makefile
X%%XATRIX%%%%DATADIR%%/xatrix/g_ai.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_chase.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_cmds.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_combat.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_func.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_items.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_local.h
X%%XATRIX%%%%DATADIR%%/xatrix/g_main.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_misc.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_monster.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_phys.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_save.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_spawn.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_svcmds.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_target.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_trigger.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_turret.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_utils.c
X%%XATRIX%%%%DATADIR%%/xatrix/g_weapon.c
X%%XATRIX%%%%DATADIR%%/xatrix/game.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_actor.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_actor.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_berserk.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_berserk.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_boss2.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_boss2.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_boss3.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_boss31.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_boss31.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_boss32.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_boss32.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_boss5.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_brain.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_brain.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_chick.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_chick.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_fixbot.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_fixbot.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_flash.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_flipper.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_flipper.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_float.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_float.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_flyer.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_flyer.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_gekk.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_gekk.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_gladb.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_gladiator.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_gladiator.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_gunner.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_gunner.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_hover.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_hover.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_infantry.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_infantry.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_insane.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_insane.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_medic.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_medic.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_move.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_mutant.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_mutant.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_parasite.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_parasite.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_player.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_rider.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_soldier.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_soldier.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_soldierh.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_supertank.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_supertank.h
X%%XATRIX%%%%DATADIR%%/xatrix/m_tank.c
X%%XATRIX%%%%DATADIR%%/xatrix/m_tank.h
X%%XATRIX%%%%DATADIR%%/xatrix/p_client.c
X%%XATRIX%%%%DATADIR%%/xatrix/p_hud.c
X%%XATRIX%%%%DATADIR%%/xatrix/p_trail.c
X%%XATRIX%%%%DATADIR%%/xatrix/p_view.c
X%%XATRIX%%%%DATADIR%%/xatrix/p_weapon.c
X%%XATRIX%%%%DATADIR%%/xatrix/q_shared.c
X%%XATRIX%%%%DATADIR%%/xatrix/q_shared.h
X%%XATRIX%%@dirrm %%DATADIR%%/xatrix
X%%ROGUE%%@dirrm %%DATADIR%%/rogue
X@dirrm %%DATADIR%%/game
X%%CTF%%@dirrm %%DATADIR%%/ctf/docs
X%%CTF%%@dirrm %%DATADIR%%/ctf
X@dirrm %%DATADIR%%
END-of-quake2-source/pkg-plist
exit

--- quake2-source.shar ends here ---



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



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