FreeBSD Bugzilla – Attachment 61249 Details for
Bug 91803
[NEW PORT] games/alienarena: Alien Arena 2006 (native version)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
alienarena.shar
alienarena.shar (text/plain), 68.45 KB, created by
Alejandro Pulver
on 2006-01-14 23:50:03 UTC
(
hide
)
Description:
alienarena.shar
Filename:
MIME Type:
Creator:
Alejandro Pulver
Created:
2006-01-14 23:50:03 UTC
Size:
68.45 KB
patch
obsolete
># 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: ># ># alienarena ># alienarena/Makefile ># alienarena/files ># alienarena/files/patch-client_menu.c ># alienarena/files/patch-client_qmenu.c ># alienarena/files/patch-game_acesrc_acebot__ai.c ># alienarena/files/patch-game_acesrc_acebot__cmds.c ># alienarena/files/patch-game_acesrc_acebot__movement.c ># alienarena/files/patch-game_acesrc_acebot__nodes.c ># alienarena/files/patch-game_acesrc_acebot__spawn.c ># alienarena/files/patch-game_acesrc_g__fakeclient.c ># alienarena/files/patch-game_g__local.h ># alienarena/files/patch-game_g__main.c ># alienarena/files/patch-game_p__client.c ># alienarena/files/patch-game_q__shared.c ># alienarena/files/patch-game_q__shared.h ># alienarena/files/patch-linux_Makefile ># alienarena/files/patch-linux_q__shlinux.c ># alienarena/files/patch-qcommon_files.c ># alienarena/files/patch-ref__gl_qgl.h ># alienarena/files/patch-ref__gl_r__bloom.c ># alienarena/files/patch-ref__gl_r__draw.c ># alienarena/files/patch-client_cl__parse.c ># alienarena/files/patch-ref__gl_r__main.c ># alienarena/files/patch-ref__gl_r__script.c ># alienarena/files/patch-server_sv__main.c ># alienarena/files/patch-linux_gl__glx.c ># alienarena/files/patch-linux_glw__linux.h ># alienarena/files/patch-linux_snd__linux.c ># alienarena/files/patch-qcommon_cmd.c ># alienarena/files/patch-linux_sys__linux.c ># alienarena/files/patch-client_cl__ents.c ># alienarena/files/patch-client_cl__main.c ># alienarena/files/patch-client_snd__mix.c ># alienarena/files/patch-game_acesrc_acebot__items.c ># alienarena/files/patch-game_m__leader.c ># alienarena/files/patch-qcommon_common.c ># alienarena/files/patch-qcommon_qcommon.h ># alienarena/files/patch-ref__gl_r__local.h ># alienarena/files/patch-client_snd__dma.c ># alienarena/files/patch-server_sv__user.c ># alienarena/files/patch-game_g__phys.c ># alienarena/files/patch-game_acesrc_acebot__compress.c ># alienarena/files/patch-linux_cd__linux.c ># alienarena/files/alienarena.in ># alienarena/files/alienarena-ded.in ># alienarena/files/alienarena-sdl.in ># alienarena/distinfo ># alienarena/pkg-descr ># alienarena/pkg-message ># alienarena/pkg-plist ># >echo c - alienarena >mkdir -p alienarena > /dev/null 2>&1 >echo x - alienarena/Makefile >sed 's/^X//' >alienarena/Makefile << 'END-of-alienarena/Makefile' >X# New ports collection makefile for: alienarena >X# Date created: 13 Jan 2005 >X# Whom: Alejandro Pulver <alejandro@varnet.biz> >X# >X# $FreeBSD$ >X# >X >XPORTNAME= alienarena >XPORTVERSION= 2006.0.30 >XCATEGORIES= games >XMASTER_SITES= http://offload1.icculus.org/~ravage/alienarena2006/:full \ >X http://cor.planetquake.gamespy.com/codered/files/:patch >XDISTFILES= ${PORTNAME}-2006-x86.run:full \ >X aa2k6-update-12-30.tar.gz:patch >X >XMAINTAINER= alejandro@varnet.biz >XCOMMENT= Alien Arena 2006 (native version) >X >XLIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg >XRUN_DEPENDS= ${DATADIR}/arena/default.cfg:${PORTSDIR}/games/alienarena-data >X >XUSE_X_PREFIX= yes >XUSE_GMAKE= yes >XUSE_REINPLACE= yes >XUSE_GL= yes >XWANT_SDL= yes >X >XBUILD_WRKSRC= ${WRKDIR}/source/linux >XWRKSRC= ${WRKDIR}/source >XALL_TARGET= build_release >X >XOPTIONS= SDLSOUND "Build client that uses SDL for sound" off >X >XSUB_FILES= alienarena alienarena-ded >XSUB_LIST= LIBDIR=${LIBDIR} >XPLIST_SUB= LIBDIR=${LIBDIR:S/${PREFIX}\///} >XLIBDIR= ${PREFIX}/lib/${PORTNAME} >X >X.include <bsd.port.pre.mk> >X >XEXE_TARGETS= crx crded >XSCRIPTS= alienarena alienarena-ded >X >X.if defined(WITH_SDLSOUND) || ${HAVE_SDL:Msdl} != "" >XUSE_SDL+= sdl >XMAKE_ENV+= SDLSOUND=1 >XEXE_TARGETS+= crx.sdl >XSCRIPTS+= alienarena-sdl >XSUB_FILES+= alienarena-sdl >XPLIST_SUB+= SDLSOUND="" >X.else >XPLIST_SUB+= SDLSOUND="@comment " >X.endif >X >Xdo-extract: >X @${MKDIR} ${WRKDIR} >X @cd ${WRKDIR} && \ >X ${TAIL} -c +8778 ${DISTDIR}/${PORTNAME}-2006-x86.run | ${TAR} xfz - >X @${TAR} xfz ${WRKDIR}/alienarena-2006-src.tar.gz -C ${WRKDIR} >X @${TAR} xfz ${DISTDIR}/aa2k6-update-12-30.tar.gz -C ${WRKDIR} >X >X# Convert source files from DOS to Unix. >Xpost-extract: >X @${FIND} ${WRKSRC} -type f | ${XARGS} ${FILE} | ${GREP} "CRLF" | \ >X ${SED} -e 's/:.*//' | \ >X ${XARGS} ${REINPLACE_CMD} -e "s/`${PRINTF} '\r'`$$//" >X >Xdo-install: >X ${MKDIR} ${LIBDIR}/arena ${LIBDIR}/data1 >X cd ${WRKSRC}/linux/release && \ >X ${INSTALL_PROGRAM} arena/game.so ${LIBDIR}/arena && \ >X ${INSTALL_PROGRAM} game.so ${LIBDIR}/data1 >X ${LN} -s ${DATADIR}/arena/* ${LIBDIR}/arena >X ${LN} -s ${DATADIR}/botinfo ${LIBDIR} >X ${LN} -s ${DATADIR}/data1/* ${LIBDIR}/data1 >X.for f in ${EXE_TARGETS} >X ${INSTALL_PROGRAM} ${WRKSRC}/linux/release/${f} ${LIBDIR} >X.endfor >X.for f in ${SCRIPTS} >X ${INSTALL_SCRIPT} ${WRKDIR}/${f} ${PREFIX}/bin >X.endfor >X >X.include <bsd.port.post.mk> >END-of-alienarena/Makefile >echo c - alienarena/files >mkdir -p alienarena/files > /dev/null 2>&1 >echo x - alienarena/files/patch-client_menu.c >sed 's/^X//' >alienarena/files/patch-client_menu.c << 'END-of-alienarena/files/patch-client_menu.c' >X--- client/menu.c.orig Wed Oct 5 18:36:09 2005 >X+++ client/menu.c Fri Dec 2 12:04:43 2005 >X@@ -2759,14 +2759,14 @@ >X >X strcpy( shortname, COM_Parse( &s ) ); >X l = strlen(shortname); >X-#ifndef __linux__ >X+#if !defined(__linux__) && !defined(__FreeBSD__) >X for (j=0 ; j<l ; j++) >X shortname[j] = toupper(shortname[j]); >X #endif >X strcpy( longname, COM_Parse( &s ) ); >X Com_sprintf( scratch, sizeof( scratch ), "%s\n%s", longname, shortname ); >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X >X if (s_rules_box.curvalue == 0 || s_rules_box.curvalue == 1) { >X if((shortname[0] == 'd' && shortname[1] == 'm') || (shortname[0] == 't' && shortname[1] == 'o')) { >END-of-alienarena/files/patch-client_menu.c >echo x - alienarena/files/patch-client_qmenu.c >sed 's/^X//' >alienarena/files/patch-client_qmenu.c << 'END-of-alienarena/files/patch-client_qmenu.c' >X--- client/qmenu.c.orig Tue Oct 4 21:25:54 2005 >X+++ client/qmenu.c Fri Dec 2 12:59:58 2005 >X@@ -25,7 +25,8 @@ >X >X static void Action_DoEnter( menuaction_s *a ); >X static void Action_Draw( menuaction_s *a ); >X-static void Menu_DrawStatusBar( const char *string ); >X+static void Menu_DrawStatusBar( const char *string ); >X+void Menu_DrawString( int x, int y, const char *string ); >X static void Menulist_DoEnter( menulist_s *l ); >X static void MenuList_Draw( menulist_s *l ); >X static void Separator_Draw( menuseparator_s *s ); >END-of-alienarena/files/patch-client_qmenu.c >echo x - alienarena/files/patch-game_acesrc_acebot__ai.c >sed 's/^X//' >alienarena/files/patch-game_acesrc_acebot__ai.c << 'END-of-alienarena/files/patch-game_acesrc_acebot__ai.c' >X--- game/acesrc/acebot_ai.c.orig Wed Sep 21 14:11:19 2005 >X+++ game/acesrc/acebot_ai.c Fri Dec 2 12:05:40 2005 >X@@ -61,7 +61,7 @@ >X // to provide a "higher" level of AI. >X //////////////////////////////////////////////////////////////////////// >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X #include "../g_local.h" >X #include "../m_player.h" >X #else >END-of-alienarena/files/patch-game_acesrc_acebot__ai.c >echo x - alienarena/files/patch-game_acesrc_acebot__cmds.c >sed 's/^X//' >alienarena/files/patch-game_acesrc_acebot__cmds.c << 'END-of-alienarena/files/patch-game_acesrc_acebot__cmds.c' >X--- game/acesrc/acebot_cmds.c.orig Sat Jul 23 10:31:47 2005 >X+++ game/acesrc/acebot_cmds.c Fri Dec 2 12:05:52 2005 >X@@ -56,7 +56,7 @@ >X // >X /////////////////////////////////////////////////////////////////////// >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X #include "../g_local.h" >X #else >X #include "..\g_local.h" >END-of-alienarena/files/patch-game_acesrc_acebot__cmds.c >echo x - alienarena/files/patch-game_acesrc_acebot__movement.c >sed 's/^X//' >alienarena/files/patch-game_acesrc_acebot__movement.c << 'END-of-alienarena/files/patch-game_acesrc_acebot__movement.c' >X--- game/acesrc/acebot_movement.c.orig Wed Sep 7 10:01:24 2005 >X+++ game/acesrc/acebot_movement.c Fri Dec 2 12:06:18 2005 >X@@ -56,7 +56,7 @@ >X // >X /////////////////////////////////////////////////////////////////////// >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X #include "../g_local.h" >X #else >X #include "..\g_local.h" >END-of-alienarena/files/patch-game_acesrc_acebot__movement.c >echo x - alienarena/files/patch-game_acesrc_acebot__nodes.c >sed 's/^X//' >alienarena/files/patch-game_acesrc_acebot__nodes.c << 'END-of-alienarena/files/patch-game_acesrc_acebot__nodes.c' >X--- game/acesrc/acebot_nodes.c.orig Thu Dec 29 20:23:22 2005 >X+++ game/acesrc/acebot_nodes.c Sat Jan 14 19:44:53 2006 >X@@ -57,7 +57,7 @@ >X // >X /////////////////////////////////////////////////////////////////////// >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X #include "../g_local.h" >X #else >X #include "..\g_local.h" >X@@ -725,7 +725,7 @@ >X >X safe_bprintf(PRINT_MEDIUM,"Saving node table..."); >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X strcpy(filename,"botinfo/nav/"); >X #else >X strcpy(filename,"botinfo\\nav\\"); >X@@ -763,7 +763,7 @@ >X char filename[60]; >X int version; >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X strcpy(filename,"botinfo/nav/"); >X #else >X strcpy(filename,"botinfo\\nav\\"); >END-of-alienarena/files/patch-game_acesrc_acebot__nodes.c >echo x - alienarena/files/patch-game_acesrc_acebot__spawn.c >sed 's/^X//' >alienarena/files/patch-game_acesrc_acebot__spawn.c << 'END-of-alienarena/files/patch-game_acesrc_acebot__spawn.c' >X--- game/acesrc/acebot_spawn.c.orig Sat Jan 14 19:40:29 2006 >X+++ game/acesrc/acebot_spawn.c Sat Jan 14 19:46:15 2006 >X@@ -57,7 +57,7 @@ >X // >X /////////////////////////////////////////////////////////////////////// >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X #include "../g_local.h" >X #include "../m_player.h" >X #else >X@@ -84,7 +84,7 @@ >X FILE *pOut; >X int i,count = 0; >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X if((pOut = fopen("botinfo/bots.tmp", "wb" )) == NULL) >X #else >X if((pOut = fopen("botinfo\\bots.tmp", "wb" )) == NULL) >X@@ -134,7 +134,7 @@ >X >X #ifdef ARENA //certain bots and configurations will be loaded level specific >X if (((int)(dmflags->value) & DF_SKINTEAMS) || ctf->value) >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X strcpy(bot_filename, "botinfo/team.tmp"); >X else >X sprintf(bot_filename, "botinfo/%s.tmp", level.mapname); >X@@ -147,7 +147,7 @@ >X return; // bail >X >X #else >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X if((pIn = fopen("botinfo/bots.tmp", "rb" )) == NULL) >X #else >X if((pIn = fopen("botinfo\\bots.tmp", "rb" )) == NULL) >X@@ -255,7 +255,7 @@ >X >X } >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X void ACECO_ReadConfig(char config_file[128]) //use standard c routines for linux >X { >X FILE *fp; >X@@ -514,7 +514,7 @@ >X //load bot configuration file(specific to each bot) >X info = Info_ValueForKey (bot->client->pers.userinfo, "name"); >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X sprintf(bot_configfilename, "botinfo/%s.cfg", info); >X //write something else for linux only >X #else >END-of-alienarena/files/patch-game_acesrc_acebot__spawn.c >echo x - alienarena/files/patch-game_acesrc_g__fakeclient.c >sed 's/^X//' >alienarena/files/patch-game_acesrc_g__fakeclient.c << 'END-of-alienarena/files/patch-game_acesrc_g__fakeclient.c' >X--- game/acesrc/g_fakeclient.c.orig Sat Jul 23 10:31:47 2005 >X+++ game/acesrc/g_fakeclient.c Fri Dec 2 12:11:21 2005 >X@@ -18,7 +18,7 @@ >X >X */ >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X #include "../g_local.h" >X #else >X #include "..\g_local.h" >END-of-alienarena/files/patch-game_acesrc_g__fakeclient.c >echo x - alienarena/files/patch-game_g__local.h >sed 's/^X//' >alienarena/files/patch-game_g__local.h << 'END-of-alienarena/files/patch-game_g__local.h' >X--- game/g_local.h.orig Wed Sep 21 14:12:36 2005 >X+++ game/g_local.h Fri Dec 2 12:12:24 2005 >X@@ -1273,14 +1273,14 @@ >X extern void DeathcamStart (edict_t *ent); >X >X // ACEBOT_ADD >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X #include "acesrc/acebot.h" >X #else >X #include "acesrc\acebot.h" >X #endif >X // ACEBOT_END >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X void FS_FreeFile (void *buffer); >X void Z_Free (void *ptr); >X void Com_Error (int code, char *fmt, ...); >END-of-alienarena/files/patch-game_g__local.h >echo x - alienarena/files/patch-game_g__main.c >sed 's/^X//' >alienarena/files/patch-game_g__main.c << 'END-of-alienarena/files/patch-game_g__main.c' >X--- game/g_main.c.orig Tue Sep 27 11:38:16 2005 >X+++ game/g_main.c Fri Dec 2 12:12:51 2005 >X@@ -389,7 +389,7 @@ >X >X strcpy( shortname, COM_Parse( &s ) ); >X l = strlen(shortname); >X-#ifndef __linux__ >X+#if !defined(__linux__) && !defined(__FreeBSD__) >X for (j=0 ; j<l ; j++) >X shortname[j] = toupper(shortname[j]); >X #endif >END-of-alienarena/files/patch-game_g__main.c >echo x - alienarena/files/patch-game_p__client.c >sed 's/^X//' >alienarena/files/patch-game_p__client.c << 'END-of-alienarena/files/patch-game_p__client.c' >X--- game/p_client.c.orig Fri Jan 13 16:44:31 2006 >X+++ game/p_client.c Fri Jan 13 16:49:02 2006 >X@@ -321,7 +321,7 @@ >X //here is where the bot chat features will be added. >X //default is on. Setting to 1 turns it off. >X >X-#ifndef __linux__ >X+#if !defined(__linux__) && !defined(__FreeBSD__) >X if ((!((int)(dmflags->value) & DF_BOTCHAT)) && self->is_bot) >X { >X msg = random() * 12; >END-of-alienarena/files/patch-game_p__client.c >echo x - alienarena/files/patch-game_q__shared.c >sed 's/^X//' >alienarena/files/patch-game_q__shared.c << 'END-of-alienarena/files/patch-game_q__shared.c' >X--- game/q_shared.c.orig Fri Aug 5 07:13:03 2005 >X+++ game/q_shared.c Fri Dec 2 12:34:32 2005 >X@@ -345,7 +345,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-alienarena/files/patch-game_q__shared.c >echo x - alienarena/files/patch-game_q__shared.h >sed 's/^X//' >alienarena/files/patch-game_q__shared.h << 'END-of-alienarena/files/patch-game_q__shared.h' >X--- game/q_shared.h.orig Thu Aug 25 09:42:14 2005 >X+++ game/q_shared.h Fri Dec 2 12:34:52 2005 >X@@ -146,7 +146,7 @@ >X // microsoft's fabs seems to be ungodly slow... >X //float Q_fabs (float f); >X //#define fabs(f) Q_fabs(f) >X-#if !defined C_ONLY && !defined __linux__ && !defined __sgi >X+#if !defined C_ONLY && !defined __linux__ && !defined __sgi && !defined __FreeBSD__ >X extern long Q_ftol( float f ); >X #else >X #define Q_ftol( f ) ( long ) (f) >END-of-alienarena/files/patch-game_q__shared.h >echo x - alienarena/files/patch-linux_Makefile >sed 's/^X//' >alienarena/files/patch-linux_Makefile << 'END-of-alienarena/files/patch-linux_Makefile' >X--- linux/Makefile.orig Thu Dec 29 20:23:22 2005 >X+++ linux/Makefile Sat Jan 14 19:51:24 2006 >X@@ -11,25 +11,12 @@ >X GLIBC= >X endif >X >X-ifneq (,$(findstring alpha,$(shell uname -m))) >X-ARCH=axp >X-else >X-ifneq (,$(findstring ppc,$(shell uname -m))) >X-ARCH=ppc >X-else >X-ifneq (,$(findstring x86_64,$(shell uname -m))) >X-ARCH=x86_64 >X-else >X-ARCH=i386 >X-endif >X-endif >X-endif >X NOARCH=noarch >X >X MOUNT_DIR=.. >X >X-BUILD_DEBUG_DIR=debug$(ARCH) >X-BUILD_RELEASE_DIR=release$(ARCH) >X+BUILD_DEBUG_DIR=debug >X+BUILD_RELEASE_DIR=release >X CLIENT_DIR=$(MOUNT_DIR)/client >X SERVER_DIR=$(MOUNT_DIR)/server >X REF_GL_DIR=$(MOUNT_DIR)/ref_gl >X@@ -42,7 +29,7 @@ >X >X EGCS=/usr/local/egcs-1.1.2/bin/gcc >X >X-CC=gcc >X+CC?=gcc >X >X ifeq ($(ARCH),x86_64) >X _LIB := lib64 >X@@ -50,46 +37,50 @@ >X _LIB := lib >X endif >X >X-BASE_CFLAGS=-Dstricmp=strcasecmp -D_stricmp=strcasecmp -D__linux__ >X+BASE_CFLAGS=-Dstricmp=strcasecmp -D_stricmp=strcasecmp >X >X ifeq ($(ARCH),axp) >X RELEASE_CFLAGS=$(BASE_CFLAGS) -ffast-math -funroll-loops \ >X -fomit-frame-pointer -fexpensive-optimizations >X endif >X >X-ifeq ($(ARCH),ppc) >X RELEASE_CFLAGS=$(BASE_CFLAGS) -O2 -ffast-math -funroll-loops \ >X -fomit-frame-pointer -fexpensive-optimizations >X-endif >X- >X-ifeq ($(ARCH),sparc) >X-RELEASE_CFLAGS=$(BASE_CFLAGS) -ffast-math -funroll-loops \ >X- -fomit-frame-pointer -fexpensive-optimizations >X-endif >X >X ifeq ($(ARCH),i386) >X-RELEASE_CFLAGS=$(BASE_CFLAGS) -O2 -ffast-math -funroll-loops -falign-loops=2 \ >X- -falign-jumps=2 -falign-functions=2 -fno-strict-aliasing >X-endif >X- >X-ifeq ($(ARCH),x86_64) >X-RELEASE_CFLAGS=$(BASE_CFLAGS) -O2 -ffast-math -funroll-loops \ >X- -fomit-frame-pointer -fexpensive-optimizations -fno-strict-aliasing >X+RELEASE_CFLAGS+=-falign-loops=2 -falign-jumps=2 -falign-functions=2 \ >X+ -fno-strict-aliasing >X endif >X >X ARENA_CFLAGS=-DARENA >X >X DEBUG_CFLAGS=$(BASE_CFLAGS) -g >X-LDFLAGS=-ldl -lm >X+ >X+OSTYPE := $(shell uname -s) >X+ >X+ifeq ($(OSTYPE),FreeBSD) >X+LDFLAGS=-lm >X+endif >X+ifeq ($(OSTYPE),Linux) >X+LDFLAGS=-lm -ldl >X+endif >X+ >X SVGALDFLAGS=-lvga -lm >X-XLDFLAGS=-L/usr/X11R6/$(_LIB) -lX11 -lXext -lXxf86dga >X-XCFLAGS= >X >X-GLLDFLAGS=-L/usr/X11R6/$(_LIB) -L/usr/local/$(_LIB) -lX11 -lXext -lvga -lm >X-GLXLDFLAGS=-L/usr/X11R6/$(_LIB) -L/usr/local/$(_LIB) -lX11 -lXext -lXxf86dga -lXxf86vm -lm -ljpeg -lGL -lGLU >X+LOCALBASE?=/usr/local >X+X11BASE?=/usr/X11R6 >X+ >X+GLCFLAGS=-I$(X11BASE)/include >X+ >X+XLDFLAGS=-L$(X11BASE)/$(_LIB) -lX11 -lXext -lXxf86dga >X+ >X+GLLDFLAGS=-L$(X11BASE)/$(_LIB) -L$(LOCALBASE)/$(_LIB) -lX11 -lXext -lvga -lm >X+GLXLDFLAGS=-L$(X11BASE)/$(_LIB) -L$(LOCALBASE)/$(_LIB) -lX11 -lXext -lXxf86dga -lXxf86vm -lm -ljpeg -lGL -lGLU >X+ >X+SDL_CONFIG?=sdl-config >X >X-SDLCFLAGS=$(shell sdl-config --cflags) >X-SDLLDFLAGS=$(shell sdl-config --libs) >X+SDLCFLAGS=$(shell $(SDL_CONFIG) --cflags) >X+SDLLDFLAGS=$(shell $(SDL_CONFIG) --libs) >X >X SHLIBEXT=so >X >X@@ -117,13 +108,13 @@ >X >X ifeq ($(ARCH),axp) >X TARGETS=$(BUILDDIR)/crded \ >X- $(BUILDDIR)/game$(ARCH).$(SHLIBEXT) \ >X- $(BUILDDIR)/arena/game$(ARCH).$(SHLIBEXT) >X+ $(BUILDDIR)/game.$(SHLIBEXT) \ >X+ $(BUILDDIR)/arena/game.$(SHLIBEXT) >X else >X TARGETS=$(BUILDDIR)/crded \ >X $(BUILDDIR)/crx \ >X- $(BUILDDIR)/game$(ARCH).$(SHLIBEXT) \ >X- $(BUILDDIR)/arena/game$(ARCH).$(SHLIBEXT) >X+ $(BUILDDIR)/game.$(SHLIBEXT) \ >X+ $(BUILDDIR)/arena/game.$(SHLIBEXT) >X endif >X >X ifeq ($(strip $(SDLSOUND)),1) >X@@ -146,7 +137,7 @@ >X $(BUILD_RELEASE_DIR)/ref_gl \ >X $(BUILD_RELEASE_DIR)/game \ >X $(BUILD_RELEASE_DIR)/arena >X- $(MAKE) targets BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(RELEASE_CFLAGS)" >X+ $(MAKE) targets BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS+="$(RELEASE_CFLAGS)" >X >X all: build_debug build_release >X >X@@ -616,7 +607,7 @@ >X >X >X >X-$(BUILDDIR)/game$(ARCH).$(SHLIBEXT) : $(GAME_OBJS) >X+$(BUILDDIR)/game.$(SHLIBEXT) : $(GAME_OBJS) >X $(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(GAME_OBJS) >X >X >X@@ -848,7 +839,7 @@ >X $(BUILDDIR)/arena/p_weapon.o \ >X $(BUILDDIR)/arena/vehicles.o >X >X-$(BUILDDIR)/arena/game$(ARCH).$(SHLIBEXT) : $(ARENA_OBJS) >X+$(BUILDDIR)/arena/game.$(SHLIBEXT) : $(ARENA_OBJS) >X $(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(ARENA_OBJS) >X >X >X@@ -1025,10 +1016,10 @@ >X clean: clean-debug clean-release >X >X clean-debug: >X- $(MAKE) clean2 BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)" >X+ $(MAKE) clean2 BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS+="$(DEBUG_CFLAGS)" >X >X clean-release: >X- $(MAKE) clean2 BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(DEBUG_CFLAGS)" >X+ $(MAKE) clean2 BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS+="$(DEBUG_CFLAGS)" >X >X clean2: >X -rm -f \ >END-of-alienarena/files/patch-linux_Makefile >echo x - alienarena/files/patch-linux_q__shlinux.c >sed 's/^X//' >alienarena/files/patch-linux_q__shlinux.c << 'END-of-alienarena/files/patch-linux_q__shlinux.c' >X--- linux/q_shlinux.c.orig Sat Jul 23 10:31:48 2005 >X+++ linux/q_shlinux.c Sat Dec 3 13:47:56 2005 >X@@ -30,6 +30,11 @@ >X >X #include "../qcommon/qcommon.h" >X >X+#if defined(__FreeBSD__) >X+ /* For round_page macro. */ >X+#include <machine/param.h> >X+#endif >X+ >X //=============================================================================== >X >X byte *membase; >X@@ -41,8 +46,14 @@ >X // reserve a huge chunk of memory, but don't commit any yet >X maxhunksize = maxsize + sizeof(int); >X curhunksize = 0; >X+#if defined(__FreeBSD__) >X+ /* MAP_ANONYMOUS -> MAP_ANON */ >X+ membase = mmap(0, maxhunksize, PROT_READ|PROT_WRITE, >X+ MAP_PRIVATE|MAP_ANON, -1, 0); >X+#else >X membase = mmap(0, maxhunksize, PROT_READ|PROT_WRITE, >X MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); >X+#endif >X if (membase == NULL || membase == (byte *)-1) >X Sys_Error("unable to virtual allocate %d bytes", maxsize); >X >X@@ -68,7 +79,33 @@ >X { >X byte *n; >X >X+#if defined(__FreeBSD__) >X+ /* >X+ * The Linux system call mremap() is not present, so a wrapper is >X+ * needed. This code frees the unused part of the allocated memory >X+ * (equivalent to mremap() when shrinking a block of memory). >X+ */ >X+ >X+ size_t old_size = maxhunksize; >X+ size_t new_size = curhunksize + sizeof(int); >X+ void * unmap_base; >X+ size_t unmap_len; >X+ >X+ new_size = round_page(new_size); >X+ old_size = round_page(old_size); >X+ >X+ if (new_size > old_size) >X+ n = 0; /* error */ >X+ else if (new_size < old_size) >X+ { >X+ unmap_base = (caddr_t)(membase + new_size); >X+ unmap_len = old_size - new_size; >X+ n = munmap(unmap_base, unmap_len) + membase; >X+ } >X+#endif >X+#if defined(__linux__) >X n = mremap(membase, maxhunksize, curhunksize + sizeof(int), 0); >X+#endif >X if (n != membase) >X Sys_Error("Hunk_End: Could not remap virtual block (%d)", errno); >X *((int *)membase) = curhunksize + sizeof(int); >END-of-alienarena/files/patch-linux_q__shlinux.c >echo x - alienarena/files/patch-qcommon_files.c >sed 's/^X//' >alienarena/files/patch-qcommon_files.c << 'END-of-alienarena/files/patch-qcommon_files.c' >X--- qcommon/files.c.orig Sat Jan 14 19:40:29 2006 >X+++ qcommon/files.c Sat Jan 14 19:43:20 2006 >X@@ -569,7 +569,7 @@ >X // add the directory to the search path >X // >X search = Z_Malloc (sizeof(searchpath_t)); >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X strncpy (search->filename, dir, sizeof(search->filename)-1); >X search->filename[sizeof(search->filename)-1] = 0; >X #else >X@@ -596,7 +596,7 @@ >X >X } >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X /* >X ================ >X FS_AddHomeAsGameDirectory >X@@ -634,7 +634,7 @@ >X */ >X char *FS_Gamedir (void) >X { >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X return fs_gamedir; >X #else >X if (*fs_gamedir) >X@@ -651,13 +651,13 @@ >X */ >X void FS_ExecAutoexec (void) >X { >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X searchpath_t *s, *end; >X #else >X char *dir; >X #endif >X char name [MAX_QPATH]; >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X if (fs_searchpaths == fs_base_searchpaths) >X end = NULL; >X #else >X@@ -666,7 +666,7 @@ >X Com_sprintf(name, sizeof(name), "%s/%s/autoexec.cfg", fs_basedir->string, dir); >X #endif >X else >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X end = fs_base_searchpaths; >X >X // search through all the paths for an autoexec.cfg file >X@@ -747,7 +747,7 @@ >X if (fs_cddir->string[0]) >X FS_AddGameDirectory (va("%s/%s", fs_cddir->string, dir) ); >X FS_AddGameDirectory (va("%s/%s", fs_basedir->string, dir) ); >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X FS_AddHomeAsGameDirectory(dir); >X #endif >X } >X@@ -846,7 +846,7 @@ >X return list; >X } >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X void FS_FreeFileList (char **list, int n) // jit >X { >X int i; >X@@ -953,7 +953,7 @@ >X searchpath_t *s; >X char *prev; >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X prev = NULL; /* fs_gamedir is the first directory in the searchpath */ >X #else >X if (!prevpath) >X@@ -965,7 +965,7 @@ >X { >X if (s->pack) >X continue; >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X if (prevpath == NULL) >X return s->filename; >X #endif >X@@ -1009,7 +1009,7 @@ >X // >X FS_AddGameDirectory (va("%s/"BASEDIRNAME, fs_basedir->string) ); >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X FS_AddHomeAsGameDirectory(BASEDIRNAME); >X #endif >X // any set gamedirs will be freed up to here >END-of-alienarena/files/patch-qcommon_files.c >echo x - alienarena/files/patch-ref__gl_qgl.h >sed 's/^X//' >alienarena/files/patch-ref__gl_qgl.h << 'END-of-alienarena/files/patch-ref__gl_qgl.h' >X--- ref_gl/qgl.h.orig Sat Jul 23 10:31:48 2005 >X+++ ref_gl/qgl.h Fri Dec 2 12:39:59 2005 >X@@ -30,7 +30,7 @@ >X >X #include <GL/gl.h> >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X //#include <GL/fxmesa.h> >X #include <GL/glx.h> >X #endif >X@@ -430,7 +430,7 @@ >X >X #endif >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X >X // local function in dll >X extern void *qwglGetProcAddress(char *symbol); >X@@ -481,7 +481,7 @@ >X #define GL_TEXTURE0_ARB 0x84C0 >X #define GL_TEXTURE1_ARB 0x84C1 >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X #ifdef GL_TEXTURE0 >X #undef GL_TEXTURE0 >X #endif >END-of-alienarena/files/patch-ref__gl_qgl.h >echo x - alienarena/files/patch-ref__gl_r__bloom.c >sed 's/^X//' >alienarena/files/patch-ref__gl_r__bloom.c << 'END-of-alienarena/files/patch-ref__gl_r__bloom.c' >X--- ref_gl/r_bloom.c.orig Sat Jul 23 10:31:48 2005 >X+++ ref_gl/r_bloom.c Fri Dec 2 12:40:41 2005 >X@@ -29,7 +29,7 @@ >X ============================================================================== >X */ >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X #define min(a,b) ((a) < (b) ? (a) : (b)) >X #endif >X >END-of-alienarena/files/patch-ref__gl_r__bloom.c >echo x - alienarena/files/patch-ref__gl_r__draw.c >sed 's/^X//' >alienarena/files/patch-ref__gl_r__draw.c << 'END-of-alienarena/files/patch-ref__gl_r__draw.c' >X--- ref_gl/r_draw.c.orig Fri Sep 23 09:25:58 2005 >X+++ ref_gl/r_draw.c Fri Dec 2 12:40:55 2005 >X@@ -22,7 +22,7 @@ >X >X #include "r_local.h" >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X #define min(a,b) ((a) < (b) ? (a) : (b)) >X #endif >X >END-of-alienarena/files/patch-ref__gl_r__draw.c >echo x - alienarena/files/patch-client_cl__parse.c >sed 's/^X//' >alienarena/files/patch-client_cl__parse.c << 'END-of-alienarena/files/patch-client_cl__parse.c' >X--- client/cl_parse.c.orig Fri Jan 13 16:54:49 2006 >X+++ client/cl_parse.c Fri Jan 13 17:00:51 2006 >X@@ -48,7 +48,7 @@ >X "svc_frame" >X }; >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X /* >X ============== >X Q_strncpyz >END-of-alienarena/files/patch-client_cl__parse.c >echo x - alienarena/files/patch-ref__gl_r__main.c >sed 's/^X//' >alienarena/files/patch-ref__gl_r__main.c << 'END-of-alienarena/files/patch-ref__gl_r__main.c' >X--- ref_gl/r_main.c.orig Fri Jan 13 17:01:44 2006 >X+++ ref_gl/r_main.c Fri Jan 13 17:04:49 2006 >X@@ -269,7 +269,7 @@ >X The linux "c" version of this function >X ================= >X */ >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X void R_ReadFogScript(char config_file[128]) >X { >X FILE *fp; >X@@ -1647,7 +1647,7 @@ >X gl_flashblend = Cvar_Get ("gl_flashblend", "0", 0); >X gl_playermip = Cvar_Get ("gl_playermip", "0", 0); >X gl_monolightmap = Cvar_Get( "gl_monolightmap", "0", 0 ); >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X gl_driver = Cvar_Get( "gl_driver", "libGL.so.1", CVAR_ARCHIVE ); >X #else >X gl_driver = Cvar_Get( "gl_driver", "opengl32", CVAR_ARCHIVE ); >X@@ -1880,7 +1880,7 @@ >X Cvar_Set( "scr_drawall", "0" ); >X } >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X Cvar_SetValue( "gl_finish", 1 ); >X #endif >X >X@@ -1952,7 +1952,7 @@ >X Com_Printf ("...GL_EXT_point_parameters not found\n" ); >X } >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X if ( strstr( gl_config.extensions_string, "3DFX_set_global_palette" )) >X { >X if ( gl_ext_palettedtexture->value ) >X@@ -2496,7 +2496,7 @@ >X >X farclip_dist = DotProduct( r_origin, vpn ); >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X if(r_farclip_min > 256.0f) >X farclip = farclip_dist + r_farclip_min; >X else >X@@ -2518,7 +2518,7 @@ >X if( dist > farclip ) >X farclip = dist; >X } >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X if((farclip - farclip_dist + r_farclip_bias) > r_farclip) >X return ( farclip - farclip_dist + r_farclip_bias); >X else >END-of-alienarena/files/patch-ref__gl_r__main.c >echo x - alienarena/files/patch-ref__gl_r__script.c >sed 's/^X//' >alienarena/files/patch-ref__gl_r__script.c << 'END-of-alienarena/files/patch-ref__gl_r__script.c' >X--- ref_gl/r_script.c.orig Fri Jan 13 16:52:55 2006 >X+++ ref_gl/r_script.c Fri Jan 13 16:53:59 2006 >X@@ -1014,7 +1014,7 @@ >X free(buf); >X } >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X void RS_ScanPathForScripts (void) >X { >X char script[MAX_OSPATH]; >X@@ -1095,7 +1095,7 @@ >X } >X #endif >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X __inline void RS_RotateST (float *os, float *ot, float degrees, msurface_t *fa) >X #else >X _inline void RS_RotateST (float *os, float *ot, float degrees, msurface_t *fa) >X@@ -1169,7 +1169,7 @@ >X RS_RotateST (os, ot, -stage->rot_speed * rs_realtime * 0.0087266388888888888888888888888889, fa); >X } >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X __inline void RS_RotateST2 (float *os, float *ot, float degrees) >X #else >X _inline void RS_RotateST2 (float *os, float *ot, float degrees) >X@@ -1722,7 +1722,7 @@ >X float *v; >X int i, nv; >X vec3_t wv, vectors[3]; >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X rs_stage_t *stage; >X #else >X rs_stage_t *stage = rs->stage; >X@@ -1736,7 +1736,7 @@ >X // rs_realtime+=.0001; >X // if(rs_realtime > 10000) >X // rs_realtime = 0; >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X stage = rs->stage; >X #endif >X nv = surf->polys->numverts; >END-of-alienarena/files/patch-ref__gl_r__script.c >echo x - alienarena/files/patch-server_sv__main.c >sed 's/^X//' >alienarena/files/patch-server_sv__main.c << 'END-of-alienarena/files/patch-server_sv__main.c' >X--- server/sv_main.c.orig Fri Sep 23 09:25:45 2005 >X+++ server/sv_main.c Fri Dec 2 14:45:50 2005 >X@@ -343,8 +343,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@@ -367,8 +368,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@@ -392,6 +396,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)); >END-of-alienarena/files/patch-server_sv__main.c >echo x - alienarena/files/patch-linux_gl__glx.c >sed 's/^X//' >alienarena/files/patch-linux_gl__glx.c << 'END-of-alienarena/files/patch-linux_gl__glx.c' >X--- linux/gl_glx.c.orig Sun Sep 25 19:45:59 2005 >X+++ linux/gl_glx.c Fri Dec 2 15:08:56 2005 >X@@ -34,7 +34,9 @@ >X #include <termios.h> >X #include <sys/ioctl.h> >X #include <sys/stat.h> >X+#ifdef __linux__ >X #include <sys/vt.h> >X+#endif >X #include <stdarg.h> >X #include <stdio.h> >X #include <unistd.h> >END-of-alienarena/files/patch-linux_gl__glx.c >echo x - alienarena/files/patch-linux_glw__linux.h >sed 's/^X//' >alienarena/files/patch-linux_glw__linux.h << 'END-of-alienarena/files/patch-linux_glw__linux.h' >X--- linux/glw_linux.h.orig Sat Jul 23 10:31:48 2005 >X+++ linux/glw_linux.h Fri Dec 2 12:35:23 2005 >X@@ -17,7 +17,7 @@ >X Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. >X >X */ >X-#ifndef __linux__ >X+#if !defined(__linux__) && !defined(__FreeBSD__) >X #error You shouldnt be including this file on non-Linux platforms >X #endif >X >END-of-alienarena/files/patch-linux_glw__linux.h >echo x - alienarena/files/patch-linux_snd__linux.c >sed 's/^X//' >alienarena/files/patch-linux_snd__linux.c << 'END-of-alienarena/files/patch-linux_snd__linux.c' >X--- linux/snd_linux.c Sat Jul 23 10:31:48 2005 >X+++ ../../../quake2lnx/work/quake2-r0.16.2/src/linux/snd_linux.c Sat Feb 9 19:09:23 2002 >X@@ -1,285 +1,308 @@ >X-/* >X-Copyright (C) 1997-2001 Id Software, Inc. >X- >X-This program is free software; you can redistribute it and/or >X-modify it under the terms of the GNU General Public License >X-as published by the Free Software Foundation; either version 2 >X-of the License, or (at your option) any later version. >X- >X-This program is distributed in the hope that it will be useful, >X-but WITHOUT ANY WARRANTY; without even the implied warranty of >X-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. >X- >X-See the GNU General Public License for more details. >X- >X-You should have received a copy of the GNU General Public License >X-along with this program; if not, write to the Free Software >X-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. >X- >X-*/ >X-#include <unistd.h> >X-#include <fcntl.h> >X-#include <stdlib.h> >X-#include <sys/types.h> >X-#include <sys/ioctl.h> >X-#include <sys/mman.h> >X-#include <sys/shm.h> >X-#include <sys/wait.h> >X-#include <linux/soundcard.h> >X-#include <stdio.h> >X- >X-#include "../client/client.h" >X-#include "../client/snd_loc.h" >X- >X-int audio_fd; >X-int snd_inited; >X- >X-cvar_t *sndbits; >X-cvar_t *sndspeed; >X-cvar_t *sndchannels; >X-cvar_t *snddevice; >X- >X-static int tryrates[] = { 11025, 22051, 44100, 8000 }; >X- >X-qboolean SNDDMA_Init(void) >X-{ >X- >X- int rc; >X- int fmt; >X- int tmp; >X- int i; >X- char *s; >X- struct audio_buf_info info; >X- int caps; >X- extern uid_t saved_euid; >X- >X- if (snd_inited) >X- return; >X- >X- if (!snddevice) { >X- sndbits = Cvar_Get("sndbits", "16", CVAR_ARCHIVE); >X- sndspeed = Cvar_Get("sndspeed", "0", CVAR_ARCHIVE); >X- sndchannels = Cvar_Get("sndchannels", "2", CVAR_ARCHIVE); >X- snddevice = Cvar_Get("snddevice", "/dev/dsp", CVAR_ARCHIVE); >X- } >X- >X-// open /dev/dsp, confirm capability to mmap, and get size of dma buffer >X- >X- if (!audio_fd) { >X- seteuid(saved_euid); >X- >X- audio_fd = open(snddevice->string, O_RDWR); >X- >X- seteuid(getuid()); >X- >X- if (audio_fd < 0) >X- { >X- perror(snddevice->string); >X- Com_Printf("Could not open %s\n", snddevice->string); >X- return 0; >X- } >X- } >X- >X- rc = ioctl(audio_fd, SNDCTL_DSP_RESET, 0); >X- if (rc < 0) >X- { >X- perror(snddevice->string); >X- Com_Printf("Could not reset %s\n", snddevice->string); >X- close(audio_fd); >X- return 0; >X- } >X- >X- if (ioctl(audio_fd, SNDCTL_DSP_GETCAPS, &caps)==-1) >X- { >X- perror(snddevice->string); >X- Com_Printf("Sound driver too old\n"); >X- close(audio_fd); >X- return 0; >X- } >X- >X- if (!(caps & DSP_CAP_TRIGGER) || !(caps & DSP_CAP_MMAP)) >X- { >X- Com_Printf("Sorry but your soundcard can't do this\n"); >X- close(audio_fd); >X- return 0; >X- } >X- >X- if (ioctl(audio_fd, SNDCTL_DSP_GETOSPACE, &info)==-1) >X- { >X- perror("GETOSPACE"); >X- Com_Printf("Um, can't do GETOSPACE?\n"); >X- close(audio_fd); >X- return 0; >X- } >X- >X-// set sample bits & speed >X- >X- dma.samplebits = (int)sndbits->value; >X- if (dma.samplebits != 16 && dma.samplebits != 8) >X- { >X- ioctl(audio_fd, SNDCTL_DSP_GETFMTS, &fmt); >X- if (fmt & AFMT_S16_LE) dma.samplebits = 16; >X- else if (fmt & AFMT_U8) dma.samplebits = 8; >X- } >X- >X- dma.speed = (int)sndspeed->value; >X- if (!dma.speed) { >X- for (i=0 ; i<sizeof(tryrates)/4 ; i++) >X- if (!ioctl(audio_fd, SNDCTL_DSP_SPEED, &tryrates[i])) break; >X- dma.speed = tryrates[i]; >X- } >X- >X- dma.channels = (int)sndchannels->value; >X- if (dma.channels < 1 || dma.channels > 2) >X- dma.channels = 2; >X- >X- dma.samples = info.fragstotal * info.fragsize / (dma.samplebits/8); >X- dma.submission_chunk = 1; >X- >X-// memory map the dma buffer >X- >X- if (!dma.buffer) >X- dma.buffer = (unsigned char *) mmap(NULL, info.fragstotal >X- * info.fragsize, PROT_WRITE, MAP_FILE|MAP_SHARED, audio_fd, 0); >X- if (!dma.buffer) >X- { >X- perror(snddevice->string); >X- Com_Printf("Could not mmap %s\n", snddevice->string); >X- close(audio_fd); >X- return 0; >X- } >X- >X- tmp = 0; >X- if (dma.channels == 2) >X- tmp = 1; >X- rc = ioctl(audio_fd, SNDCTL_DSP_STEREO, &tmp); >X- if (rc < 0) >X- { >X- perror(snddevice->string); >X- Com_Printf("Could not set %s to stereo=%d", snddevice->string, dma.channels); >X- close(audio_fd); >X- return 0; >X- } >X- if (tmp) >X- dma.channels = 2; >X- else >X- dma.channels = 1; >X- >X- rc = ioctl(audio_fd, SNDCTL_DSP_SPEED, &dma.speed); >X- if (rc < 0) >X- { >X- perror(snddevice->string); >X- Com_Printf("Could not set %s speed to %d", snddevice->string, dma.speed); >X- close(audio_fd); >X- return 0; >X- } >X- >X- if (dma.samplebits == 16) >X- { >X- rc = AFMT_S16_LE; >X- rc = ioctl(audio_fd, SNDCTL_DSP_SETFMT, &rc); >X- if (rc < 0) >X- { >X- perror(snddevice->string); >X- Com_Printf("Could not support 16-bit data. Try 8-bit.\n"); >X- close(audio_fd); >X- return 0; >X- } >X- } >X- else if (dma.samplebits == 8) >X- { >X- rc = AFMT_U8; >X- rc = ioctl(audio_fd, SNDCTL_DSP_SETFMT, &rc); >X- if (rc < 0) >X- { >X- perror(snddevice->string); >X- Com_Printf("Could not support 8-bit data.\n"); >X- close(audio_fd); >X- return 0; >X- } >X- } >X- else >X- { >X- perror(snddevice->string); >X- Com_Printf("%d-bit sound not supported.", dma.samplebits); >X- close(audio_fd); >X- return 0; >X- } >X- >X-// toggle the trigger & start her up >X- >X- tmp = 0; >X- rc = ioctl(audio_fd, SNDCTL_DSP_SETTRIGGER, &tmp); >X- if (rc < 0) >X- { >X- perror(snddevice->string); >X- Com_Printf("Could not toggle.\n"); >X- close(audio_fd); >X- return 0; >X- } >X- tmp = PCM_ENABLE_OUTPUT; >X- rc = ioctl(audio_fd, SNDCTL_DSP_SETTRIGGER, &tmp); >X- if (rc < 0) >X- { >X- perror(snddevice->string); >X- Com_Printf("Could not toggle.\n"); >X- close(audio_fd); >X- return 0; >X- } >X- >X- dma.samplepos = 0; >X- >X- snd_inited = 1; >X- return 1; >X- >X-} >X- >X-int SNDDMA_GetDMAPos(void) >X-{ >X- >X- struct count_info count; >X- >X- if (!snd_inited) return 0; >X- >X- if (ioctl(audio_fd, SNDCTL_DSP_GETOPTR, &count)==-1) >X- { >X- perror(snddevice->string); >X- Com_Printf("Uh, sound dead.\n"); >X- close(audio_fd); >X- snd_inited = 0; >X- return 0; >X- } >X-// dma.samplepos = (count.bytes / (dma.samplebits / 8)) & (dma.samples-1); >X-// fprintf(stderr, "%d \r", count.ptr); >X- dma.samplepos = count.ptr / (dma.samplebits / 8); >X- >X- return dma.samplepos; >X- >X-} >X- >X-void SNDDMA_Shutdown(void) >X-{ >X-#if 0 >X- if (snd_inited) >X- { >X- close(audio_fd); >X- snd_inited = 0; >X- } >X-#endif >X-} >X- >X-/* >X-============== >X-SNDDMA_Submit >X- >X-Send sound to device if buffer isn't really the dma buffer >X-=============== >X-*/ >X-void SNDDMA_Submit(void) >X-{ >X-} >X- >X-void SNDDMA_BeginPainting (void) >X-{ >X-} >X- >X+/* >X+Copyright (C) 1997-2001 Id Software, Inc. >X+ >X+This program is free software; you can redistribute it and/or >X+modify it under the terms of the GNU General Public License >X+as published by the Free Software Foundation; either version 2 >X+of the License, or (at your option) any later version. >X+ >X+This program is distributed in the hope that it will be useful, >X+but WITHOUT ANY WARRANTY; without even the implied warranty of >X+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. >X+ >X+See the GNU General Public License for more details. >X+ >X+You should have received a copy of the GNU General Public License >X+along with this program; if not, write to the Free Software >X+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. >X+ >X+*/ >X+#include <unistd.h> >X+#include <fcntl.h> >X+#include <stdlib.h> >X+#include <sys/types.h> >X+#include <sys/ioctl.h> >X+#include <sys/mman.h> >X+#include <sys/shm.h> >X+#include <sys/wait.h> >X+#if defined(__FreeBSD__) >X+#include <sys/soundcard.h> >X+#endif >X+#if defined(__linux__) >X+#include <linux/soundcard.h> >X+#endif >X+#include <stdio.h> >X+ >X+#include "../client/client.h" >X+#include "../client/snd_loc.h" >X+ >X+int audio_fd = -1; >X+int snd_inited; >X+ >X+cvar_t *sndbits; >X+cvar_t *sndspeed; >X+cvar_t *sndchannels; >X+cvar_t *snddevice; >X+ >X+static int tryrates[] = { 11025, 22051, 44100, 48000, 8000 }; >X+ >X+qboolean SNDDMA_Init(void) >X+{ >X+ >X+ int rc; >X+ int fmt; >X+ int tmp; >X+ int i; >X+ struct audio_buf_info info; >X+ int caps; >X+ extern uid_t saved_euid; >X+ >X+ if (snd_inited) >X+ return 1; >X+ >X+ snd_inited = 0; >X+ >X+ if (!snddevice) >X+ { >X+ sndbits = Cvar_Get("sndbits", "16", CVAR_ARCHIVE); >X+ sndspeed = Cvar_Get("sndspeed", "0", CVAR_ARCHIVE); >X+ sndchannels = Cvar_Get("sndchannels", "2", CVAR_ARCHIVE); >X+ snddevice = Cvar_Get("snddevice", "/dev/dsp", CVAR_ARCHIVE); >X+ } >X+ >X+// open /dev/dsp, confirm capability to mmap, and get size of dma buffer >X+ >X+ if (audio_fd == -1) >X+ { >X+ seteuid(saved_euid); >X+ >X+ audio_fd = open(snddevice->string, O_RDWR); >X+ >X+ if (audio_fd == -1) >X+ { >X+ perror(snddevice->string); >X+ seteuid(getuid()); >X+ Com_Printf("SNDDMA_Init: Could not open %s.\n", snddevice->string); >X+ return 0; >X+ } >X+ seteuid(getuid()); >X+ } >X+ >X+ rc = ioctl(audio_fd, SNDCTL_DSP_RESET, 0); >X+ if (rc == -1) >X+ { >X+ perror(snddevice->string); >X+ Com_Printf("SNDDMA_Init: Could not reset %s.\n", snddevice->string); >X+ close(audio_fd); >X+ audio_fd = -1; >X+ return 0; >X+ } >X+ >X+ if (ioctl(audio_fd, SNDCTL_DSP_GETCAPS, &caps)==-1) >X+ { >X+ perror(snddevice->string); >X+ Com_Printf("SNDDMA_Init: Sound driver too old.\n"); >X+ close(audio_fd); >X+ audio_fd = -1; >X+ return 0; >X+ } >X+ >X+ if (!(caps & DSP_CAP_TRIGGER) || !(caps & DSP_CAP_MMAP)) >X+ { >X+ Com_Printf("SNDDMA_Init: Sorry, but your soundcard doesn't support trigger or mmap. (%08x)\n", caps); >X+ close(audio_fd); >X+ audio_fd = -1; >X+ return 0; >X+ } >X+ >X+ if (ioctl(audio_fd, SNDCTL_DSP_GETOSPACE, &info)==-1) >X+ { >X+ perror("GETOSPACE"); >X+ Com_Printf("SNDDMA_Init: GETOSPACE ioctl failed.\n"); >X+ close(audio_fd); >X+ audio_fd = -1; >X+ return 0; >X+ } >X+ >X+// set sample bits & speed >X+ >X+ dma.samplebits = (int)sndbits->value; >X+ if (dma.samplebits != 16 && dma.samplebits != 8) >X+ { >X+ ioctl(audio_fd, SNDCTL_DSP_GETFMTS, &fmt); >X+ if (fmt & AFMT_S16_LE) dma.samplebits = 16; >X+ else if (fmt & AFMT_U8) dma.samplebits = 8; >X+ } >X+ >X+ if (dma.samplebits == 16) >X+ { >X+ rc = AFMT_S16_LE; >X+ rc = ioctl(audio_fd, SNDCTL_DSP_SETFMT, &rc); >X+ if (rc < 0) >X+ { >X+ perror(snddevice->string); >X+ Com_Printf("SNDDMA_Init: Could not support 16-bit data. Try 8-bit.\n"); >X+ close(audio_fd); >X+ audio_fd = -1; >X+ return 0; >X+ } >X+ } >X+ else if (dma.samplebits == 8) >X+ { >X+ rc = AFMT_U8; >X+ rc = ioctl(audio_fd, SNDCTL_DSP_SETFMT, &rc); >X+ if (rc < 0) >X+ { >X+ perror(snddevice->string); >X+ Com_Printf("SNDDMA_Init: Could not support 8-bit data.\n"); >X+ close(audio_fd); >X+ audio_fd = -1; >X+ return 0; >X+ } >X+ } >X+ else >X+ { >X+ perror(snddevice->string); >X+ Com_Printf("SNDDMA_Init: %d-bit sound not supported.", dma.samplebits); >X+ close(audio_fd); >X+ audio_fd = -1; >X+ return 0; >X+ } >X+ >X+ dma.speed = (int)sndspeed->value; >X+ if (!dma.speed) >X+ { >X+ for (i=0 ; i<sizeof(tryrates)/4 ; i++) >X+ if (!ioctl(audio_fd, SNDCTL_DSP_SPEED, &tryrates[i])) >X+ break; >X+ dma.speed = tryrates[i]; >X+ } >X+ >X+ dma.channels = (int)sndchannels->value; >X+ if (dma.channels < 1 || dma.channels > 2) >X+ dma.channels = 2; >X+ >X+ tmp = 0; >X+ if (dma.channels == 2) >X+ tmp = 1; >X+ rc = ioctl(audio_fd, SNDCTL_DSP_STEREO, &tmp); //FP: bugs here. >X+ if (rc < 0) >X+ { >X+ perror(snddevice->string); >X+ Com_Printf("SNDDMA_Init: Could not set %s to stereo=%d.", snddevice->string, dma.channels); >X+ close(audio_fd); >X+ audio_fd = -1; >X+ return 0; >X+ } >X+ >X+ if (tmp) >X+ dma.channels = 2; >X+ else >X+ dma.channels = 1; >X+ >X+ >X+ rc = ioctl(audio_fd, SNDCTL_DSP_SPEED, &dma.speed); >X+ if (rc < 0) >X+ { >X+ perror(snddevice->string); >X+ Com_Printf("SNDDMA_Init: Could not set %s speed to %d.", snddevice->string, dma.speed); >X+ close(audio_fd); >X+ audio_fd = -1; >X+ return 0; >X+ } >X+ >X+ dma.samples = info.fragstotal * info.fragsize / (dma.samplebits/8); >X+ dma.submission_chunk = 1; >X+ >X+// memory map the dma buffer >X+ >X+ if (!dma.buffer) >X+ dma.buffer = (unsigned char *) mmap(NULL, info.fragstotal >X+ * info.fragsize, PROT_WRITE|PROT_READ, MAP_FILE|MAP_SHARED, audio_fd, 0); >X+ if (!dma.buffer || dma.buffer == MAP_FAILED) >X+ { >X+ perror(snddevice->string); >X+ Com_Printf("SNDDMA_Init: Could not mmap %s.\n", snddevice->string); >X+ close(audio_fd); >X+ audio_fd = -1; >X+ return 0; >X+ } >X+ >X+// toggle the trigger & start her up >X+ >X+ tmp = 0; >X+ rc = ioctl(audio_fd, SNDCTL_DSP_SETTRIGGER, &tmp); >X+ if (rc < 0) >X+ { >X+ perror(snddevice->string); >X+ Com_Printf("SNDDMA_Init: Could not toggle. (1)\n"); >X+ close(audio_fd); >X+ audio_fd = -1; >X+ return 0; >X+ } >X+ tmp = PCM_ENABLE_OUTPUT; >X+ rc = ioctl(audio_fd, SNDCTL_DSP_SETTRIGGER, &tmp); >X+ if (rc < 0) >X+ { >X+ perror(snddevice->string); >X+ Com_Printf("SNDDMA_Init: Could not toggle. (2)\n"); >X+ close(audio_fd); >X+ audio_fd = -1; >X+ return 0; >X+ } >X+ >X+ dma.samplepos = 0; >X+ >X+ snd_inited = 1; >X+ return 1; >X+} >X+ >X+int SNDDMA_GetDMAPos(void) >X+{ >X+ struct count_info count; >X+ >X+ if (!snd_inited) return 0; >X+ >X+ if (ioctl(audio_fd, SNDCTL_DSP_GETOPTR, &count)==-1) >X+ { >X+ perror(snddevice->string); >X+ Com_Printf("SNDDMA_GetDMAPos: GETOPTR failed.\n"); >X+ close(audio_fd); >X+ audio_fd = -1; >X+ snd_inited = 0; >X+ return 0; >X+ } >X+// dma.samplepos = (count.bytes / (dma.samplebits / 8)) & (dma.samples-1); >X+// fprintf(stderr, "%d \r", count.ptr); >X+ dma.samplepos = count.ptr / (dma.samplebits / 8); >X+ >X+ return dma.samplepos; >X+} >X+ >X+void SNDDMA_Shutdown(void) >X+{ >X+#if 0 >X+ if (snd_inited) >X+ { >X+ close(audio_fd); >X+ audio_fd = -1; >X+ snd_inited = 0; >X+ } >X+#endif >X+} >X+ >X+/* >X+============== >X+SNDDMA_Submit >X+ >X+Send sound to device if buffer isn't really the dma buffer >X+=============== >X+*/ >X+void SNDDMA_Submit(void) >X+{ >X+} >X+ >X+void SNDDMA_BeginPainting (void) >X+{ >X+} >X+ >END-of-alienarena/files/patch-linux_snd__linux.c >echo x - alienarena/files/patch-qcommon_cmd.c >sed 's/^X//' >alienarena/files/patch-qcommon_cmd.c << 'END-of-alienarena/files/patch-qcommon_cmd.c' >X--- qcommon/cmd.c.orig Sat Jul 23 10:31:48 2005 >X+++ qcommon/cmd.c Fri Dec 2 14:38:52 2005 >X@@ -215,8 +215,10 @@ >X if (text[i] == '\n') >X break; >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 +659,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; >END-of-alienarena/files/patch-qcommon_cmd.c >echo x - alienarena/files/patch-linux_sys__linux.c >sed 's/^X//' >alienarena/files/patch-linux_sys__linux.c << 'END-of-alienarena/files/patch-linux_sys__linux.c' >X--- linux/sys_linux.c.orig Thu Dec 29 20:23:22 2005 >X+++ linux/sys_linux.c Fri Jan 13 17:15:40 2006 >X@@ -217,19 +217,7 @@ >X char name[MAX_OSPATH]; >X char *path; >X char *str_p; >X-#if defined __i386__ >X- const char *gamename = "gamei386.so"; >X-#elif defined __x86_64__ >X- const char *gamename = "gamex86_64.so"; >X-#elif defined __alpha__ >X- const char *gamename = "gameaxp.so"; >X-#elif defined __powerpc__ >X- const char *gamename = "gameppc.so"; >X-#elif defined __sparc__ >X- const char *gamename = "gamesparc.so"; >X-#else >X-#error Unknown arch >X-#endif >X+ const char *gamename = "game.so"; >X >X setreuid(getuid(), getuid()); >X setegid(getgid()); >END-of-alienarena/files/patch-linux_sys__linux.c >echo x - alienarena/files/patch-client_cl__ents.c >sed 's/^X//' >alienarena/files/patch-client_cl__ents.c << 'END-of-alienarena/files/patch-client_cl__ents.c' >X--- client/cl_ents.c.orig Wed Sep 7 10:08:59 2005 >X+++ client/cl_ents.c Fri Dec 2 12:02:13 2005 >X@@ -1079,7 +1079,7 @@ >X >X done = false; >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X >X while(!done) { >X if(modelpath[len] == 'h') >END-of-alienarena/files/patch-client_cl__ents.c >echo x - alienarena/files/patch-client_cl__main.c >sed 's/^X//' >alienarena/files/patch-client_cl__main.c << 'END-of-alienarena/files/patch-client_cl__main.c' >X--- client/cl_main.c.orig Tue Oct 4 21:26:13 2005 >X+++ client/cl_main.c Fri Dec 2 12:03:47 2005 >X@@ -24,7 +24,7 @@ >X #include <winsock.h> >X #endif >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X #include <unistd.h> >X #include <sys/socket.h> >X #include <sys/time.h> >X@@ -932,7 +932,7 @@ >X } >X } >X #endif >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X void GetServerList (void) { >X >X netadr_t master; >X@@ -1130,7 +1130,7 @@ >X //send a packet to each server we got from the COR master >X for (i = 0; i < numServers; i++) >X { >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X Com_Printf ("pinging %s...\n", inet_ntoa(servers[i].ip)); >X //need something different here >X if (!NET_StringToAdr (inet_ntoa(servers[i].ip), &adr)) >X@@ -1142,7 +1142,7 @@ >X if (!NET_StringToAdr (inet_ntoa(tmp), &adr)) >X #endif >X { >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X Com_Printf ("Bad address: %s\n", inet_ntoa(servers[i].ip)); >X #else >X Com_Printf ("Bad address: %s\n", inet_ntoa(tmp)); >X@@ -2008,7 +2008,7 @@ >X // all archived variables will now be loaded >X >X Con_Init (); >X-#if defined __linux__ || defined __sgi >X+#if defined __linux__ || defined __sgi || defined __FreeBSD__ >X S_Init (); >X VID_Init (); >X #else >END-of-alienarena/files/patch-client_cl__main.c >echo x - alienarena/files/patch-client_snd__mix.c >sed 's/^X//' >alienarena/files/patch-client_snd__mix.c << 'END-of-alienarena/files/patch-client_snd__mix.c' >X--- client/snd_mix.c.orig Sat Jul 23 10:31:47 2005 >X+++ client/snd_mix.c Fri Dec 2 12:05:23 2005 >X@@ -30,7 +30,7 @@ >X >X void S_WriteLinearBlastStereo16 (void); >X >X-#if !(defined __linux__ && defined __i386__) >X+#if !((defined __linux__ || defined __FreeBSD__) && defined __i386__) >X #if !id386 >X >X void S_WriteLinearBlastStereo16 (void) >X@@ -362,7 +362,7 @@ >X } >X >X >X-#if !(defined __linux__ && defined __i386__) >X+#if !((defined __linux__ || defined __FreeBSD__) && defined __i386__) >X #if !id386 >X >X void S_PaintChannelFrom8 (channel_t *ch, sfxcache_t *sc, int count, int offset) >END-of-alienarena/files/patch-client_snd__mix.c >echo x - alienarena/files/patch-game_acesrc_acebot__items.c >sed 's/^X//' >alienarena/files/patch-game_acesrc_acebot__items.c << 'END-of-alienarena/files/patch-game_acesrc_acebot__items.c' >X--- game/acesrc/acebot_items.c.orig Wed Sep 7 10:01:05 2005 >X+++ game/acesrc/acebot_items.c Fri Dec 2 12:06:05 2005 >X@@ -58,7 +58,7 @@ >X // >X /////////////////////////////////////////////////////////////////////// >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X #include "../g_local.h" >X #else >X #include "..\g_local.h" >END-of-alienarena/files/patch-game_acesrc_acebot__items.c >echo x - alienarena/files/patch-game_m__leader.c >sed 's/^X//' >alienarena/files/patch-game_m__leader.c << 'END-of-alienarena/files/patch-game_m__leader.c' >X--- game/m_leader.c.orig Sat Jul 23 10:31:47 2005 >X+++ game/m_leader.c Fri Dec 2 12:13:16 2005 >X@@ -409,7 +409,7 @@ >X { >X gi.sound (self, CHAN_VOICE, gi.soundindex ("misc/udeath.wav"), 1, ATTN_NORM, 0); >X for (n= 0; n < 1 /*4*/; n++) >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X ThrowGib (self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC, 0); >X for (n= 0; n < 4; n++) >X ThrowGib (self, "models/objects/gibs/sm_metal/tris.md2", damage, GIB_METALLIC, 0); >END-of-alienarena/files/patch-game_m__leader.c >echo x - alienarena/files/patch-qcommon_common.c >sed 's/^X//' >alienarena/files/patch-qcommon_common.c << 'END-of-alienarena/files/patch-qcommon_common.c' >X--- qcommon/common.c.orig Mon Aug 22 19:16:46 2005 >X+++ qcommon/common.c Fri Dec 2 14:41:07 2005 >X@@ -127,7 +127,7 @@ >X // also echo to debugging console >X Sys_ConsoleOutput (msg); >X >X-#ifndef __linux__ >X+#if !defined(__linux__) && !defined(__FreeBSD__) >X // Also echo to dedicated console >X Sys_Print(msg); >X #endif >X@@ -781,7 +781,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@@ -801,7 +803,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; >X@@ -1559,7 +1563,7 @@ >X c_brush_traces = 0; >X c_pointcontents = 0; >X } >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X do >X { >X s = Sys_ConsoleInput (); >END-of-alienarena/files/patch-qcommon_common.c >echo x - alienarena/files/patch-qcommon_qcommon.h >sed 's/^X//' >alienarena/files/patch-qcommon_qcommon.h << 'END-of-alienarena/files/patch-qcommon_qcommon.h' >X--- qcommon/qcommon.h.orig Tue Sep 27 14:40:50 2005 >X+++ qcommon/qcommon.h Fri Dec 2 12:39:14 2005 >X@@ -47,7 +47,7 @@ >X #define CPUSTRING "AXP" >X #endif >X >X-#elif defined __linux__ >X+#elif defined __linux__ || defined __FreeBSD__ >X >X #define BUILDSTRING "Linux" >X >X@@ -715,7 +715,7 @@ >X void FS_Read (void *buffer, int len, FILE *f); >X // properly handles partial reads >X >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X void FS_FreeFileList (char **list, int n); >X #endif >X void FS_FreeFile (void *buffer); >END-of-alienarena/files/patch-qcommon_qcommon.h >echo x - alienarena/files/patch-ref__gl_r__local.h >sed 's/^X//' >alienarena/files/patch-ref__gl_r__local.h << 'END-of-alienarena/files/patch-ref__gl_r__local.h' >X--- ref_gl/r_local.h.orig Fri Jan 13 16:51:14 2006 >X+++ ref_gl/r_local.h Fri Jan 13 16:51:15 2006 >X@@ -28,7 +28,7 @@ >X #include <math.h> >X #include "glext.h" >X >X-#ifndef __linux__ >X+#if !defined(__linux__) && !defined(__FreeBSD__) >X #ifndef GL_COLOR_INDEX8_EXT >X #define GL_COLOR_INDEX8_EXT GL_COLOR_INDEX >X #endif >X@@ -340,7 +340,7 @@ >X void R_DrawSkyBox (void); >X void R_DrawSkyBoxVooDoo (void); >X void R_MarkLights (dlight_t *light, int bit, mnode_t *node); >X-#ifdef __linux__ >X+#if defined(__linux__) || defined(__FreeBSD__) >X void R_ReadFogScript(char config_file[128]); >X #endif >X >END-of-alienarena/files/patch-ref__gl_r__local.h >echo x - alienarena/files/patch-client_snd__dma.c >sed 's/^X//' >alienarena/files/patch-client_snd__dma.c << 'END-of-alienarena/files/patch-client_snd__dma.c' >X--- client/snd_dma.c.orig Sat Jul 23 10:31:47 2005 >X+++ client/snd_dma.c Thu Dec 1 21:20:45 2005 >X@@ -771,8 +771,17 @@ >X clear = 0; >X >X SNDDMA_BeginPainting (); >X- if (dma.buffer) >X- memset(dma.buffer, clear, dma.samples * dma.samplebits/8); >X+ if (dma.buffer) { >X+ int i; >X+ unsigned char *ptr = (unsigned char *)dma.buffer; >X+ >X+ /* clear it manually because the buffer might be writeonly (mmap) */ >X+ i = dma.samples * dma.samplebits/8; >X+ while (i--) { >X+ *ptr = clear; >X+ ptr++; >X+ } >X+ } >X SNDDMA_Submit (); >X } >X >X@@ -892,8 +901,23 @@ >X ch->rightvol = right_total; >X ch->autosound = true; // remove next frame >X ch->sfx = sfx; >X- ch->pos = paintedtime % sc->length; >X- ch->end = paintedtime + sc->length - ch->pos; >X+ /* >X+ * PATCH: eliasm >X+ * >X+ * Sometimes, the sc->length argument can become 0, >X+ * and in that case we get a SIGFPE in the next >X+ * modulo operation. The workaround checks for this >X+ * situation and in that case, sets the pos and end >X+ * parameters to 0. >X+ */ >X+ if( sc->length == 0 ) { >X+ ch->pos = 0; >X+ ch->end = 0; >X+ } >X+ else { >X+ ch->pos = paintedtime % sc->length; >X+ ch->end = paintedtime + sc->length - ch->pos; >X+ } >X } >X } >X >END-of-alienarena/files/patch-client_snd__dma.c >echo x - alienarena/files/patch-server_sv__user.c >sed 's/^X//' >alienarena/files/patch-server_sv__user.c << 'END-of-alienarena/files/patch-server_sv__user.c' >X--- server/sv_user.c.orig Sun Aug 7 15:06:22 2005 >X+++ server/sv_user.c Fri Dec 2 14:48:41 2005 >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 >END-of-alienarena/files/patch-server_sv__user.c >echo x - alienarena/files/patch-game_g__phys.c >sed 's/^X//' >alienarena/files/patch-game_g__phys.c << 'END-of-alienarena/files/patch-game_g__phys.c' >X--- game/g_phys.c.orig Sat Jul 23 10:31:47 2005 >X+++ game/g_phys.c Fri Dec 2 14:50:18 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-alienarena/files/patch-game_g__phys.c >echo x - alienarena/files/patch-game_acesrc_acebot__compress.c >sed 's/^X//' >alienarena/files/patch-game_acesrc_acebot__compress.c << 'END-of-alienarena/files/patch-game_acesrc_acebot__compress.c' >X--- game/acesrc/acebot_compress.c.orig Sat Jul 23 10:31:47 2005 >X+++ game/acesrc/acebot_compress.c Wed Nov 30 19:44:53 2005 >X@@ -17,7 +17,6 @@ >X #include <stdlib.h> >X #include <string.h> >X #include <ctype.h> >X-#include <malloc.h> >X >X #define N 4096 /* size of ring buffer */ >X #define F 18 /* upper limit for match_length */ >X@@ -286,4 +285,4 @@ >X >X return EXIT_SUCCESS; >X } >X-*/ >X\ No newline at end of file >X+*/ >END-of-alienarena/files/patch-game_acesrc_acebot__compress.c >echo x - alienarena/files/patch-linux_cd__linux.c >sed 's/^X//' >alienarena/files/patch-linux_cd__linux.c << 'END-of-alienarena/files/patch-linux_cd__linux.c' >X--- linux/cd_linux.c.orig Sat Jul 23 10:31:48 2005 >X+++ linux/cd_linux.c Wed Nov 30 19:36:19 2005 >X@@ -31,7 +31,11 @@ >X #include <time.h> >X #include <errno.h> >X >X-#include <linux/cdrom.h> >X+#if defined(__FreeBSD__) >X+ #include <sys/cdio.h> >X+#else >X+ #include <linux/cdrom.h> >X+#endif >X >X #include "../client/client.h" >X >X@@ -61,8 +65,13 @@ >X if (cdfile == -1 || !enabled) >X return; // no cd init'd >X >X+#if defined(__FreeBSD__) >X+ if ( ioctl(cdfile, CDIOCEJECT) == -1 ) >X+ Com_DPrintf("ioctl cdioeject failed\n"); >X+#else >X if ( ioctl(cdfile, CDROMEJECT) == -1 ) >X Com_DPrintf("ioctl cdromeject failed\n"); >X+#endif >X } >X >X >X@@ -71,30 +80,53 @@ >X if (cdfile == -1 || !enabled) >X return; // no cd init'd >X >X+#if defined(__FreeBSD__) >X+ if ( ioctl(cdfile, CDIOCCLOSE) == -1 ) >X+ Com_DPrintf("ioctl cdiocclose failed\n"); >X+#else >X if ( ioctl(cdfile, CDROMCLOSETRAY) == -1 ) >X Com_DPrintf("ioctl cdromclosetray failed\n"); >X+#endif >X } >X >X static int CDAudio_GetAudioDiskInfo(void) >X { >X+#if defined(__FreeBSD__) >X+ struct ioc_toc_header tochdr; >X+#else >X struct cdrom_tochdr tochdr; >X+#endif >X >X cdValid = false; >X >X+#if defined(__FreeBSD__) >X+ if ( ioctl(cdfile, CDIOREADTOCHEADER, &tochdr) == -1 ) >X+ { >X+ Com_DPrintf("ioctl cdioreadtocheader failed\n"); >X+#else >X if ( ioctl(cdfile, CDROMREADTOCHDR, &tochdr) == -1 ) >X { >X Com_DPrintf("ioctl cdromreadtochdr failed\n"); >X+#endif >X return -1; >X } >X >X+#if defined(__FreeBSD__) >X+ if (tochdr.starting_track < 1) >X+#else >X if (tochdr.cdth_trk0 < 1) >X+#endif >X { >X Com_DPrintf("CDAudio: no music tracks\n"); >X return -1; >X } >X >X cdValid = true; >X+#if defined(__FreeBSD__) >X+ maxTrack = tochdr.ending_track; >X+#else >X maxTrack = tochdr.cdth_trk1; >X+#endif >X >X return 0; >X } >X@@ -102,8 +134,14 @@ >X >X void CDAudio_Play(int track, qboolean looping) >X { >X+#if defined(__FreeBSD__) >X+ struct ioc_read_toc_entry entry; >X+ struct cd_toc_entry toc_buffer; >X+ struct ioc_play_track ti; >X+#else >X struct cdrom_tocentry entry; >X struct cdrom_ti ti; >X+#endif >X >X if (cdfile == -1 || !enabled) >X return; >X@@ -123,6 +161,21 @@ >X return; >X } >X >X+#if defined(__FreeBSD__) >X+ #define CDROM_DATA_TRACK 4 >X+ bzero((char *)&toc_buffer, sizeof(toc_buffer)); >X+ entry.data_len = sizeof(toc_buffer); >X+ entry.data = &toc_buffer; >X+ // don't try to play a non-audio track >X+ entry.starting_track = track; >X+ entry.address_format = CD_MSF_FORMAT; >X+ if ( ioctl(cdfile, CDIOREADTOCENTRYS, &entry) == -1 ) >X+ { >X+ Com_DPrintf("ioctl cdromreadtocentry failed\n"); >X+ return; >X+ } >X+ if (toc_buffer.control == CDROM_DATA_TRACK) >X+#else >X // don't try to play a non-audio track >X entry.cdte_track = track; >X entry.cdte_format = CDROM_MSF; >X@@ -132,6 +185,7 @@ >X return; >X } >X if (entry.cdte_ctrl == CDROM_DATA_TRACK) >X+#endif >X { >X Com_Printf("CDAudio: track %i is not audio\n", track); >X return; >X@@ -144,18 +198,33 @@ >X CDAudio_Stop(); >X } >X >X+#if defined(__FreeBSD__) >X+ ti.start_track = track; >X+ ti.end_track = track; >X+ ti.start_index = 1; >X+ ti.end_index = 99; >X+#else >X ti.cdti_trk0 = track; >X ti.cdti_trk1 = track; >X- ti.cdti_ind0 = 1; >X- ti.cdti_ind1 = 99; >X- >X- if ( ioctl(cdfile, CDROMPLAYTRKIND, &ti) == -1 ) >X- { >X+ ti.cdti_ind0 = 0; >X+ ti.cdti_ind1 = 0; >X+#endif >X+ >X+#if defined(__FreeBSD__) >X+ if ( ioctl(cdfile, CDIOCPLAYTRACKS, &ti) == -1 ) >X+#else >X+ if ( ioctl(cdfile, CDROMPLAYTRKIND, &ti) == -1 ) >X+#endif >X+ { >X Com_DPrintf("ioctl cdromplaytrkind failed\n"); >X return; >X } >X >X- if ( ioctl(cdfile, CDROMRESUME) == -1 ) >X+#if defined(__FreeBSD__) >X+ if ( ioctl(cdfile, CDIOCRESUME) == -1 ) >X+#else >X+ if ( ioctl(cdfile, CDROMRESUME) == -1 ) >X+#endif >X Com_DPrintf("ioctl cdromresume failed\n"); >X >X playLooping = looping; >X@@ -175,8 +244,13 @@ >X if (!playing) >X return; >X >X+#if defined(__FreeBSD__) >X+ if ( ioctl(cdfile, CDIOCSTOP) == -1 ) >X+ Com_DPrintf("ioctl cdiocstop failed (%d)\n", errno); >X+#else >X if ( ioctl(cdfile, CDROMSTOP) == -1 ) >X Com_DPrintf("ioctl cdromstop failed (%d)\n", errno); >X+#endif >X >X wasPlaying = false; >X playing = false; >X@@ -190,8 +264,13 @@ >X if (!playing) >X return; >X >X+#if defined(__FreeBSD__) >X+ if ( ioctl(cdfile, CDIOCPAUSE) == -1 ) >X+ Com_DPrintf("ioctl cdiocpause failed\n"); >X+#else >X if ( ioctl(cdfile, CDROMPAUSE) == -1 ) >X Com_DPrintf("ioctl cdrompause failed\n"); >X+#endif >X >X wasPlaying = playing; >X playing = false; >X@@ -209,8 +288,13 @@ >X if (!wasPlaying) >X return; >X >X+#if defined(__FreeBSD__) >X+ if ( ioctl(cdfile, CDIOCRESUME) == -1 ) >X+ Com_DPrintf("ioctl cdiocresume failed\n"); >X+#else >X if ( ioctl(cdfile, CDROMRESUME) == -1 ) >X Com_DPrintf("ioctl cdromresume failed\n"); >X+#endif >X playing = true; >X } >X >X@@ -334,7 +418,12 @@ >X >X void CDAudio_Update(void) >X { >X+#if defined(__FreeBSD__) >X+ struct ioc_read_subchannel subchnl; >X+ struct cd_sub_channel_info data; >X+#else >X struct cdrom_subchnl subchnl; >X+#endif >X static time_t lastchk; >X >X if (cdfile == -1 || !enabled) >X@@ -358,6 +447,24 @@ >X >X if (playing && lastchk < time(NULL)) { >X lastchk = time(NULL) + 2; //two seconds between chks >X+#if defined(__FreeBSD__) >X+ subchnl.address_format = CD_MSF_FORMAT; >X+ subchnl.data_format = CD_CURRENT_POSITION; >X+ subchnl.data_len = sizeof(data); >X+ subchnl.track = playTrack; >X+ subchnl.data = &data; >X+ if (ioctl(cdfile, CDIOCREADSUBCHANNEL, &subchnl) == -1 ) { >X+ Com_DPrintf("ioctl cdiocreadsubchannel failed\n"); >X+ playing = false; >X+ return; >X+ } >X+ if (subchnl.data->header.audio_status != CD_AS_PLAY_IN_PROGRESS && >X+ subchnl.data->header.audio_status != CD_AS_PLAY_PAUSED) { >X+ playing = false; >X+ if (playLooping) >X+ CDAudio_Play(playTrack, true); >X+ } >X+#else >X subchnl.cdsc_format = CDROM_MSF; >X if (ioctl(cdfile, CDROMSUBCHNL, &subchnl) == -1 ) { >X Com_DPrintf("ioctl cdromsubchnl failed\n"); >X@@ -370,6 +477,7 @@ >X if (playLooping) >X CDAudio_Play(playTrack, true); >X } >X+#endif >X } >X } >X >END-of-alienarena/files/patch-linux_cd__linux.c >echo x - alienarena/files/alienarena.in >sed 's/^X//' >alienarena/files/alienarena.in << 'END-of-alienarena/files/alienarena.in' >X#!/bin/sh >X >Xcd %%LIBDIR%% || exit 1 >X >Xexec ./crx +set game arena "$@" >END-of-alienarena/files/alienarena.in >echo x - alienarena/files/alienarena-ded.in >sed 's/^X//' >alienarena/files/alienarena-ded.in << 'END-of-alienarena/files/alienarena-ded.in' >X#!/bin/sh >X >Xcd %%LIBDIR%% || exit 1 >X >Xexec ./crded +set game arena "$@" >END-of-alienarena/files/alienarena-ded.in >echo x - alienarena/files/alienarena-sdl.in >sed 's/^X//' >alienarena/files/alienarena-sdl.in << 'END-of-alienarena/files/alienarena-sdl.in' >X#!/bin/sh >X >Xcd %%LIBDIR%% || exit 1 >X >Xexec ./crx.sdl +set game arena "$@" >END-of-alienarena/files/alienarena-sdl.in >echo x - alienarena/distinfo >sed 's/^X//' >alienarena/distinfo << 'END-of-alienarena/distinfo' >XMD5 (alienarena-2006-x86.run) = 00cd1868251cb05685e4a886ef14fdc8 >XSHA256 (alienarena-2006-x86.run) = aca46849e24ccd50d89a88617625476f814080e99fbc00cc082524b2645b9f81 >XSIZE (alienarena-2006-x86.run) = 151751128 >XMD5 (aa2k6-update-12-30.tar.gz) = 73d800a2ab17000e77a64f56f421c8db >XSHA256 (aa2k6-update-12-30.tar.gz) = 6fdf1014adcf2b674e2273038b09d10f710e6a654d4aefdf875d08df258a2922 >XSIZE (aa2k6-update-12-30.tar.gz) = 9469494 >END-of-alienarena/distinfo >echo x - alienarena/pkg-descr >sed 's/^X//' >alienarena/pkg-descr << 'END-of-alienarena/pkg-descr' >XAA2K6 is the latest in a series of standalone games based on a classic Sci-Fi >Xtheme with a modern, updated visual experience. With 25 levels, five modes of >Xplay, mutators, built-in bots, 9 characters, 8 weapons (3 with alt-fire >Xmodes), the game has an endless supply of replayability. Billed as the sequel >Xto 2004's CodeRED: Alien Arena, AA2K6 is much more than that. With the trials >Xand tribulations of software development, endless hours of playing, gathering >Xfeedback, COR Entertainment has been able to not only fine tune and perfect >Xit's flagship game, but add completely new dimensions to it. >X >XWWW: http://red.planetarena.org/ >END-of-alienarena/pkg-descr >echo x - alienarena/pkg-message >sed 's/^X//' >alienarena/pkg-message << 'END-of-alienarena/pkg-message' >X============================================================================== >X >XAlien Arena 2006 (native version) has been installed. >X >XThe OSS (native FreeBSD sound) version of Alien Arena 2006 (named >X"alienarena") uses by default a slow sound speed, which causes a notable >Xdelay. To solve this you have to run it once like this: >X >Xalienarena +set sndspeed <speed> >X >XWhere <speed> could be 22050 and 44100 for example (the default that has the >Xdelay is 11025, and the SDL version uses 22050). The value of "sndspeed" will >Xbe saved in the configuration file for future runs. >X >X============================================================================== >END-of-alienarena/pkg-message >echo x - alienarena/pkg-plist >sed 's/^X//' >alienarena/pkg-plist << 'END-of-alienarena/pkg-plist' >Xbin/alienarena >Xbin/alienarena-ded >X%%SDLSOUND%%bin/alienarena-sdl >X%%LIBDIR%%/arena/ctf.cfg >X%%LIBDIR%%/arena/default.cfg >X%%LIBDIR%%/arena/game.so >X%%LIBDIR%%/arena/maps.lst >X%%LIBDIR%%/arena/motd.txt >X%%LIBDIR%%/arena/pics >X%%LIBDIR%%/arena/server.cfg >X%%LIBDIR%%/arena/video >X%%LIBDIR%%/botinfo >X%%LIBDIR%%/crded >X%%LIBDIR%%/crx >X%%SDLSOUND%%%%LIBDIR%%/crx.sdl >X%%LIBDIR%%/data1/default.cfg >X%%LIBDIR%%/data1/env >X%%LIBDIR%%/data1/game.so >X%%LIBDIR%%/data1/gfx >X%%LIBDIR%%/data1/levelshots >X%%LIBDIR%%/data1/maps >X%%LIBDIR%%/data1/models >X%%LIBDIR%%/data1/particles >X%%LIBDIR%%/data1/pics >X%%LIBDIR%%/data1/players >X%%LIBDIR%%/data1/scripts >X%%LIBDIR%%/data1/sound >X%%LIBDIR%%/data1/sprites >X%%LIBDIR%%/data1/textures >X%%LIBDIR%%/data1/vehicles >X@dirrm %%LIBDIR%%/data1 >X@dirrm %%LIBDIR%%/arena >X@dirrm %%DATADIR%% >END-of-alienarena/pkg-plist >exit
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 91803
: 61249