* (bug 3610) Server sending unnecessary newline with SV_ConSay_F (Tyler Schwend

<TylerSchwend@gmail.com>)
* (bug 3623) COMMAND is mapped to the ALT key (Matthias <Kapffer@macbay.de>)
* (bug 3665) Typo error in FS_FOpenFileByMode function (TsT <tst2006@gmail.com>)
* (bug 3669) Some files left out of Solaris Packages (Vincent Cojot
  <vincent@cojot.name>)
* (bug 3680) server quit messages (Ben Millwood)
* (bug 3682) Maps with >1024 models cause a segfault (misantropia
  <bnoordhuis@gmail.com>)
* (bug 3683) R_FindShader(): negative lightmap indexes cause stray pointers
  (misantropia <bnoordhuis@gmail.com>)
* (bug 3688) q3asm potential segfault fix and other changes (TsT
  <tst2006@gmail.com>)
* (bug 3695) Not allowing to write file with lib extention (.dll/.so/...) (TsT
  <tst2006@gmail.com>)
* (bug 3696) make-macosx-ub.sh outdated by revision 1340; test for Tiger not
   working (Matthias <Kapffer@macbay.de>)
* (bug 3698) #error reported as warning in q3cpp (and no #warning support)
  (Ben Millwood)
* (bug 3703) restoring the valued pre-SDL window behaviour (/dev/humancontroller
  <devhc97@gmail.com>)
This commit is contained in:
Tim Angus 2008-07-05 23:50:38 +00:00
parent 956ce9bf12
commit 2c0861c1ce
13 changed files with 145 additions and 73 deletions

View file

@ -494,6 +494,24 @@ static qboolean FS_CreatePath (char *OSPath) {
return qfalse;
}
/*
=================
FS_FilenameIsExecutable
ERR_FATAL if trying to maniuplate a file with the platform library extension
=================
*/
static void FS_FilenameIsExecutable( const char *filename, const char *function )
{
// Check if the filename ends with the library extension
if( !Q_stricmp( filename + strlen( filename ) - strlen( DLL_EXT ), DLL_EXT ) )
{
Com_Error( ERR_FATAL, "%s: Not allowed to write '%s' due to %s extension\n",
function, filename, DLL_EXT );
}
}
/*
=================
FS_CopyFile
@ -508,6 +526,8 @@ static void FS_CopyFile( char *fromOSPath, char *toOSPath ) {
Com_Printf( "copy %s to %s\n", fromOSPath, toOSPath );
FS_FilenameIsExecutable( toOSPath, __FUNCTION__ );
if (strstr(fromOSPath, "journal.dat") || strstr(fromOSPath, "journaldata.dat")) {
Com_Printf( "Ignoring journal files\n");
return;
@ -549,6 +569,8 @@ FS_Remove
===========
*/
void FS_Remove( const char *osPath ) {
FS_FilenameIsExecutable( osPath, __FUNCTION__ );
remove( osPath );
}
@ -559,6 +581,8 @@ FS_HomeRemove
===========
*/
void FS_HomeRemove( const char *homePath ) {
FS_FilenameIsExecutable( homePath, __FUNCTION__ );
remove( FS_BuildOSPath( fs_homepath->string,
fs_gamedir, homePath ) );
}
@ -636,6 +660,8 @@ fileHandle_t FS_SV_FOpenFileWrite( const char *filename ) {
Com_Printf( "FS_SV_FOpenFileWrite: %s\n", ospath );
}
FS_FilenameIsExecutable( ospath, __FUNCTION__ );
if( FS_CreatePath( ospath ) ) {
return 0;
}
@ -745,6 +771,8 @@ void FS_SV_Rename( const char *from, const char *to ) {
Com_Printf( "FS_SV_Rename: %s --> %s\n", from_ospath, to_ospath );
}
FS_FilenameIsExecutable( to_ospath, __FUNCTION__ );
if (rename( from_ospath, to_ospath )) {
// Failed, try copying it and deleting the original
FS_CopyFile ( from_ospath, to_ospath );
@ -777,6 +805,8 @@ void FS_Rename( const char *from, const char *to ) {
Com_Printf( "FS_Rename: %s --> %s\n", from_ospath, to_ospath );
}
FS_FilenameIsExecutable( to_ospath, __FUNCTION__ );
if (rename( from_ospath, to_ospath )) {
// Failed, try copying it and deleting the original
FS_CopyFile ( from_ospath, to_ospath );
@ -838,6 +868,8 @@ fileHandle_t FS_FOpenFileWrite( const char *filename ) {
Com_Printf( "FS_FOpenFileWrite: %s\n", ospath );
}
FS_FilenameIsExecutable( ospath, __FUNCTION__ );
if( FS_CreatePath( ospath ) ) {
return 0;
}
@ -884,6 +916,8 @@ fileHandle_t FS_FOpenFileAppend( const char *filename ) {
Com_Printf( "FS_FOpenFileAppend: %s\n", ospath );
}
FS_FilenameIsExecutable( ospath, __FUNCTION__ );
if( FS_CreatePath( ospath ) ) {
return 0;
}
@ -3397,7 +3431,7 @@ int FS_FOpenFileByMode( const char *qpath, fileHandle_t *f, fsMode_t mode ) {
}
break;
default:
Com_Error( ERR_FATAL, "FSH_FOpenFile: bad mode" );
Com_Error( ERR_FATAL, "FS_FOpenFileByMode: bad mode" );
return -1;
}