X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=tools%2Fquake3%2Fq3data%2Fq3data.c;h=098e78f670e3a22f1961da10024ab12c5458d7f9;hb=a646f7db94ed0cac0c62aa3adb1c6f748ea62e97;hp=81f4ae6119f27a3931abcec6b41ee787dba2868e;hpb=4eeb89d4b2c37bba2393caa63508b3ffe03e65c6;p=xonotic%2Fnetradiant.git diff --git a/tools/quake3/q3data/q3data.c b/tools/quake3/q3data/q3data.c index 81f4ae61..098e78f6 100644 --- a/tools/quake3/q3data/q3data.c +++ b/tools/quake3/q3data/q3data.c @@ -1,23 +1,23 @@ /* -Copyright (C) 1999-2006 Id Software, Inc. and contributors. -For a list of contributors, see the accompanying CONTRIBUTORS file. + Copyright (C) 1999-2006 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 + */ #ifdef WIN32 #include @@ -27,73 +27,73 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "vfs.h" -qboolean g_verbose; -qboolean g_stripify = qtrue; -qboolean g_release; // don't grab, copy output data to new tree -char g_releasedir[1024]; // c:\quake2\baseq2, etc -qboolean g_archive; // don't grab, copy source data to new tree -char g_only[256]; // if set, only grab this cd -qboolean g_skipmodel; // set true when a cd is not g_only +qboolean g_verbose; +qboolean g_stripify = qtrue; +qboolean g_release; // don't grab, copy output data to new tree +char g_releasedir[1024]; // c:\quake2\baseq2, etc +qboolean g_archive; // don't grab, copy source data to new tree +char g_only[256]; // if set, only grab this cd +qboolean g_skipmodel; // set true when a cd is not g_only // bogus externs for some TA hacks (common/ using them against q3map) char *moddir = NULL; // some old defined that was in cmdlib lost during merge char writedir[1024]; -#if defined (__linux__) || defined (__APPLE__) +#if defined ( __linux__ ) || defined ( __APPLE__ ) #define strlwr strlower #endif /* -======================================================= + ======================================================= - PAK FILES + PAK FILES -======================================================= -*/ + ======================================================= + */ -unsigned Com_BlockChecksum (void *buffer, int length); +unsigned Com_BlockChecksum( void *buffer, int length ); typedef struct { - char name[56]; - int filepos, filelen; + char name[56]; + int filepos, filelen; } packfile_t; typedef struct { - char id[4]; - int dirofs; - int dirlen; + char id[4]; + int dirofs; + int dirlen; } packheader_t; -packfile_t pfiles[16384]; -FILE *pakfile; -packfile_t *pf; -packheader_t pakheader; +packfile_t pfiles[16384]; +FILE *pakfile; +packfile_t *pf; +packheader_t pakheader; /* -============== -ReleaseFile - -Filename should be gamedir reletive. -Either copies the file to the release dir, or adds it to -the pak file. -============== -*/ -void ReleaseFile (char *filename) -{ - char source[1024]; - char dest[1024]; + ============== + ReleaseFile + + Filename should be gamedir reletive. + Either copies the file to the release dir, or adds it to + the pak file. + ============== + */ +void ReleaseFile( char *filename ){ + char source[1024]; + char dest[1024]; - if (!g_release) + if ( !g_release ) { return; + } - sprintf (source, "%s%s", gamedir, filename); - sprintf (dest, "%s/%s", g_releasedir, filename); - printf ("copying to %s\n", dest); - QCopyFile (source, dest); - return; + sprintf( source, "%s%s", gamedir, filename ); + sprintf( dest, "%s/%s", g_releasedir, filename ); + printf( "copying to %s\n", dest ); + QCopyFile( source, dest ); + return; } typedef struct @@ -101,16 +101,15 @@ typedef struct // shader // opaque // opaque 2 - // blend + // blend // blend 2 char names[5][1024]; - int num; + int num; } ShaderFiles_t; ShaderFiles_t s_shaderFiles; -void FindShaderFiles( char *filename ) -{ +void FindShaderFiles( char *filename ){ char buffer[1024]; char stripped[1024]; char linebuffer[1024]; @@ -134,12 +133,12 @@ void FindShaderFiles( char *filename ) s_shaderFiles.num = 0; strcpy( stripped, filename ); - if ( strrchr( stripped, '.' ) ) + if ( strrchr( stripped, '.' ) ) { *strrchr( stripped, '.' ) = 0; + } strcat( stripped, ".shader" ); - if ( FileExists( stripped ) ) - { + if ( FileExists( stripped ) ) { char *p; char mapa[512], mapb[512]; @@ -147,7 +146,7 @@ void FindShaderFiles( char *filename ) s_shaderFiles.num++; // load and parse - len = LoadFile( stripped, (void **)&buf); + len = LoadFile( stripped, (void **)&buf ); p = buf; @@ -166,16 +165,16 @@ void FindShaderFiles( char *filename ) i++; p++; } - if ( *p == '\n' ) + if ( *p == '\n' ) { p++; + } linebuffer[i] = 0; strlwr( linebuffer ); // see if the line specifies an opaque map or blendmap if ( strstr( linebuffer, "opaquemap" ) == linebuffer || - strstr( linebuffer, "blendmap" ) == linebuffer ) - { + strstr( linebuffer, "blendmap" ) == linebuffer ) { int j; i = 0; @@ -214,13 +213,11 @@ void FindShaderFiles( char *filename ) mapb[j] = 0; // store map names - if ( mapa[0] != 0 && mapa[0] != '-' ) - { + if ( mapa[0] != 0 && mapa[0] != '-' ) { sprintf( s_shaderFiles.names[s_shaderFiles.num], "%s%s", gamedir, mapa ); s_shaderFiles.num++; } - if ( mapb[0] != 0 && mapb[0] != '-' && mapb[0] != '^' && mapb[0] != '*' ) - { + if ( mapb[0] != 0 && mapb[0] != '-' && mapb[0] != '^' && mapb[0] != '*' ) { sprintf( s_shaderFiles.names[s_shaderFiles.num], "%s%s", gamedir, mapb ); s_shaderFiles.num++; } @@ -229,16 +226,16 @@ void FindShaderFiles( char *filename ) } else { - if ( strrchr( stripped, '.' ) ) + if ( strrchr( stripped, '.' ) ) { *strrchr( stripped, '.' ) = 0; + } // look for diffuse maps for ( i = 0; i < 3; i++ ) { strcpy( buffer, stripped ); strcat( buffer, diffuseExtensions[i] ); - if ( FileExists( buffer ) ) - { + if ( FileExists( buffer ) ) { strcpy( s_shaderFiles.names[s_shaderFiles.num], buffer ); s_shaderFiles.num++; break; @@ -248,8 +245,7 @@ void FindShaderFiles( char *filename ) { strcpy( buffer, stripped ); strcat( buffer, otherExtensions[i] ); - if ( FileExists( buffer ) ) - { + if ( FileExists( buffer ) ) { strcpy( s_shaderFiles.names[s_shaderFiles.num], buffer ); s_shaderFiles.num++; } @@ -258,14 +254,13 @@ void FindShaderFiles( char *filename ) } /* -============== -ReleaseShader + ============== + ReleaseShader -Copies all needed files for a shader to the release directory -============== -*/ -void ReleaseShader( char *filename ) -{ + Copies all needed files for a shader to the release directory + ============== + */ +void ReleaseShader( char *filename ){ char fullpath[1024]; char dest[1024]; char stripped[1024]; @@ -278,65 +273,63 @@ void ReleaseShader( char *filename ) for ( i = 0; i < s_shaderFiles.num; i++ ) { strcpy( stripped, s_shaderFiles.names[i] ); - if ( strstr( stripped, gamedir ) ) - { - memmove( stripped, stripped+ strlen( gamedir ), strlen( stripped ) ); + if ( strstr( stripped, gamedir ) ) { + memmove( stripped, stripped + strlen( gamedir ), strlen( stripped ) ); } sprintf( dest, "%s/%s", g_releasedir, stripped ); - printf ("copying to %s\n", dest ); + printf( "copying to %s\n", dest ); QCopyFile( s_shaderFiles.names[i], dest ); - } + } } /* -=============== -Cmd_File - -This is only used to cause a file to be copied during a release -build (default.cfg, maps, etc) -=============== -*/ -void Cmd_File (void) -{ - GetToken (qfalse); - ReleaseFile (token); + =============== + Cmd_File + + This is only used to cause a file to be copied during a release + build (default.cfg, maps, etc) + =============== + */ +void Cmd_File( void ){ + GetToken( qfalse ); + ReleaseFile( token ); } /* -=============== -PackDirectory_r + =============== + PackDirectory_r -=============== -*/ + =============== + */ #ifdef _WIN32 #include "io.h" -void PackDirectory_r (char *dir) -{ +void PackDirectory_r( char *dir ){ struct _finddata_t fileinfo; - int handle; - char dirstring[1024]; - char filename[1024]; + int handle; + char dirstring[1024]; + char filename[1024]; - sprintf (dirstring, "%s%s/*.*", gamedir, dir); + sprintf( dirstring, "%s%s/*.*", gamedir, dir ); - handle = _findfirst (dirstring, &fileinfo); - if (handle == -1) + handle = _findfirst( dirstring, &fileinfo ); + if ( handle == -1 ) { return; + } do { - sprintf (filename, "%s/%s", dir, fileinfo.name); - if (fileinfo.attrib & _A_SUBDIR) - { // directory - if (fileinfo.name[0] != '.') // don't pak . and .. - PackDirectory_r (filename); + sprintf( filename, "%s/%s", dir, fileinfo.name ); + if ( fileinfo.attrib & _A_SUBDIR ) { // directory + if ( fileinfo.name[0] != '.' ) { // don't pak . and .. + PackDirectory_r( filename ); + } continue; } // copy or pack the file - ReleaseFile (filename); - } while (_findnext( handle, &fileinfo ) != -1); + ReleaseFile( filename ); + } while ( _findnext( handle, &fileinfo ) != -1 ); - _findclose (handle); + _findclose( handle ); } #else @@ -347,113 +340,113 @@ void PackDirectory_r (char *dir) #include #endif -void PackDirectory_r (char *dir) -{ +void PackDirectory_r( char *dir ){ #ifdef NeXT struct direct **namelist, *ent; #else struct dirent **namelist, *ent; #endif - int count; + int count; struct stat st; - int i; - int len; - char fullname[1024]; - char dirstring[1024]; - char *name; - - sprintf (dirstring, "%s%s", gamedir, dir); - count = scandir(dirstring, &namelist, NULL, NULL); - - for (i=0 ; id_name; - if (name[0] == '.') + if ( name[0] == '.' ) { continue; - - sprintf (fullname, "%s/%s", dir, name); - sprintf (dirstring, "%s%s/%s", gamedir, dir, name); - - if (stat (dirstring, &st) == -1) - Error ("fstating %s", pf->name); - if (st.st_mode & S_IFDIR) - { // directory - PackDirectory_r (fullname); + } + + sprintf( fullname, "%s/%s", dir, name ); + sprintf( dirstring, "%s%s/%s", gamedir, dir, name ); + + if ( stat( dirstring, &st ) == -1 ) { + Error( "fstating %s", pf->name ); + } + if ( st.st_mode & S_IFDIR ) { // directory + PackDirectory_r( fullname ); continue; } // copy or pack the file - ReleaseFile (fullname); + ReleaseFile( fullname ); } } #endif /* -=============== -Cmd_Dir - -This is only used to cause a directory to be copied during a -release build (sounds, etc) -=============== -*/ -void Cmd_Dir (void) -{ - GetToken (qfalse); - PackDirectory_r (token); + =============== + Cmd_Dir + + This is only used to cause a directory to be copied during a + release build (sounds, etc) + =============== + */ +void Cmd_Dir( void ){ + GetToken( qfalse ); + PackDirectory_r( token ); } //======================================================================== -#define MAX_RTEX 16384 -int numrtex; -char rtex[MAX_RTEX][64]; +#define MAX_RTEX 16384 +int numrtex; +char rtex[MAX_RTEX][64]; -void ReleaseTexture (char *name) -{ - int i; - char path[1024]; +void ReleaseTexture( char *name ){ + int i; + char path[1024]; - for (i=0 ; i] [-dump ] [-release ] [-only ] [-3dsconvert ] [-verbose] [file.qdt]"); + if ( i == argc ) { + Error( "usage: q3data [-archive ] [-dump ] [-release ] [-only ] [-3dsconvert ] [-verbose] [file.qdt]" ); + } - for ( ; i