r1405 - in trunk: . code/qcommon code/renderer code/sdl code/server code/tools/asm code/tools/lcc/cpp misc/setup

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sat Jul 5 19:50:39 EDT 2008


Author: tma
Date: 2008-07-05 19:50:38 -0400 (Sat, 05 Jul 2008)
New Revision: 1405

Modified:
   trunk/code/qcommon/common.c
   trunk/code/qcommon/files.c
   trunk/code/renderer/tr_bsp.c
   trunk/code/renderer/tr_local.h
   trunk/code/renderer/tr_shader.c
   trunk/code/sdl/sdl_input.c
   trunk/code/server/sv_ccmds.c
   trunk/code/tools/asm/q3asm.c
   trunk/code/tools/lcc/cpp/cpp.c
   trunk/code/tools/lcc/cpp/cpp.h
   trunk/code/tools/lcc/cpp/nlist.c
   trunk/make-macosx-ub.sh
   trunk/misc/setup/Solaris_pkg.sh
Log:
* (bug 3610) Server sending unnecessary newline with SV_ConSay_F (Tyler Schwend 
  <TylerSchwend at gmail.com>)
* (bug 3623) COMMAND is mapped to the ALT key (Matthias <Kapffer at macbay.de>)
* (bug 3665) Typo error in FS_FOpenFileByMode function (TsT <tst2006 at gmail.com>)
* (bug 3669) Some files left out of Solaris Packages (Vincent Cojot
  <vincent at cojot.name>)
* (bug 3680) server quit messages (Ben Millwood)
* (bug 3682) Maps with >1024 models cause a segfault (misantropia
  <bnoordhuis at gmail.com>)
* (bug 3683) R_FindShader(): negative lightmap indexes cause stray pointers
  (misantropia <bnoordhuis at gmail.com>)
* (bug 3688) q3asm potential segfault fix and other changes (TsT
  <tst2006 at gmail.com>)
* (bug 3695) Not allowing to write file with lib extention (.dll/.so/...) (TsT
  <tst2006 at gmail.com>)
* (bug 3696) make-macosx-ub.sh outdated by revision 1340; test for Tiger not
   working (Matthias <Kapffer at macbay.de>)
* (bug 3698) #error reported as warning in q3cpp (and no #warning support)
  (Ben Millwood)
* (bug 3703) restoring the valued pre-SDL window behaviour (/dev/humancontroller
  <devhc97 at gmail.com>)


Modified: trunk/code/qcommon/common.c
===================================================================
--- trunk/code/qcommon/common.c	2008-07-05 22:34:23 UTC (rev 1404)
+++ trunk/code/qcommon/common.c	2008-07-05 23:50:38 UTC (rev 1405)
@@ -331,8 +331,9 @@
 */
 void Com_Quit_f( void ) {
 	// don't try to shutdown if we are in a recursive error
+	char *p = Cmd_Args( );
 	if ( !com_errorEntered ) {
-		SV_Shutdown ("Server quit");
+		SV_Shutdown (p[0] ? p : "Server quit");
 		CL_Shutdown ();
 		Com_Shutdown ();
 		FS_Shutdown(qtrue);

Modified: trunk/code/qcommon/files.c
===================================================================
--- trunk/code/qcommon/files.c	2008-07-05 22:34:23 UTC (rev 1404)
+++ trunk/code/qcommon/files.c	2008-07-05 23:50:38 UTC (rev 1405)
@@ -496,6 +496,24 @@
 
 /*
 =================
+FS_FilenameIsExecutable
+
+ERR_FATAL if trying to maniuplate a file with the platform library extension
+=================
+ */
+static void FS_FilenameIsExecutable( const char *filename, const char *function )
+{
+	// Check if the filename ends with the library extension
+	if( !Q_stricmp( filename + strlen( filename ) - strlen( DLL_EXT ), DLL_EXT ) )
+	{
+		Com_Error( ERR_FATAL, "%s: Not allowed to write '%s' due to %s extension\n",
+			function, filename, DLL_EXT );
+	}
+}
+
+
+/*
+=================
 FS_CopyFile
 
 Copy a fully specified file from one place to another
@@ -508,6 +526,8 @@
 
 	Com_Printf( "copy %s to %s\n", fromOSPath, toOSPath );
 
+	FS_FilenameIsExecutable( toOSPath, __FUNCTION__ );
+
 	if (strstr(fromOSPath, "journal.dat") || strstr(fromOSPath, "journaldata.dat")) {
 		Com_Printf( "Ignoring journal files\n");
 		return;
@@ -549,6 +569,8 @@
 ===========
 */
 void FS_Remove( const char *osPath ) {
+	FS_FilenameIsExecutable( osPath, __FUNCTION__ );
+
 	remove( osPath );
 }
 
@@ -559,6 +581,8 @@
 ===========
 */
 void FS_HomeRemove( const char *homePath ) {
+	FS_FilenameIsExecutable( homePath, __FUNCTION__ );
+
 	remove( FS_BuildOSPath( fs_homepath->string,
 			fs_gamedir, homePath ) );
 }
@@ -636,6 +660,8 @@
 		Com_Printf( "FS_SV_FOpenFileWrite: %s\n", ospath );
 	}
 
+	FS_FilenameIsExecutable( ospath, __FUNCTION__ );
+
 	if( FS_CreatePath( ospath ) ) {
 		return 0;
 	}
@@ -745,6 +771,8 @@
 		Com_Printf( "FS_SV_Rename: %s --> %s\n", from_ospath, to_ospath );
 	}
 
