From a1c9c58972ef8b647cf7af39fcd43f03d3ff2cab Mon Sep 17 00:00:00 2001 From: nillerusr Date: Mon, 16 Nov 2020 21:43:24 +0300 Subject: [PATCH] fix COM_FileExists, implement args for bsp31migrate --- utils/bsp31migrate/bsp31migrate.cpp | 2 +- utils/bsp31migrate/bspfile.cpp | 42 +++++++++++++---------------- utils/common/filesystem.cpp | 16 +++++++++-- 3 files changed, 33 insertions(+), 27 deletions(-) diff --git a/utils/bsp31migrate/bsp31migrate.cpp b/utils/bsp31migrate/bsp31migrate.cpp index 2875473..aeecfeb 100644 --- a/utils/bsp31migrate/bsp31migrate.cpp +++ b/utils/bsp31migrate/bsp31migrate.cpp @@ -24,7 +24,7 @@ int main( int argc, char **argv ) if( i != 0 && argc > i+1 ) SetDeveloperLevel( atoi( argv[i+1] )); - if( COM_CheckParm( "--help" ) != 0 ) + if( COM_CheckParm( "-help" ) != 0 ) { Msg( "usage: bsp31migrate -file -output \n" ); return 0; diff --git a/utils/bsp31migrate/bspfile.cpp b/utils/bsp31migrate/bspfile.cpp index 1f588b0..312658b 100644 --- a/utils/bsp31migrate/bspfile.cpp +++ b/utils/bsp31migrate/bspfile.cpp @@ -15,6 +15,7 @@ GNU General Public License for more details. #include "bsp31migrate.h" #include "filesystem.h" +#include "stringlib.h" #define VALVE_FORMAT 220 @@ -117,46 +118,38 @@ void PrintMapInfo( void ) char *ptr = &g_mapinfo[infolen-2]; if( *ptr == ',' ) *ptr = '.'; - - Msg( "Map name: %s", g_mapname ); - Msg( "\nMap type: " ); + Msg( "Map name: %s\n", g_mapname ); switch( g_maptype ) { case MAP_XASH31: - Msg( "^2XashXT BSP31^7" ); + Msg("Map Type: ^2XashXT BSP31^7\n"); break; default: COM_FatalError( "%s unknown map format\n", g_mapname ); break; } - if( g_subtype != MAP_NORMAL ) - Msg( "\nSub type: " ); - else Msg( "\n" ); - switch( g_subtype ) { case MAP_HLFX06: - Msg( "^4HLFX 0.6^7\n" ); + Msg( "Sub type: ^4HLFX 0.6^7\n" ); break; case MAP_XASHXT_OLD: - Msg( "^4XashXT 0.5^7\n" ); + Msg( "Sub type: ^4XashXT 0.5^7\n" ); break; case MAP_P2SAVIOR: - Msg( "^4Paranoia2: Savior^7\n" ); + Msg( "Sub type: ^4Paranoia2: Savior^7\n" ); break; case MAP_DEPRECATED: - Msg( "^1intermediate deprecated version^7\n" ); + Msg( "Sub type: ^1intermediate deprecated version^7\n" ); break; case MAP_XASH3D_EXT: - Msg( "^4Xash3D extended^7\n" ); + Msg( "Sub type: ^4Xash3D extended^7\n" ); break; } - if( g_mapinfo[0] ) Msg( "Map info: %s", g_mapinfo ); - - Msg( "\n\n" ); + if( g_mapinfo[0] ) Msg( "Map info: %s\n", g_mapinfo ); } //============================================================================= @@ -1180,12 +1173,17 @@ void LoadBSPFile( const char *infilename, const char *outfilename ) int BspConvert( int argc, char **argv ) { - char source[1024], name[1024]; - char output[1024]; + char source[1024], name[1024], name_output[1024]; + char output[1024], root[1024]; - if( !COM_GetParmExt( "-file", source, sizeof( source ))) - Q_strncpy( source, "*.bsp", sizeof( source )); + if( COM_GetParmExt( "-file", source, sizeof( source )) && COM_GetParmExt( "-output", output, sizeof( output )) ) + { + LoadBSPFile( source, output ); + return 0; + } + + Q_strncpy( source, "*.bsp", sizeof( source )); search_t *search = COM_Search( source, true ); @@ -1195,10 +1193,6 @@ int BspConvert( int argc, char **argv ) { COM_FileBase( search->filenames[i], name ); Q_snprintf( output, sizeof( output ), "%s.bsp", name ); -#if 0 - if( COM_FileExists( output )) - continue; // map already converted -#endif LoadBSPFile( search->filenames[i], output ); } diff --git a/utils/common/filesystem.cpp b/utils/common/filesystem.cpp index ba4788f..3882133 100644 --- a/utils/common/filesystem.cpp +++ b/utils/common/filesystem.cpp @@ -224,7 +224,7 @@ search_t *COM_Search( const char *pattern, int caseinsensitive, wfile_t *source_ int i, basepathlength, numfiles, numchars; int resultlistindex, dirlistindex; const char *slash, *backslash, *colon, *separator; - char netpath[1024], temp[1024], root[1204]; + char netpath[1024], temp[1024], root[1024]; stringlist_t resultlist, dirlist; char *basepath; @@ -399,13 +399,25 @@ COM_FileExists */ bool COM_FileExists( const char *path ) { +#ifdef _WIN32 int desc; - + if(( desc = open( path, O_RDONLY|O_BINARY )) < 0 ) return false; close( desc ); return true; +#else + int ret; + struct stat buf; + + ret = stat( path, &buf ); + + if( ret < 0 ) + return false; + + return S_ISREG( buf.st_mode ); +#endif } /*