From 975a0a2cc445d333f82417ac98162e2431040cc1 Mon Sep 17 00:00:00 2001 From: Spoike Date: Mon, 2 Jan 2006 23:46:44 +0000 Subject: [PATCH] Trying to fix some downloading vfs stuff. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1779 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- engine/client/cl_parse.c | 14 +++++++++----- engine/common/fs.c | 3 +++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/engine/client/cl_parse.c b/engine/client/cl_parse.c index 8f314403f..6a4507bc1 100644 --- a/engine/client/cl_parse.c +++ b/engine/client/cl_parse.c @@ -922,7 +922,7 @@ void CL_ParseChunkedDownload(void) if (cls.downloadmethod == DL_QWCHUNKS) Host_EndGame("Received second download - \"%s\"\n", svname); - if (!strcmp(cls.downloadname, svname)) + if (strcmp(cls.downloadname, svname)) Host_EndGame("Server sent the wrong download - \"%s\" instead of \"%s\"\n", svname, cls.downloadname); //start the new download @@ -937,11 +937,15 @@ void CL_ParseChunkedDownload(void) COM_DefaultExtension(cls.downloadtempname, ".tmp"); if (!strncmp(cls.downloadtempname,"skins/",6)) - sprintf (osname, "qw/%s", cls.downloadtempname); //skins go to quake/qw/skins. never quake/gamedir/skins (blame id) + { + FS_CreatePath (va("qw/%s", cls.downloadtempname), FS_BASE); + cls.downloadqw = FS_OpenVFS (va("qw/%s", cls.downloadtempname), "wb", FS_BASE); + } else - sprintf (osname, "%s/%s", com_gamedir, cls.downloadtempname); - COM_CreatePath (osname); - cls.downloadqw = FS_OpenVFS (osname, "wb", FS_GAME); + { + FS_CreatePath (cls.downloadtempname, FS_GAME); + cls.downloadqw = FS_OpenVFS (cls.downloadtempname, "wb", FS_GAME); + } if (!cls.downloadqw) { diff --git a/engine/common/fs.c b/engine/common/fs.c index 4c0074b40..d5261589c 100644 --- a/engine/common/fs.c +++ b/engine/common/fs.c @@ -1626,6 +1626,9 @@ vfsfile_t *FS_OpenVFS(char *filename, char *mode, int relativeto) return loc.search->funcs->OpenVFS(loc.search->handle, &loc, mode); } + //if we're meant to be writing, best write to it. + if (strchr(mode , 'w')) + return VFSOS_Open(fullname, mode); return NULL; }