+	FS_FilenameIsExecutable( to_ospath, __FUNCTION__ );
+
 	if (rename( from_ospath, to_ospath )) {
 		// Failed, try copying it and deleting the original
 		FS_CopyFile ( from_ospath, to_ospath );
@@ -777,6 +805,8 @@
 		Com_Printf( "FS_Rename: %s --> %s\n", from_ospath, to_ospath );
 	}
 
+	FS_FilenameIsExecutable( to_ospath, __FUNCTION__ );
+
 	if (rename( from_ospath, to_ospath )) {
 		// Failed, try copying it and deleting the original
 		FS_CopyFile ( from_ospath, to_ospath );
@@ -838,6 +868,8 @@
 		Com_Printf( "FS_FOpenFileWrite: %s\n", ospath );
 	}
 
+	FS_FilenameIsExecutable( ospath, __FUNCTION__ );
+
 	if( FS_CreatePath( ospath ) ) {
 		return 0;
 	}
@@ -884,6 +916,8 @@
 		Com_Printf( "FS_FOpenFileAppend: %s\n", ospath );
 	}
 
+	FS_FilenameIsExecutable( ospath, __FUNCTION__ );
+
 	if( FS_CreatePath( ospath ) ) {
 		return 0;
 	}
@@ -3397,7 +3431,7 @@
 		}
 		break;
 	default:
-		Com_Error( ERR_FATAL, "FSH_FOpenFile: bad mode" );
+		Com_Error( ERR_FATAL, "FS_FOpenFileByMode: bad mode" );
 		return -1;
 	}
 

Modified: trunk/code/renderer/tr_bsp.c
===================================================================
--- trunk/code/renderer/tr_bsp.c	2008-07-05 22:34:23 UTC (rev 1404)
+++ trunk/code/renderer/tr_bsp.c	2008-07-05 23:50:38 UTC (rev 1405)
@@ -1321,6 +1321,9 @@
 		model = R_AllocModel();
 
 		assert( model != NULL );			// this should never happen
+		if ( model == NULL ) {
+			ri.Error(ERR_DROP, "R_LoadSubmodels: R_AllocModel() failed");
+		}
 
 		model->type = MOD_BRUSH;
 		model->bmodel = out;

Modified: trunk/code/renderer/tr_local.h
===================================================================
--- trunk/code/renderer/tr_local.h	2008-07-05 22:34:23 UTC (rev 1404)
+++ trunk/code/renderer/tr_local.h	2008-07-05 23:50:38 UTC (rev 1405)
@@ -322,10 +322,12 @@
 
 struct shaderCommands_s;
 
