master #1

Closed
nillerusr wants to merge 3 commits from nillerusr/Paranoia2:master into master
16 changed files with 163 additions and 63 deletions

View File

@ -30,4 +30,4 @@ int main( int argc, char **argv )
}
return BspConvert( argc, argv );
}
}

View File

@ -16,7 +16,7 @@ GNU General Public License for more details.
#ifndef BSP31MIGRATE_H
#define BSP31MIGRATE_H
#include <windows.h>
#include "port.h"
#include "cmdlib.h"
#include "mathlib.h"
#include "stringlib.h"
@ -26,7 +26,6 @@ GNU General Public License for more details.
#include "wadfile.h"
#include "bspfile31.h"
#include <fcntl.h>
#include <io.h>
typedef enum
{
@ -46,4 +45,4 @@ typedef enum
extern int BspConvert( int argc, char **argv );
#endif//BSP31MIGRATE_H
#endif//BSP31MIGRATE_H

View File

@ -1185,7 +1185,10 @@ int BspConvert( int argc, char **argv )
if( !COM_GetParmExt( "-file", source, sizeof( source )))
{
printf("%s\n", source);
Review

Please remove unnecessary logging.

Please remove unnecessary logging.
Q_strncpy( source, "*.bsp", sizeof( source ));
}
search_t *search = COM_Search( source, true );
@ -1206,7 +1209,6 @@ int BspConvert( int argc, char **argv )
Mem_Check();
Msg( "press any key to exit\n" );
system( "pause>nul" );
return 0;
}
}

2
utils/bsp31migrate/build.sh Executable file
View File

@ -0,0 +1,2 @@
#!/bin/sh
Review

Use waf.

Use waf.
Review

why use waf for utilities?

why use waf for utilities?
Review

Because we decided to not use everything else than waf as it increases efforts on maintaining.

Well, mdldec in engine repo uses Makefile. Probably for utilities it can be fine but it also have copypasted code, like checking if we are compiling for Windows, the same compiler rules and so on.

Because we decided to not use everything else than waf as it increases efforts on maintaining. Well, mdldec in engine repo uses Makefile. Probably for utilities it can be fine but it also have copypasted code, like checking if we are compiling for Windows, the same compiler rules and so on.
gcc -I ../common/ -I../../common/ -I../../public bsp31migrate.cpp bspfile.cpp ../common/stringlib.cpp ../common/conprint.cpp ../common/cmdlib.cpp ../common/filesystem.cpp ../common/zone.cpp ../common/scriplib.cpp ../common/wadfile.cpp ../common/mathlib.cpp -ggdb -lm -o bsp31migrate

View File

@ -34,12 +34,15 @@ typedef unsigned long ulong;
typedef unsigned char uint8;
typedef signed char int8;
#ifdef _MSC_VER
typedef __int16 int16;
typedef unsigned __int16 uint16;
typedef __int32 int32;
typedef unsigned __int32 uint32;
typedef __int64 int64;
typedef unsigned __int64 uint64;
#endif
#undef true
#undef false
@ -77,4 +80,4 @@ enum
#define DXT_ENCODE_ALPHA_SDF 0x1A04 // signed distance field
#define DXT_ENCODE_NORMAL_AG_PARABOLOID 0x1A07 // paraboloid projection
#endif//BASETYPES_H
#endif//BASETYPES_H

View File

@ -76,7 +76,7 @@ BRUSH MODELS
.bsp contain level static geometry with including PVS and lightning info
==============================================================================
*/
#include "..\..\common\bspfile.h"
#include "../../common/bspfile.h"
// header
#define Q1BSP_VERSION 29 // quake1 regular version (beta is 28)

View File

