#ifndef _VFS_H_
#define _VFS_H_
+#include "globaldefs.h"
+
// to get PATH_MAX
#include <stdio.h>
-#if defined ( __linux__ ) || defined ( __APPLE__ )
-#include <dirent.h>
-#include <unistd.h>
-#else
+
+#if GDEF_OS_WINDOWS
#include <wtypes.h>
#include <io.h>
+
+#ifndef R_OK
#define R_OK 04
+#endif
+
#define S_ISDIR( mode ) ( mode & _S_IFDIR )
+#else // !GDEF_OS_WINDOWS
+#include <dirent.h>
+#include <unistd.h>
+#endif // !GDEF_OS_WINDOWS
+
+#ifndef PATH_MAX
#define PATH_MAX 260
+#endif // PATH_MAX
+
+// PATH_MAX
+#if defined( __FreeBSD__ )
+#include <sys/syslimits.h>
#endif
-#include <glib.h>
-#define VFS_MAXDIRS 64
+// Multiple pakpaths with many pk3dirs can lead
+// to high list of VFS directories
+#define VFS_MAXDIRS 256
void vfsInitDirectory( const char *path );
void vfsShutdown();
int vfsGetFileCount( const char *filename );
int vfsLoadFile( const char *filename, void **buffer, int index );
-void vfsListShaderFiles( char list[512][64], int *num );
-qboolean vfsPackFile( const char *filename, const char *packname );
+void vfsListShaderFiles( char* list, int *num );
+qboolean vfsPackFile( const char *filename, const char *packname, const int compLevel );
extern char g_strForbiddenDirs[VFS_MAXDIRS][PATH_MAX + 1];
extern int g_numForbiddenDirs;