/*
-Copyright (C) 1999-2007 id Software, Inc. and contributors.
-For a list of contributors, see the accompanying CONTRIBUTORS file.
+ Copyright (C) 1999-2007 id Software, Inc. and contributors.
+ For a list of contributors, see the accompanying CONTRIBUTORS file.
-This file is part of GtkRadiant.
+ This file is part of GtkRadiant.
-GtkRadiant is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
+ GtkRadiant is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
-GtkRadiant is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+ GtkRadiant is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with GtkRadiant; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-*/
+ You should have received a copy of the GNU General Public License
+ along with GtkRadiant; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
//
// start of shared cmdlib stuff
-//
+//
#include "cmdlib.h"
#ifdef _WIN32
#include <windows.h>
#endif
-#if defined (__linux__) || defined (__APPLE__)
+#if defined ( __linux__ ) || defined ( __APPLE__ )
#include <unistd.h>
#endif
// NOTE: we don't use this crap .. with the total mess of mixing win32/unix paths we need to recognize both '/' and '\\'
#define PATHSEPERATOR '/'
-#if defined (__linux__) || defined (__APPLE__)
-bool Q_Exec(const char *cmd, char *cmdline, const char *execdir, bool bCreateConsole)
-{
- char fullcmd[2048];
- char *pCmd;
+#if defined ( __linux__ ) || defined ( __APPLE__ )
+bool Q_Exec( const char *cmd, char *cmdline, const char *execdir, bool bCreateConsole ){
+ char fullcmd[2048];
+ char *pCmd;
#ifdef _DEBUG
- printf("Q_Exec damnit\n");
+ printf( "Q_Exec damnit\n" );
#endif
- switch (fork())
- {
- case -1:
- return true;
- break;
- case 0:
- // always concat the command on linux
- if (cmd)
- {
- strcpy(fullcmd, cmd);
- }
- else
- fullcmd[0] = '\0';
- if (cmdline)
- {
- strcat(fullcmd, " ");
- strcat(fullcmd, cmdline);
- }
- pCmd = fullcmd;
- while (*pCmd == ' ')
- pCmd++;
+ switch ( fork() )
+ {
+ case -1:
+ return true;
+ break;
+ case 0:
+ // always concat the command on linux
+ if ( cmd ) {
+ strcpy( fullcmd, cmd );
+ }
+ else{
+ fullcmd[0] = '\0';
+ }
+ if ( cmdline ) {
+ strcat( fullcmd, " " );
+ strcat( fullcmd, cmdline );
+ }
+ pCmd = fullcmd;
+ while ( *pCmd == ' ' )
+ pCmd++;
#ifdef _DEBUG
- printf("Running system...\n");
- printf("Command: %s\n", pCmd);
+ printf( "Running system...\n" );
+ printf( "Command: %s\n", pCmd );
#endif
- system( pCmd );
+ system( pCmd );
#ifdef _DEBUG
- printf ("system() returned\n");
+ printf( "system() returned\n" );
#endif
- _exit (0);
- break;
- }
- return true;
+ _exit( 0 );
+ break;
+ }
+ return true;
}
#endif
#ifdef _WIN32
// NOTE TTimo windows is VERY nitpicky about the syntax in CreateProcess
-bool Q_Exec(const char *cmd, char *cmdline, const char *execdir, bool bCreateConsole)
-{
- PROCESS_INFORMATION ProcessInformation;
- STARTUPINFO startupinfo = {0};
- DWORD dwCreationFlags;
- GetStartupInfo (&startupinfo);
- if (bCreateConsole)
- dwCreationFlags = CREATE_NEW_CONSOLE | NORMAL_PRIORITY_CLASS;
- else
- dwCreationFlags = DETACHED_PROCESS | NORMAL_PRIORITY_CLASS;
- const char *pCmd;
- char *pCmdline;
- pCmd = cmd;
- if (pCmd)
- {
- while (*pCmd == ' ')
- pCmd++;
- }
- pCmdline = cmdline;
- if (pCmdline)
- {
- while (*pCmdline == ' ')
- pCmdline++;
- }
- if (CreateProcess(
- pCmd,
- pCmdline,
- NULL,
- NULL,
- FALSE,
- dwCreationFlags,
- NULL,
- execdir,
- &startupinfo,
- &ProcessInformation
- ))
- return true;
- return false;
+bool Q_Exec( const char *cmd, char *cmdline, const char *execdir, bool bCreateConsole ){
+ PROCESS_INFORMATION ProcessInformation;
+ STARTUPINFO startupinfo = {0};
+ DWORD dwCreationFlags;
+ GetStartupInfo( &startupinfo );
+ if ( bCreateConsole ) {
+ dwCreationFlags = CREATE_NEW_CONSOLE | NORMAL_PRIORITY_CLASS;
+ }
+ else{
+ dwCreationFlags = DETACHED_PROCESS | NORMAL_PRIORITY_CLASS;
+ }
+ const char *pCmd;
+ char *pCmdline;
+ pCmd = cmd;
+ if ( pCmd ) {
+ while ( *pCmd == ' ' )
+ pCmd++;
+ }
+ pCmdline = cmdline;
+ if ( pCmdline ) {
+ while ( *pCmdline == ' ' )
+ pCmdline++;
+ }
+ if ( CreateProcess(
+ pCmd,
+ pCmdline,
+ NULL,
+ NULL,
+ FALSE,
+ dwCreationFlags,
+ NULL,
+ execdir,
+ &startupinfo,
+ &ProcessInformation
+ ) ) {
+ return true;
+ }
+ return false;
}
#endif
#define MEM_BLOCKSIZE 4096
-void* qblockmalloc(size_t nSize)
-{
- void *b;
- // round up to threshold
- int nAllocSize = nSize % MEM_BLOCKSIZE;
- if ( nAllocSize > 0)
- {
- nSize += MEM_BLOCKSIZE - nAllocSize;
- }
- b = malloc(nSize + 1);
- memset (b, 0, nSize);
- return b;
+void* qblockmalloc( size_t nSize ){
+ void *b;
+ // round up to threshold
+ int nAllocSize = nSize % MEM_BLOCKSIZE;
+ if ( nAllocSize > 0 ) {
+ nSize += MEM_BLOCKSIZE - nAllocSize;
+ }
+ b = malloc( nSize + 1 );
+ memset( b, 0, nSize );
+ return b;
}
//++timo NOTE: can be replaced by g_malloc0(nSize+1) when moving to glib memory handling
-void* qmalloc (size_t nSize)
-{
- void *b;
- b = malloc(nSize + 1);
- memset (b, 0, nSize);
- return b;
+void* qmalloc( size_t nSize ){
+ void *b;
+ b = malloc( nSize + 1 );
+ memset( b, 0, nSize );
+ return b;
}
/*
-================
-Q_filelength
-================
-*/
-int Q_filelength (FILE *f)
-{
- int pos;
- int end;
-
- pos = ftell (f);
- fseek (f, 0, SEEK_END);
- end = ftell (f);
- fseek (f, pos, SEEK_SET);
-
- return end;
+ ================
+ Q_filelength
+ ================
+ */
+int Q_filelength( FILE *f ){
+ int pos;
+ int end;
+
+ pos = ftell( f );
+ fseek( f, 0, SEEK_END );
+ end = ftell( f );
+ fseek( f, pos, SEEK_SET );
+
+ return end;
}
-void DefaultExtension (char *path, char *extension)
-{
- char *src;
+void DefaultExtension( char *path, char *extension ){
+ char *src;
//
// if path doesn't have a .EXT, append extension
// (extension should include the .)
//
- src = path + strlen(path) - 1;
+ src = path + strlen( path ) - 1;
- while (*src != PATHSEPERATOR && src != path)
- {
- if (*src == '.')
- return; // it has an extension
- src--;
- }
+ while ( *src != PATHSEPERATOR && src != path )
+ {
+ if ( *src == '.' ) {
+ return; // it has an extension
+ }
+ src--;
+ }
- strcat (path, extension);
+ strcat( path, extension );
}
-void DefaultPath (char *path, char *basepath)
-{
- char temp[128];
+void DefaultPath( char *path, char *basepath ){
+ char temp[128];
- if (path[0] == PATHSEPERATOR)
- return; // absolute path location
- strcpy (temp,path);
- strcpy (path,basepath);
- strcat (path,temp);
+ if ( path[0] == PATHSEPERATOR ) {
+ return; // absolute path location
+ }
+ strcpy( temp,path );
+ strcpy( path,basepath );
+ strcat( path,temp );
}
-void StripFilename (char *path)
-{
- int length;
+void StripFilename( char *path ){
+ int length;
- length = strlen(path)-1;
- while (length > 0 && path[length] != PATHSEPERATOR)
- length--;
- path[length] = 0;
+ length = strlen( path ) - 1;
+ while ( length > 0 && path[length] != PATHSEPERATOR )
+ length--;
+ path[length] = 0;
}
-void StripExtension (char *path)
-{
- int length;
-
- length = strlen(path)-1;
- while (length > 0 && path[length] != '.')
- {
- length--;
- if (path[length] == '/')
- return; // no extension
- }
- if (length)
- path[length] = 0;
+void StripExtension( char *path ){
+ int length;
+
+ length = strlen( path ) - 1;
+ while ( length > 0 && path[length] != '.' )
+ {
+ length--;
+ if ( path[length] == '/' ) {
+ return; // no extension
+ }
+ }
+ if ( length ) {
+ path[length] = 0;
+ }
}
/*
-====================
-Extract file parts
-====================
-*/
-void ExtractFilePath (const char *path, char *dest)
-{
- const char *src;
+ ====================
+ Extract file parts
+ ====================
+ */
+void ExtractFilePath( const char *path, char *dest ){
+ const char *src;
- src = path + strlen(path) - 1;
+ src = path + strlen( path ) - 1;
//
// back up until a \ or the start
//
- while (src != path && *(src-1) != '/' && *(src-1) != '\\')
- src--;
+ while ( src != path && *( src - 1 ) != '/' && *( src - 1 ) != '\\' )
+ src--;
- memcpy (dest, path, src-path);
- dest[src-path] = 0;
+ memcpy( dest, path, src - path );
+ dest[src - path] = 0;
}
-void ExtractFileName (const char *path, char *dest)
-{
- const char *src;
+void ExtractFileName( const char *path, char *dest ){
+ const char *src;
- src = path + strlen(path) - 1;
+ src = path + strlen( path ) - 1;
//
// back up until a \ or the start
//
- while (src != path && *(src-1) != '/'
- && *(src-1) != '\\' )
- src--;
-
- while (*src)
- {
- *dest++ = *src++;
- }
- *dest = 0;
+ while ( src != path && *( src - 1 ) != '/'
+ && *( src - 1 ) != '\\' )
+ src--;
+
+ while ( *src )
+ {
+ *dest++ = *src++;
+ }
+ *dest = 0;
}
-inline const char* path_get_filename_start(const char* path)
-{
- {
- const char* last_forward_slash = strrchr(path, '/');
- if(last_forward_slash != NULL)
- return last_forward_slash + 1;
- }
-
- {
- const char* last_backward_slash = strrchr(path, '\\');
- if(last_backward_slash != NULL)
- return last_backward_slash + 1;
- }
-
- return path;
+inline const char* path_get_filename_start( const char* path ){
+ {
+ const char* last_forward_slash = strrchr( path, '/' );
+ if ( last_forward_slash != NULL ) {
+ return last_forward_slash + 1;
+ }
+ }
+
+ {
+ const char* last_backward_slash = strrchr( path, '\\' );
+ if ( last_backward_slash != NULL ) {
+ return last_backward_slash + 1;
+ }
+ }
+
+ return path;
}
-inline unsigned int filename_get_base_length(const char* filename)
-{
- const char* last_period = strrchr(filename, '.');
- return (last_period != NULL) ? last_period - filename : strlen(filename);
+inline unsigned int filename_get_base_length( const char* filename ){
+ const char* last_period = strrchr( filename, '.' );
+ return ( last_period != NULL ) ? last_period - filename : strlen( filename );
}
-void ExtractFileBase (const char *path, char *dest)
-{
- const char* filename = path_get_filename_start(path);
- unsigned int length = filename_get_base_length(filename);
- strncpy(dest, filename, length);
- dest[length] = '\0';
+void ExtractFileBase( const char *path, char *dest ){
+ const char* filename = path_get_filename_start( path );
+ unsigned int length = filename_get_base_length( filename );
+ strncpy( dest, filename, length );
+ dest[length] = '\0';
}
-void ExtractFileExtension (const char *path, char *dest)
-{
- const char *src;
+void ExtractFileExtension( const char *path, char *dest ){
+ const char *src;
- src = path + strlen(path) - 1;
+ src = path + strlen( path ) - 1;
//
// back up until a . or the start
//
- while (src != path && *(src-1) != '.')
- src--;
- if (src == path)
- {
- *dest = 0; // no extension
- return;
- }
-
- strcpy (dest,src);
+ while ( src != path && *( src - 1 ) != '.' )
+ src--;
+ if ( src == path ) {
+ *dest = 0; // no extension
+ return;
+ }
+
+ strcpy( dest,src );
}
-void ConvertDOSToUnixName( char *dst, const char *src )
-{
- while ( *src )
- {
- if ( *src == '\\' )
- *dst = '/';
- else
- *dst = *src;
- dst++; src++;
- }
- *dst = 0;
+void ConvertDOSToUnixName( char *dst, const char *src ){
+ while ( *src )
+ {
+ if ( *src == '\\' ) {
+ *dst = '/';
+ }
+ else{
+ *dst = *src;
+ }
+ dst++; src++;
+ }
+ *dst = 0;
}
-char* StrDup(char* pStr)
-{
- if (pStr)
- {
- return strcpy(new char[strlen(pStr)+1], pStr);
- }
- return NULL;
+char* StrDup( char* pStr ){
+ if ( pStr ) {
+ return strcpy( new char[strlen( pStr ) + 1], pStr );
+ }
+ return NULL;
}
-char* StrDup(const char* pStr)
-{
- if (pStr)
- {
- return strcpy(new char[strlen(pStr)+1], pStr);
- }
- return NULL;
+char* StrDup( const char* pStr ){
+ if ( pStr ) {
+ return strcpy( new char[strlen( pStr ) + 1], pStr );
+ }
+ return NULL;
}
-void CreateDirectoryPath (const char *path) {
- char base[PATH_MAX];
- char *src;
- char back;
-
- ExtractFilePath(path, base);
-
- src = base+1;
- while (1) {
- while (*src != '\0' && *src != '/' && *src != '\\') {
- src++;
- }
- if (*src == '\0') {
- break;
- }
- back = *src; *src = '\0';
- Q_mkdir(base, 0755);
- *src = back; src++;
- }
+void CreateDirectoryPath( const char *path ) {
+ char base[PATH_MAX];
+ char *src;
+ char back;
+
+ ExtractFilePath( path, base );
+
+ src = base + 1;
+ while ( 1 ) {
+ while ( *src != '\0' && *src != '/' && *src != '\\' ) {
+ src++;
+ }
+ if ( *src == '\0' ) {
+ break;
+ }
+ back = *src; *src = '\0';
+ Q_mkdir( base, 0755 );
+ *src = back; src++;
+ }
}
/*
-============================================================================
+ ============================================================================
BYTE ORDER FUNCTIONS
-============================================================================
-*/
+ ============================================================================
+ */
#ifdef _SGI_SOURCE
- #define __BIG_ENDIAN__
+ #define __BIG_ENDIAN__
#endif
#ifdef __BIG_ENDIAN__
-short LittleShort (short l)
-{
- byte b1,b2;
+short LittleShort( short l ){
+ byte b1,b2;
- b1 = l&255;
- b2 = (l>>8)&255;
+ b1 = l & 255;
+ b2 = ( l >> 8 ) & 255;
- return(b1<<8) + b2;
+ return ( b1 << 8 ) + b2;
}
-short BigShort (short l)
-{
- return l;
+short BigShort( short l ){
+ return l;
}
-int LittleLong (int l)
-{
- byte b1,b2,b3,b4;
+int LittleLong( int l ){
+ byte b1,b2,b3,b4;
- b1 = l&255;
- b2 = (l>>8)&255;
- b3 = (l>>16)&255;
- b4 = (l>>24)&255;
+ b1 = l & 255;
+ b2 = ( l >> 8 ) & 255;
+ b3 = ( l >> 16 ) & 255;
+ b4 = ( l >> 24 ) & 255;
- return((int)b1<<24) + ((int)b2<<16) + ((int)b3<<8) + b4;
+ return ( (int)b1 << 24 ) + ( (int)b2 << 16 ) + ( (int)b3 << 8 ) + b4;
}
-int BigLong (int l)
-{
- return l;
+int BigLong( int l ){
+ return l;
}
-float LittleFloat (float l)
-{
- union
- {
- byte b[4]; float f;
- } in, out;
+float LittleFloat( float l ){
+ union
+ {
+ byte b[4]; float f;
+ } in, out;
- in.f = l;
- out.b[0] = in.b[3];
- out.b[1] = in.b[2];
- out.b[2] = in.b[1];
- out.b[3] = in.b[0];
+ in.f = l;
+ out.b[0] = in.b[3];
+ out.b[1] = in.b[2];
+ out.b[2] = in.b[1];
+ out.b[3] = in.b[0];
- return out.f;
+ return out.f;
}
-float BigFloat (float l)
-{
- return l;
+float BigFloat( float l ){
+ return l;
}
#else
-short BigShort (short l)
-{
- byte b1,b2;
+short BigShort( short l ){
+ byte b1,b2;
- b1 = l&255;
- b2 = (l>>8)&255;
+ b1 = l & 255;
+ b2 = ( l >> 8 ) & 255;
- return(b1<<8) + b2;
+ return ( b1 << 8 ) + b2;
}
-short LittleShort (short l)
-{
- return l;
+short LittleShort( short l ){
+ return l;
}
-int BigLong (int l)
-{
- byte b1,b2,b3,b4;
+int BigLong( int l ){
+ byte b1,b2,b3,b4;
- b1 = l&255;
- b2 = (l>>8)&255;
- b3 = (l>>16)&255;
- b4 = (l>>24)&255;
+ b1 = l & 255;
+ b2 = ( l >> 8 ) & 255;
+ b3 = ( l >> 16 ) & 255;
+ b4 = ( l >> 24 ) & 255;
- return((int)b1<<24) + ((int)b2<<16) + ((int)b3<<8) + b4;
+ return ( (int)b1 << 24 ) + ( (int)b2 << 16 ) + ( (int)b3 << 8 ) + b4;
}
-int LittleLong (int l)
-{
- return l;
+int LittleLong( int l ){
+ return l;
}
-float BigFloat (float l)
-{
- union
- {
- byte b[4]; float f;
- } in, out;
+float BigFloat( float l ){
+ union
+ {
+ byte b[4]; float f;
+ } in, out;
- in.f = l;
- out.b[0] = in.b[3];
- out.b[1] = in.b[2];
- out.b[2] = in.b[1];
- out.b[3] = in.b[0];
+ in.f = l;
+ out.b[0] = in.b[3];
+ out.b[1] = in.b[2];
+ out.b[2] = in.b[1];
+ out.b[3] = in.b[0];
- return out.f;
+ return out.f;
}
-float LittleFloat (float l)
-{
- return l;
+float LittleFloat( float l ){
+ return l;
}
#endif