@ -21,13 +21,19 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
// cmdlib.c
#ifdef _WIN32
#include <windows.h>
#include <direct.h>
#include <io.h>
#endif
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include "stringlib.h"
#include "cmdlib.h"
#include <stdarg.h>
#include <stdlib.h>
#include <unistd.h>
static char **com_argv;
static int com_argc = 0;
@ -118,7 +124,7 @@ void COM_FatalError( const char *error, ... )
va_list argptr;
va_start( argptr, error );
_vsnprintf( message, sizeof( message ), error, argptr );
snprintf( message, sizeof( message ), error, argptr );
va_end( argptr );
Msg( "^1Fatal Error:^7 %s", message );
@ -138,7 +144,7 @@ void COM_Assert( const char *error, ... )
va_list argptr;
va_start( argptr, error );
_vsnprintf( message, sizeof( message ), error, argptr );
snprintf( message, sizeof( message ), error, argptr );
va_end( argptr );
Msg( "^1assert failed at:^7 %s", message );
@ -147,7 +153,7 @@ void COM_Assert( const char *error, ... )
void Q_getwd( char *out, size_t size )
{
_getcwd( out, size );
getcwd( out, size );
Q_strncat( out, "\\", size );
}
@ -209,19 +215,40 @@ I_FloatTime
g-cont. the prefix 'I' was come from Doom code heh
================
*/
double I_FloatTime( void )
{
static LARGE_INTEGER g_Frequency;
static LARGE_INTEGER g_ClockStart;
LARGE_INTEGER CurrentTime;
if( !g_Frequency.QuadPart )
#ifdef _WIN32
#include <winbase.h>
double GAME_EXPORT I_FloatTime( void )
{
static LARGE_INTEGER g_PerformanceFrequency;
static LARGE_INTEGER g_ClockStart;
LARGE_INTEGER CurrentTime;
if( !g_PerformanceFrequency.QuadPart )
{
QueryPerformanceFrequency( &g_Frequency );
QueryPerformanceFrequency( &g_PerformanceFrequency );
QueryPerformanceCounter( &g_ClockStart );
}
QueryPerformanceCounter( &CurrentTime );
return (double)( CurrentTime.QuadPart - g_ClockStart.QuadPart ) / (double)( g_PerformanceFrequency.QuadPart );
}
#elif _LINUX
double GAME_EXPORT I_FloatTime( void )
{
static longtime_t g_PerformanceFrequency;
static longtime_t g_ClockStart;
longtime_t CurrentTime;
struct timespec ts;
return (double)( CurrentTime.QuadPart - g_ClockStart.QuadPart ) / (double)( g_Frequency.QuadPart );
}
if( !g_PerformanceFrequency )
{
struct timespec res;
if( !clock_getres(CLOCK_MONOTONIC, &res) )
g_PerformanceFrequency = 1000000000LL/res.tv_nsec;
}
clock_gettime(CLOCK_MONOTONIC, &ts);
return (double) ts.tv_sec + (double) ts.tv_nsec/1000000000.0;
}
#endif

View File

@ -18,8 +18,10 @@ GNU General Public License for more details.
#ifndef CMDLIB_H
#define CMDLIB_H
#include "port.h"
#include <basetypes.h>
#include "conprint.h"
#include "mathlib.h"
// bit routines
#define BIT( n ) (1<<( n ))
@ -108,4 +110,4 @@ void CRC32_Final( dword *pulCRC );
void CRC32_ProcessByte( dword *pulCRC, byte ch );
void CRC32_ProcessBuffer( dword *pulCRC, const void *pBuffer, int nBuffer );
#endif
#endif

View File

