#define ZIP_CDIR_CHUNK_BASE_SIZE 46
#define ZIP_LOCAL_CHUNK_BASE_SIZE 30
+#ifdef LINK_TO_ZLIB
+#include <zlib.h>
+
+#define qz_inflate inflate
+#define qz_inflateEnd inflateEnd
+#define qz_inflateInit2_ inflateInit2_
+#define qz_inflateReset inflateReset
+#define qz_deflateInit2_ deflateInit2_
+#define qz_deflateEnd deflateEnd
+#define qz_deflate deflate
+#define Z_MEMLEVEL_DEFAULT 8
+#else
+
// Zlib constants (from zlib.h)
#define Z_SYNC_FLUSH 2
#define MAX_WBITS 15
unsigned long adler; ///< adler32 value of the uncompressed data
unsigned long reserved; ///< reserved for future use
} z_stream;
+#endif
/// inside a package (PAK or PK3)
=============================================================================
*/
+#ifndef LINK_TO_ZLIB
// Functions exported from zlib
#if defined(WIN32) && defined(ZLIB_USES_WINAPI)
# define ZEXPORT WINAPI
static int (ZEXPORT *qz_deflateInit2_) (z_stream* strm, int level, int method, int windowBits, int memLevel, int strategy, const char *version, int stream_size);
static int (ZEXPORT *qz_deflateEnd) (z_stream* strm);
static int (ZEXPORT *qz_deflate) (z_stream* strm, int flush);
+#endif
#define qz_inflateInit2(strm, windowBits) \
qz_inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
#define qz_deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
qz_deflateInit2_((strm), (level), (method), (windowBits), (memLevel), (strategy), ZLIB_VERSION, sizeof(z_stream))
+#ifndef LINK_TO_ZLIB
// qz_deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
static dllfunction_t zlibfuncs[] =
/// Handle for Zlib DLL
static dllhandle_t zlib_dll = NULL;
+#endif
#ifdef WIN32
static HRESULT (WINAPI *qSHGetFolderPath) (HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPTSTR pszPath);
*/
void PK3_CloseLibrary (void)
{
+#ifndef LINK_TO_ZLIB
Sys_UnloadLibrary (&zlib_dll);
+#endif
}
*/
qboolean PK3_OpenLibrary (void)
{
+#ifdef LINK_TO_ZLIB
+ return true;
+#else
const char* dllnames [] =
{
-#if defined(WIN64)
- "zlib64.dll",
-#elif defined(WIN32)
+#if defined(WIN32)
# ifdef ZLIB_USES_WINAPI
"zlibwapi.dll",
"zlib.dll",
// Load the DLL
return Sys_LoadLibrary (dllnames, &zlib_dll, zlibfuncs);
+#endif
}
/*
*/
qboolean FS_HasZlib(void)
{
+#ifdef LINK_TO_ZLIB
+ return true;
+#else
PK3_OpenLibrary(); // to be safe
return (zlib_dll != 0);
+#endif
}
/*
// Load the central directory in memory
central_dir = (unsigned char *)Mem_Alloc (tempmempool, eocd->cdir_size);
lseek (pack->handle, eocd->cdir_offset, SEEK_SET);
- if(read (pack->handle, central_dir, eocd->cdir_size) != (ssize_t) eocd->cdir_size)
+ if(read (pack->handle, central_dir, eocd->cdir_size) != (fs_offset_t) eocd->cdir_size)
{
Mem_Free (central_dir);
return -1;
return NULL;
}
- Con_Printf("Added packfile %s (%i files)\n", packfile, real_nb_files);
+ Con_DPrintf("Added packfile %s (%i files)\n", packfile, real_nb_files);
return pack;
}
Mem_Free(info);
- Con_Printf("Added packfile %s (%i files)\n", packfile, numpackfiles);
+ Con_DPrintf("Added packfile %s (%i files)\n", packfile, numpackfiles);
return pack;
}
*/
qboolean FS_AddPack(const char *pakfile, qboolean *already_loaded, qboolean keep_plain_dirs)
{
- char fullpath[MAX_QPATH];
+ char fullpath[MAX_OSPATH];
int index;
searchpath_t *search;
Cvar_SetQuick (&scr_screenshot_name, com_modname);
else
Cvar_SetQuick (&scr_screenshot_name, gamescreenshotname);
+
+ if((i = COM_CheckParm("-modname")) && i < com_argc - 1)
+ strlcpy(com_modname, com_argv[i+1], sizeof(com_modname));
// If "-condebug" is in the command line, remove the previous log file
if (COM_CheckParm ("-condebug") != 0)
return fs_checkgamedir_missing;
}
-static void FS_ListGameDirs()
+static void FS_ListGameDirs(void)
{
stringlist_t list, list2;
int i, j;
}
stringlistfreecontents(&list);
- fs_all_gamedirs = Mem_Alloc(fs_mempool, list2.numstrings * sizeof(*fs_all_gamedirs));
+ fs_all_gamedirs = (gamedir_t *)Mem_Alloc(fs_mempool, list2.numstrings * sizeof(*fs_all_gamedirs));
for(i = 0; i < list2.numstrings; ++i)
{
info = FS_CheckGameDir(list2.strings[i]);
if (!PK3_GetTrueFileOffset (pfile, pack))
return NULL;
+#ifndef LINK_TO_ZLIB
// No Zlib DLL = no compressed files
if (!zlib_dll && (pfile->flags & PACKFILE_FLAG_DEFLATED))
{
pfile->name);
return NULL;
}
+#endif
// LordHavoc: lseek affects all duplicates of a handle so we do it before
// the dup() call to avoid having to close the dup_handle on error here
if (fs_empty_files_in_pack_mark_deletions.integer && pak->files[middle].realsize == 0)
{
// yes, but the first one is empty so we treat it as not being there
- if (!quiet && developer.integer >= 10)
- Con_Printf("FS_FindFile: %s is marked as deleted\n", name);
+ if (!quiet && developer_extra.integer)
+ Con_DPrintf("FS_FindFile: %s is marked as deleted\n", name);
if (index != NULL)
*index = -1;
return NULL;
}
- if (!quiet && developer.integer >= 10)
- Con_Printf("FS_FindFile: %s in %s\n",
+ if (!quiet && developer_extra.integer)
+ Con_DPrintf("FS_FindFile: %s in %s\n",
pak->files[middle].name, pak->filename);
if (index != NULL)
dpsnprintf(netpath, sizeof(netpath), "%s%s", search->filename, name);
if (FS_SysFileExists (netpath))
{
- if (!quiet && developer.integer >= 10)
- Con_Printf("FS_FindFile: %s\n", netpath);
+ if (!quiet && developer_extra.integer)
+ Con_DPrintf("FS_FindFile: %s\n", netpath);
if (index != NULL)
*index = -1;
}
}
- if (!quiet && developer.integer >= 10)
- Con_Printf("FS_FindFile: can't find %s\n", name);
+ if (!quiet && developer_extra.integer)
+ Con_DPrintf("FS_FindFile: can't find %s\n", name);
if (index != NULL)
*index = -1;
int FS_FileType (const char *filename)
{
searchpath_t *search;
- char fullpath[MAX_QPATH];
+ char fullpath[MAX_OSPATH];
search = FS_FindFile (filename, NULL, true);
if(!search)
if (stat (path,&buf) == -1)
return FS_FILETYPE_NONE;
+#ifndef S_ISDIR
+#define S_ISDIR(a) (((a) & S_IFMT) == S_IFDIR)
+#endif
if(S_ISDIR(buf.st_mode))
return FS_FILETYPE_DIRECTORY;
unsigned char *out = NULL;
unsigned char *tmp;
+ *deflated_size = 0;
+#ifndef LINK_TO_ZLIB
+ if(!zlib_dll)
+ return NULL;
+#endif
+
memset(&strm, 0, sizeof(strm));
strm.zalloc = Z_NULL;
strm.zfree = Z_NULL;
unsigned int have;
sizebuf_t outbuf;
+ *inflated_size = 0;
+#ifndef LINK_TO_ZLIB
+ if(!zlib_dll)
+ return NULL;
+#endif
+
memset(&outbuf, 0, sizeof(outbuf));
outbuf.data = (unsigned char *) Mem_Alloc(tempmempool, sizeof(tmp));
outbuf.maxsize = sizeof(tmp);