/* 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. 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. 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 */ // cmdlib.h #ifndef __CMDLIB__ #define __CMDLIB__ #include "bytebool.h" #ifdef _WIN32 #pragma warning(disable : 4244) // MIPS #pragma warning(disable : 4136) // X86 #pragma warning(disable : 4051) // ALPHA #pragma warning(disable : 4018) // signed/unsigned mismatch #pragma warning(disable : 4305) // truncate from double to float #pragma check_stack(off) #endif #include #include #include #include #include #include #include #ifdef _WIN32 #pragma intrinsic( memset, memcpy ) #endif #define MAX_OS_PATH 4096 #define MEM_BLOCKSIZE 4096 // the dec offsetof macro doesnt work very well... #define myoffsetof( type,identifier ) ( (size_t)& ( (type *)0 )->identifier ) #define SAFE_MALLOC #ifdef SAFE_MALLOC void *safe_malloc( size_t size ); void *safe_malloc_info( size_t size, char* info ); #else #define safe_malloc( a ) malloc( a ) #endif /* SAFE_MALLOC */ // set these before calling CheckParm extern int myargc; extern char **myargv; char *strlower( char *in ); int Q_strncasecmp( const char *s1, const char *s2, int n ); int Q_stricmp( const char *s1, const char *s2 ); void Q_getwd( char *out ); int Q_filelength( FILE *f ); int FileTime( const char *path ); void Q_mkdir( const char *path ); extern char qdir[1024]; extern char gamedir[1024]; extern char writedir[1024]; extern char *moddirparam; void SetQdirFromPath( const char *path ); char *ExpandArg( const char *path ); // from cmd line char *ExpandPath( const char *path ); // from scripts char *ExpandGamePath( const char *path ); char *ExpandPathAndArchive( const char *path ); void ExpandWildcards( int *argc, char ***argv ); double I_FloatTime( void ); void Error( const char *error, ... ); int CheckParm( const char *check ); FILE *SafeOpenWrite( const char *filename ); FILE *SafeOpenRead( const char *filename ); void SafeRead( FILE *f, void *buffer, int count ); void SafeWrite( FILE *f, const void *buffer, int count ); int LoadFile( const char *filename, void **bufferptr ); int LoadFileBlock( const char *filename, void **bufferptr ); int TryLoadFile( const char *filename, void **bufferptr ); void SaveFile( const char *filename, const void *buffer, int count ); qboolean FileExists( const char *filename ); void DefaultExtension( char *path, const char *extension ); void DefaultPath( char *path, const char *basepath ); void StripFilename( char *path ); void StripExtension( char *path ); void ExtractFilePath( const char *path, char *dest ); void ExtractFileBase( const char *path, char *dest ); void ExtractFileExtension( const char *path, char *dest ); int ParseNum( const char *str ); short BigShort( short l ); short LittleShort( short l ); int BigLong( int l ); int LittleLong( int l ); float BigFloat( float l ); float LittleFloat( float l ); char *COM_Parse( char *data ); extern char com_token[1024]; extern qboolean com_eof; char *copystring( const char *s ); void CRC_Init( unsigned short *crcvalue ); void CRC_ProcessByte( unsigned short *crcvalue, byte data ); unsigned short CRC_Value( unsigned short crcvalue ); void CreatePath( const char *path ); void QCopyFile( const char *from, const char *to ); extern qboolean archive; extern char archivedir[1024]; // sleep for the given amount of milliseconds void Sys_Sleep( int n ); // for compression routines typedef struct { void *data; int count, width, height; } cblock_t; #endif