@ -14,15 +14,18 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
*/
#include <windows.h>
#include <stdio.h>
#include <basetypes.h>
#include "stringlib.h"
#include "conprint.h"
#include "stdarg.h"
#define IsColorString( p ) ( p && *( p ) == '^' && *(( p ) + 1) && *(( p ) + 1) >= '0' && *(( p ) + 1 ) <= '9' )
#define ColorIndex( c ) ((( c ) - '0' ) & 7 )
#ifdef _WIN32
#include <windows.h>
static unsigned short g_color_table[8] =
{
FOREGROUND_INTENSITY, // black
@ -34,6 +37,7 @@ FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY, // cyan
FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY, // magenta
FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE, // default color (white)
};
#endif
static int devloper_level = DEFAULT_DEVELOPER;
static bool ignore_log = false;
@ -101,6 +105,7 @@ print into win32 console
*/
void Sys_Print( const char *pMsg )
{
#ifdef _WIN32
char tmpBuf[8192];
HANDLE hOut = GetStdHandle( STD_OUTPUT_HANDLE );
unsigned long cbWritten;
@ -146,6 +151,9 @@ void Sys_Print( const char *pMsg )
Sys_PrintLog( tmpBuf );
pTemp = tmpBuf;
}
#else
printf("%s", pMsg);
#endif
}
/*
@ -203,6 +211,7 @@ void MsgDev( int level, const char *pMsg, ... )
void MsgAnim( int level, const char *pMsg, ... )
{
#ifdef _WIN32
va_list argptr;
char text[1024];
char empty[1024];
@ -228,4 +237,5 @@ void MsgAnim( int level, const char *pMsg, ... )
Sleep( 150 );
}
Msg( "^7\n" );
}
#endif
}

View File

@ -13,11 +13,19 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
*/
#ifdef _WIN32
#include <windows.h>
#include <direct.h>
#include <io.h>
#else
#include <dirent.h>
#include <errno.h>
#include <unistd.h>
#define O_BINARY 0
#endif
#include <fcntl.h>
#include <stdio.h>
#include <io.h>
#include "conprint.h"
#include "cmdlib.h"
#include "stringlib.h"
@ -147,16 +155,21 @@ void stringlistsort( stringlist_t *list )
}
}
void listdirectory( stringlist_t *list, const char *path, bool tolower )
void listdirectory( stringlist_s *list, const char *path, bool lowercase )
{
char pattern[4096];
struct _finddata_t n_file;
long hFile;
char *c;
int i;
signed char *c;
#ifdef _WIN32
char pattern[4096];
struct _finddata_t n_file;
int hFile;
#else
DIR *dir;
struct dirent *entry;
#endif
Q_strncpy( pattern, path, sizeof( pattern ));
Q_strncat( pattern, "*", sizeof( pattern ));
#ifdef _WIN32
Q_snprintf( pattern, sizeof( pattern ), "%s*", path );
// ask for the directory listing handle
hFile = _findfirst( pattern, &n_file );
@ -164,22 +177,33 @@ void listdirectory( stringlist_t *list, const char *path, bool tolower )
// start a new chain with the the first name
stringlistappend( list, n_file.name );
// iterate through the directory
while( _findnext( hFile, &n_file ) == 0 )
stringlistappend( list, n_file.name );
_findclose( hFile );
#else
if( !( dir = opendir( path ) ) )
return;
if( !tolower ) return;
// iterate through the directory
while( ( entry = readdir( dir ) ))
stringlistappend( list, entry->d_name );
closedir( dir );
#endif
// convert names to lowercase because windows doesn't care, but pattern matching code often does
for( i = 0; i < list->numstrings; i++ )
if( lowercase )
{
for( c = list->strings[i]; *c; c++ )
*c = Q_tolower( *c );
for( i = 0; i < list->numstrings; i++ )
{
for( c = (signed char *)list->strings[i]; *c; c++ )
{
if( *c >= 'A' && *c <= 'Z' )
*c += 'a' - 'A';
}
}
}
}
/*
=============================================================================
@ -212,20 +236,21 @@ search_t *COM_Search( const char *pattern, int caseinsensitive, wfile_t *source_
return NULL;
}
if( !GetCurrentDirectory( sizeof( root ), root ))
if( !getcwd(root, sizeof( root ) ) )
nillerusr marked this conversation as resolved
Review

You already have Q_getwd. Why not to use it?

You already have Q_getwd. Why not to use it?
Review

There is no Q_getcwd

There is no Q_getcwd
{
MsgDev( D_ERROR, "couldn't determine current directory\n" );
return NULL;
}
Q_strncat( root, "\\", sizeof( root ));
Q_strncat( root, "/", sizeof( root ));
stringlistinit( &resultlist );
stringlistinit( &dirlist );
slash = Q_strrchr( pattern, '/' );
backslash = Q_strrchr( pattern, '\\' );
colon = Q_strrchr( pattern, ':' );
separator = max( slash, backslash );
separator = max( separator, colon );
separator = Q_max( slash, backslash );
separator = Q_max( separator, colon );
basepathlength = separator ? (separator + 1 - pattern) : 0;
basepath = (char *)Mem_Alloc( basepathlength + 1 );
if( basepathlength ) memcpy( basepath, pattern, basepathlength );
@ -357,7 +382,11 @@ void COM_CreatePath( char *path )
// create the directory
save = *ofs;
*ofs = 0;
_mkdir( path );
#ifdef _WIN32
mkdir( path );
#else
mkdir( path, 0777);
#endif
*ofs = save;
}
}
@ -555,9 +584,28 @@ COM_FolderExists
*/
bool COM_FolderExists( const char *path )
{
DWORD dwFlags = GetFileAttributes( path );
#if XASH_WIN32
DWORD dwFlags = GetFileAttributes( path );
return ( dwFlags != -1 ) && FBitSet( dwFlags, FILE_ATTRIBUTE_DIRECTORY );
return ( dwFlags != -1 ) && ( dwFlags & FILE_ATTRIBUTE_DIRECTORY );
#else
DIR *dir = opendir( path );
if( dir )
{
closedir( dir );
return true;
}
else if( (errno == ENOENT) || (errno == ENOTDIR) )
{
return false;
}
else
{
MsgDev( D_ERROR, "FS_SysFolderExists: problem while opening dir: %s\n", strerror( errno ) );
return false;
}
#endif
}
/*
@ -618,4 +666,4 @@ void SafeWriteExt( long handle, void *buffer, int count, const char *file, const
if( write_count != (size_t)count )
COM_FatalError( "file write failure ( %i != %i ) at %s:%i\n", write_count, count, file, line );
}
}

View File

@ -78,7 +78,7 @@ typedef struct vfile_s
extern const wadtype_t wad_hints[];
search_t *COM_Search( const char *pattern, int caseinsensitive, wfile_t *source_wad = NULL );
search_t *COM_Search( const char *pattern, int caseinsensitive, wfile_s *source_wad = NULL );
search_t *FS_Search( const char *pattern, int caseinsensitive, int gamedironly );
byte *COM_LoadFile( const char *filepath, size_t *filesize, bool safe = true );
bool COM_SaveFile( const char *filepath, void *buffer, size_t filesize, bool safe = true );
@ -143,4 +143,4 @@ void listdirectory( stringlist_t *list, const char *path, bool tolower = false )
void SetReplaceLevel( int level );
int GetReplaceLevel( void );
#endif//FILESYSTEM_H
#endif//FILESYSTEM_H

View File

@ -193,6 +193,7 @@ SinCos
*/
void SinCos( float radians, float *sine, float *cosine )
{
#ifdef _MSC_VER
Review

_MSC_VER and x86.

_MSC_VER and x86.
_asm
{
fld dword ptr [radians]
@ -204,6 +205,10 @@ void SinCos( float radians, float *sine, float *cosine )
fstp dword ptr [edx]
fstp dword ptr [eax]
}
#else
*sine = sin(radians);
*cosine = cos(radians);
#endif
}
/*
@ -405,7 +410,8 @@ fast box on planeside test
*/
int SignbitsForPlane( const vec3_t normal )
{
for( int bits = 0, i = 0; i < 3; i++ )
int bits, i;
for( bits = 0, i = 0; i < 3; i++ )
if( normal[i] < 0.0f )
bits |= 1<<i;
return bits;
@ -1220,4 +1226,4 @@ bool Matrix4x4_Invert_Full( matrix4x4 out, const matrix4x4 in1 )
}
return false;
}
}