-#define LIGHTMAP_2D			-4		// shader is for 2D rendering
-#define LIGHTMAP_BY_VERTEX	-3		// pre-lit triangle models
-#define LIGHTMAP_WHITEIMAGE	-2
-#define	LIGHTMAP_NONE		-1
+// any change in the LIGHTMAP_* defines here MUST be reflected in
+// R_FindShader() in tr_bsp.c
+#define LIGHTMAP_2D         -4	// shader is for 2D rendering
+#define LIGHTMAP_BY_VERTEX  -3	// pre-lit triangle models
+#define LIGHTMAP_WHITEIMAGE -2
+#define LIGHTMAP_NONE       -1
 
 typedef enum {
 	CT_FRONT_SIDED,

Modified: trunk/code/renderer/tr_shader.c
===================================================================
--- trunk/code/renderer/tr_shader.c	2008-07-05 22:34:23 UTC (rev 1404)
+++ trunk/code/renderer/tr_shader.c	2008-07-05 23:50:38 UTC (rev 1405)
@@ -1432,7 +1432,6 @@
 		// stage definition
 		else if ( token[0] == '{' )
 		{
-			// 20051019 misantropia -- fix buffer overrun.
 			if ( s >= MAX_SHADER_STAGES ) {
 				ri.Printf( PRINT_WARNING, "WARNING: too many stages in shader %s\n", shader.name );
 				return qfalse;
@@ -2447,6 +2446,10 @@
 	// lightmaps
 	if ( lightmapIndex >= 0 && lightmapIndex >= tr.numLightmaps ) {
 		lightmapIndex = LIGHTMAP_BY_VERTEX;
+	} else if ( lightmapIndex < LIGHTMAP_2D ) {
+		// negative lightmap indexes cause stray pointers (think tr.lightmaps[lightmapIndex])
+		ri.Printf( PRINT_WARNING, "WARNING: shader '%s' has invalid lightmap index of %d\n", name, lightmapIndex  );
+		lightmapIndex = LIGHTMAP_BY_VERTEX;
 	}
 
 	COM_StripExtension(name, strippedName, sizeof(strippedName));
@@ -2581,7 +2584,7 @@
 
 	hash = generateHashValue(name, FILE_HASH_SIZE);
 
-	// 20051020 misantropia -- probably not necessary since this function
+	// probably not necessary since this function
 	// only gets called from tr_font.c with lightmapIndex == LIGHTMAP_2D
 	// but better safe than sorry.
 	if ( lightmapIndex >= tr.numLightmaps ) {

Modified: trunk/code/sdl/sdl_input.c
===================================================================
--- trunk/code/sdl/sdl_input.c	2008-07-05 22:34:23 UTC (rev 1404)
+++ trunk/code/sdl/sdl_input.c	2008-07-05 23:50:38 UTC (rev 1405)
@@ -136,7 +136,8 @@
 			case SDLK_RCTRL:        *key = K_CTRL;          break;
 
 			case SDLK_RMETA:
-			case SDLK_LMETA:
+			case SDLK_LMETA:        *key = K_COMMAND;       break;
+
 			case SDLK_RALT:
 			case SDLK_LALT:         *key = K_ALT;           break;
 
@@ -288,18 +289,17 @@
 
 	if( !mouseActive )
 	{
-		SDL_WM_GrabInput( SDL_GRAB_ON );
 		SDL_ShowCursor( 0 );
-
 #ifdef MACOS_X_CURSOR_HACK
 		// This is a bug in the current SDL/macosx...have to toggle it a few
 		//  times to get the cursor to hide.
 		SDL_ShowCursor( 1 );
 		SDL_ShowCursor( 0 );
 #endif
+		SDL_WM_GrabInput( SDL_GRAB_ON );
 	}
 
-	// in_nograb makes no sense unless fullscreen
+	// in_nograb makes no sense in fullscreen mode
 	if( !r_fullscreen->integer )
 	{
 		if( in_nograb->modified || !mouseActive )
@@ -347,8 +347,9 @@
 
 	if( mouseActive )
 	{
+		SDL_WM_GrabInput( SDL_GRAB_OFF );
+		SDL_WarpMouse( glConfig.vidWidth >> 1, glConfig.vidHeight >> 1 );
 		SDL_ShowCursor( 1 );
-		SDL_WM_GrabInput( SDL_GRAB_OFF );
 
 		mouseActive = qfalse;
 	}
@@ -719,6 +720,15 @@
 				}
 				break;
 
+			case SDL_ACTIVEEVENT:
+				if( e.active.state == SDL_APPINPUTFOCUS ) {
+					if( e.active.gain )
+						IN_ActivateMouse();
+					else
+						IN_DeactivateMouse();
+				}
+				break;
+
 			case SDL_QUIT:
 				Sys_Quit();
 				break;
@@ -741,8 +751,10 @@
 {
 	IN_JoyMove( );
 
-	// Release the mouse if the console if down and we're windowed
-	if( ( Key_GetCatcher( ) & KEYCATCH_CONSOLE ) && !r_fullscreen->integer )
+	// Release the mouse if the console is down in windowed mode
+	// or if the window loses focus due to task switching
+	if( ( ( Key_GetCatcher( ) & KEYCATCH_CONSOLE ) && !r_fullscreen->integer ) ||
+	    !( SDL_GetAppState() & SDL_APPINPUTFOCUS ) )
 		IN_DeactivateMouse( );
 	else
 		IN_ActivateMouse( );

Modified: trunk/code/server/sv_ccmds.c
===================================================================
--- trunk/code/server/sv_ccmds.c	2008-07-05 22:34:23 UTC (rev 1404)
+++ trunk/code/server/sv_ccmds.c	2008-07-05 23:50:38 UTC (rev 1405)
@@ -966,7 +966,7 @@
 
 	strcat(text, p);
 
-	SV_SendServerCommand(NULL, "chat \"%s\n\"", text);
+	SV_SendServerCommand(NULL, "chat \"%s\"", text);
 }
 
 

Modified: trunk/code/tools/asm/q3asm.c
===================================================================
--- trunk/code/tools/asm/q3asm.c	2008-07-05 22:34:23 UTC (rev 1404)
+++ trunk/code/tools/asm/q3asm.c	2008-07-05 23:50:38 UTC (rev 1405)
@@ -131,7 +131,7 @@
 	DATASEG,	// initialized 32 bit data, will be byte swapped
 	LITSEG,		// strings
 	BSSSEG,		// 0 filled
-	JTRGSEG,	// psuedo-segment that contains only jump table targets
+	JTRGSEG,	// pseudo-segment that contains only jump table targets
 	NUM_SEGMENTS
 } segmentName_t;
 
@@ -226,16 +226,14 @@
 
 
 
-int
-vreport (const char* fmt, va_list vp)
+static int vreport (const char* fmt, va_list vp)
 {
   if (options.verbose != qtrue)
       return 0;
   return vprintf(fmt, vp);
 }
 
-int
-report (const char *fmt, ...)
+static int report (const char *fmt, ...)
 {
   va_list va;
   int retval;
@@ -248,16 +246,14 @@
 
 /* The chain-and-bucket hash table.  -PH */
 
-void
-hashtable_init (hashtable_t *H, int buckets)
+static void hashtable_init (hashtable_t *H, int buckets)
 {
   H->buckets = buckets;
   H->table = calloc(H->buckets, sizeof(*(H->table)));
   return;
 }
 
-hashtable_t *
-hashtable_new (int buckets)
+static hashtable_t *hashtable_new (int buckets)
 {
   hashtable_t *H;
 
@@ -268,8 +264,7 @@
 
 /* No destroy/destructor.  No need. */
 
-void
-hashtable_add (hashtable_t *H, int hashvalue, void *datum)
+static void hashtable_add (hashtable_t *H, int hashvalue, void *datum)
 {
   hashchain_t *hc, **hb;
 
@@ -293,15 +288,13 @@
   return;
 }
 
-hashchain_t *
-hashtable_get (hashtable_t *H, int hashvalue)
+static hashchain_t *hashtable_get (hashtable_t *H, int hashvalue)
 {
   hashvalue = (abs(hashvalue) % H->buckets);
   return (H->table[hashvalue]);
 }
 
-void
-hashtable_stats (hashtable_t *H)
+static void hashtable_stats (hashtable_t *H)
 {
   int len, empties, longest, nodes;
   int i;
@@ -341,8 +334,7 @@
 /* Kludge. */
 /* Check if symbol already exists. */
 /* Returns 0 if symbol does NOT already exist, non-zero otherwise. */
-int
-hashtable_symbol_exists (hashtable_t *H, int hash, char *sym)
+static int hashtable_symbol_exists (hashtable_t *H, int hash, char *sym)
 {
   hashchain_t *hc;
   symbol_t *s;
@@ -372,8 +364,7 @@
 
 
 /* Comparator function for quicksorting. */
-int
-symlist_cmp (const void *e1, const void *e2)
+static int symlist_cmp (const void *e1, const void *e2)
 {
   const symbol_t *a, *b;
 
@@ -389,8 +380,7 @@
   However, qsort(3) already exists, and I'm really lazy.
  -PH
 */
-void
-sort_symbols ()
+static void sort_symbols ()
 {
   int i, elems;
   symbol_t *s;
@@ -439,7 +429,7 @@
 
  This function is one big evil hack to work around this problem.
 */
-int atoiNoCap (const char *s)
+static int atoiNoCap (const char *s)
 {
   INT64 l;
   union {
@@ -465,7 +455,7 @@
 =============
 */
 /* Default hash function of Kazlib 1.19, slightly modified. */
-unsigned int HashString (const char *key)
+static unsigned int HashString (const char *key)
 {
     static unsigned long randbox[] = {
     0x49848f1bU, 0xe6255dbaU, 0x36da5bdcU, 0x47bf94e9U,
@@ -494,7 +484,7 @@
 CodeError
 ============
 */
-void CodeError( char *fmt, ... ) {
+static void CodeError( char *fmt, ... ) {
 	va_list		argptr;
 
 	errorCount++;
@@ -511,7 +501,7 @@
 EmitByte
 ============
 */
-void EmitByte( segment_t *seg, int v ) {
+static void EmitByte( segment_t *seg, int v ) {
 	if ( seg->imageUsed >= MAX_IMAGE ) {
 		Error( "MAX_IMAGE" );
 	}
@@ -524,7 +514,7 @@
 EmitInt
 ============
 */
-void EmitInt( segment_t *seg, int v ) {
+static void EmitInt( segment_t *seg, int v ) {
 	if ( seg->imageUsed >= MAX_IMAGE - 4) {
 		Error( "MAX_IMAGE" );
 	}
@@ -542,7 +532,7 @@
 Symbols can only be defined on pass 0
 ============
 */
-void DefineSymbol( char *sym, int value ) {
+static void DefineSymbol( char *sym, int value ) {
 	/* Hand optimization by PhaethonH */
 	symbol_t	*s;
 	char		expanded[MAX_LINE_LENGTH];
@@ -598,7 +588,7 @@
 Symbols can only be evaluated on pass 1
 ============
 */
-int LookupSymbol( char *sym ) {
+static int LookupSymbol( char *sym ) {
 	symbol_t	*s;
 	char		expanded[MAX_LINE_LENGTH];
 	int			hash;
@@ -646,7 +636,7 @@
 Otherwise returns the updated parse pointer
 ===============
 */
-char *ExtractLine( char *data ) {
+static char *ExtractLine( char *data ) {
 /* Goal:
 	 Given a string `data', extract one text line into buffer `lineBuffer' that
 	 is no longer than MAX_LINE_LENGTH characters long.  Return value is
@@ -688,7 +678,7 @@
 Parse a token out of linebuffer
 ==============
 */
-qboolean Parse( void ) {
+static qboolean Parse( void ) {
 	/* Hand-optimized by PhaethonH */
 	const char 	*p, *q;
 
@@ -724,7 +714,7 @@
 ParseValue
 ==============
 */
-int	ParseValue( void ) {
+static int ParseValue( void ) {
 	Parse();
 	return atoiNoCap( token );
 }
@@ -735,7 +725,7 @@
 ParseExpression
 ==============
 */
-int	ParseExpression(void) {
+static int ParseExpression(void) {
 	/* Hand optimization, PhaethonH */
 	int		i, j;
 	char	sym[MAX_LINE_LENGTH];
@@ -806,7 +796,7 @@
 aren't read only as in some architectures.
 ==============
 */
-void HackToSegment( segmentName_t seg ) {
+static void HackToSegment( segmentName_t seg ) {
 	if ( currentSegment == &segment[seg] ) {
 		return;
 	}
@@ -1165,7 +1155,7 @@
 
 ==============
 */
-void AssembleLine( void ) {
+static void AssembleLine( void ) {
 	hashchain_t *hc;
 	sourceOps_t *op;
 	int		i;
@@ -1320,7 +1310,7 @@
 WriteMapFile
 ==============
 */
-void WriteMapFile( void ) {
+static void WriteMapFile( void ) {
 	FILE		*f;
 	symbol_t	*s;
 	char		imageName[MAX_OS_PATH];
@@ -1352,7 +1342,7 @@
 WriteVmFile
 ===============
 */
-void WriteVmFile( void ) {
+static void WriteVmFile( void ) {
 	char	imageName[MAX_OS_PATH];
 	vmHeader_t	header;
 	FILE	*f;
@@ -1431,7 +1421,7 @@
 Assemble
 ===============
 */
-void Assemble( void ) {
+static void Assemble( void ) {
 	int		i;
 	char	filename[MAX_OS_PATH];
 	char		*ptr;
@@ -1498,7 +1488,7 @@
 
 =============
 */
-void ParseOptionFile( const char *filename ) {
+static void ParseOptionFile( const char *filename ) {
 	char		expanded[MAX_OS_PATH];
 	char		*text, *text_p;
 
@@ -1526,6 +1516,19 @@
 	}
 }
 
+static void ShowHelp( char *argv0 ) {
+	Error("Usage: %s [OPTION]... [FILES]...\n\
+Assemble LCC bytecode assembly to Q3VM bytecode.\n\
+\n\
+    -o OUTPUT      Write assembled output to file OUTPUT.qvm\n\
+    -f LISTFILE    Read options and list of files to assemble from LISTFILE.q3asm\n\
+    -b BUCKETS     Set symbol hash table to BUCKETS buckets\n\
+    -v             Verbose compilation report\n\
+    -vq3           Produce a qvm file compatible with Q3 1.32b\n\
+    -h --help -?   Show this help\n\
+", argv0);
+}
+
 /*
 ==============
 main
@@ -1538,15 +1541,7 @@
 //	_chdir( "/quake3/jccode/cgame/lccout" );	// hack for vc profiler
 
 	if ( argc < 2 ) {
-		Error("Usage: %s [OPTION]... [FILES]...\n\
-Assemble LCC bytecode assembly to Q3VM bytecode.\n\
-\n\
-    -o OUTPUT      Write assembled output to file OUTPUT.qvm\n\
-    -f LISTFILE    Read options and list of files to assemble from LISTFILE\n\
-    -b BUCKETS     Set symbol hash table to BUCKETS buckets\n\
-    -v             Verbose compilation report\n\
-    -vq3           Produce a qvm file compatible with Q3 1.32b\n\
-", argv[0]);
+		ShowHelp( argv[0] );
 	}
 
 	start = I_FloatTime ();
@@ -1559,6 +1554,12 @@
 		if ( argv[i][0] != '-' ) {
 			break;
 		}
+		if( !strcmp( argv[ i ], "-h" ) || 
+		    !strcmp( argv[ i ], "--help" ) ||
+		    !strcmp( argv[ i ], "-?") ) {
+			ShowHelp( argv[0] );
+		}
+
 		if ( !strcmp( argv[i], "-o" ) ) {
 			if ( i == argc - 1 ) {
 				Error( "-o must preceed a filename" );
@@ -1615,6 +1616,10 @@
 		asmFileNames[ numAsmFiles ] = copystring( argv[ i ] );
 		numAsmFiles++;
 	}
+	// In some case it Segfault without this check
+	if ( numAsmFiles == 0 ) {
+		Error( "No file to assemble\n" );
+	}
 
 	InitTables();
 	Assemble();

Modified: trunk/code/tools/lcc/cpp/cpp.c
===================================================================
--- trunk/code/tools/lcc/cpp/cpp.c	2008-07-05 22:34:23 UTC (rev 1404)
+++ trunk/code/tools/lcc/cpp/cpp.c	2008-07-05 23:50:38 UTC (rev 1405)
@@ -204,9 +204,14 @@
 			error(WARNING, "Syntax error in #endif");
 		break;
 
+	case KWARNING:
+		trp->tp = tp+1;
+		error(WARNING, "#warning directive: %r", trp);
+		break;
+
 	case KERROR:
 		trp->tp = tp+1;
-		error(WARNING, "#error directive: %r", trp);
+		error(ERROR, "#error directive: %r", trp);
 		break;
 
 	case KLINE:

Modified: trunk/code/tools/lcc/cpp/cpp.h
===================================================================
--- trunk/code/tools/lcc/cpp/cpp.h	2008-07-05 22:34:23 UTC (rev 1404)
+++ trunk/code/tools/lcc/cpp/cpp.h	2008-07-05 23:50:38 UTC (rev 1405)
@@ -24,7 +24,7 @@
 		DSHARP1, NAME1, DEFINED, UMINUS };
 
 enum kwtype { KIF, KIFDEF, KIFNDEF, KELIF, KELSE, KENDIF, KINCLUDE, KDEFINE,
-		KUNDEF, KLINE, KERROR, KPRAGMA, KDEFINED,
+		KUNDEF, KLINE, KWARNING, KERROR, KPRAGMA, KDEFINED,
 		KLINENO, KFILE, KDATE, KTIME, KSTDC, KEVAL };
 
 #define	ISDEFINED	01	/* has #defined value */

Modified: trunk/code/tools/lcc/cpp/nlist.c
===================================================================
--- trunk/code/tools/lcc/cpp/nlist.c	2008-07-05 22:34:23 UTC (rev 1404)
+++ trunk/code/tools/lcc/cpp/nlist.c	2008-07-05 23:50:38 UTC (rev 1405)
@@ -29,6 +29,7 @@
 	{"define",	KDEFINE,	ISKW},
 	{"undef",	KUNDEF,		ISKW},
 	{"line",		KLINE,		ISKW},
+	{"warning",	KWARNING,	ISKW},
 	{"error",	KERROR,		ISKW},
 	{"pragma",	KPRAGMA,	ISKW},
 	{"eval",		KEVAL,		ISKW},

Modified: trunk/make-macosx-ub.sh
===================================================================
--- trunk/make-macosx-ub.sh	2008-07-05 22:34:23 UTC (rev 1404)
+++ trunk/make-macosx-ub.sh	2008-07-05 23:50:38 UTC (rev 1405)
@@ -7,8 +7,7 @@
 DESTDIR=build/release-darwin-ub
 BASEDIR=baseq3
 MPACKDIR=missionpack
-Q3_VERSION=`grep "\#define Q3_VERSION" code/qcommon/q_shared.h | \
-	sed -e 's/.*".* \([^ ]*\)"/\1/'`;
+Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'`
 
 BIN_OBJ="
 	build/release-darwin-ppc/ioquake3-smp.ppc
@@ -38,10 +37,7 @@
 	echo "This script must be run from the ioquake3 build directory";
 fi
 
-TIGERHOST=0
-if uname -r | grep ^8. > /dev/null; then
-	TIGERHOST=1
-fi
+TIGERHOST=`uname -r | grep ^8.`
 
 # we want to use the oldest available SDK for max compatiblity
 unset PPC_CLIENT_SDK
@@ -190,7 +186,7 @@
 cp $ICNS $DESTDIR/$APPBUNDLE/Contents/Resources/ioquake3.icns || exit 1;
 echo $PKGINFO > $DESTDIR/$APPBUNDLE/Contents/PkgInfo
 echo "
-	<?xml version=\"1.0\" encoding="UTF-8"?>
+	<?xml version=\"1.0\" encoding=\"UTF-8\"?>
 	<!DOCTYPE plist
 		PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\"
 		\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">

Modified: trunk/misc/setup/Solaris_pkg.sh
===================================================================
--- trunk/misc/setup/Solaris_pkg.sh	2008-07-05 22:34:23 UTC (rev 1404)
+++ trunk/misc/setup/Solaris_pkg.sh	2008-07-05 23:50:38 UTC (rev 1405)
@@ -85,7 +85,7 @@
 		fi
 	done
 
-	for EXEC_SO in cgamesparc.so qagamesparc.so uisparc.so
+	for EXEC_SO in cgamesparc.so qagamesparc.so uisparc.so cgamei386.so qagamei386.so uii386.so
 	do
 		if [ -f ${BUILD_DIR}/baseq3/${EXEC_SO} ]; then
         		${INSTALL_BIN} ${BUILD_DIR}/baseq3/${EXEC_SO} ${PKG_BUILD_DIR}/baseq3/${EXEC_SO}
@@ -95,6 +95,16 @@
 		fi
 	done
 
+	for EXEC_VM in cgame.qvm qagame.qvm ui.qvm
+	do
+		if [ -f ${BUILD_DIR}/baseq3/vm/${EXEC_VM} ]; then
+        		${INSTALL_BIN} ${BUILD_DIR}/baseq3/vm/${EXEC_VM} ${PKG_BUILD_DIR}/baseq3/vm/${EXEC_VM}
+		fi
+		if [ -f ${BUILD_DIR}/missionpack/vm/${EXEC_VM} ]; then
+        		${INSTALL_BIN} ${BUILD_DIR}/missionpack/vm/${EXEC_VM} ${PKG_BUILD_DIR}/missionpack/vm/${EXEC_VM}
+		fi
+	done
+
         ${PKGPROTO} ${PKG_BUILD_DIR}=quake3 | \
                 ${NAWK} '{ print $1,$2,$3,$4 }' >> ${PKG_SRC_DIR}/prototype
         ${PKGMK} -o -p "${PKG_MAINT_ID}${BUILD_DATE}" \




More information about the quake3-commits mailing list