View File

@ -28,7 +28,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include "stringlib.h"
#include "filesystem.h"
#include <stdarg.h>
#include <windows.h>
/*
=============================================================================
@ -558,4 +557,4 @@ void TokenError( const char *fmt, ... )
vsprintf( output, fmt, args );
COM_FatalError( "%s", output );
}
}
}

View File

@ -3,11 +3,12 @@
// stringlib.cpp - safety string routines
//=======================================================================
#include <windows.h>
#include "port.h"
#include <ctype.h>
#include "stringlib.h"
#include <direct.h>
#include "cmdlib.h"
#include "mathlib.h"
#include "stdarg.h"
void Q_strnupr( const char *in, char *out, size_t size_out )
{
@ -287,17 +288,21 @@ int Q_vsnprintf( char *buffer, size_t buffersize, const char *format, va_list ar
{
size_t result;
#ifdef _MSC_VER
__try
#endif
{
result = _vsnprintf( buffer, buffersize, format, args );
result = vsnprintf( buffer, buffersize, format, args );
}
// to prevent crash while output
#ifdef _MSC_VER
__except( EXCEPTION_EXECUTE_HANDLER )
{
Q_strncpy( buffer, "^1sprintf throw exception^7\n", buffersize );
result = buffersize;
}
#endif
if( result < 0 || result >= buffersize )
{
@ -534,4 +539,4 @@ skipwhite:
token[len] = 0;
return data;
}
}

View File

@ -14,11 +14,8 @@ GNU General Public License for more details.
*/
#include "conprint.h"
#include <windows.h>
#include <direct.h>
#include <fcntl.h>
#include <stdio.h>
#include <io.h>
#include "cmdlib.h"
#include "stringlib.h"
#include "filesystem.h"
@ -930,4 +927,4 @@ void W_SearchForFile( wfile_t *wad, const char *pattern, stringlist_t *resultlis
*((char *)separator) = 0;
}
}
}
}

View File

@ -13,7 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
*/
#include <windows.h>
//#include <windows.h>
#include "cmdlib.h"
#include "threads.h"
#include "stringlib.h"
@ -62,7 +62,7 @@ static void *attempt_calloc( size_t size )
if(( base = (void *)calloc( size, 1 )) != NULL )
return base;
// try for half a second or so
Sleep( 100 );
usleep( 100000 );
}
return NULL;
}
@ -173,4 +173,4 @@ size_t Mem_Size( void *ptr )
chunk = (memhdr_t *)((byte *)ptr - sizeof( memhdr_t ));
return chunk->size;
}
}