-void vfsInitDirectory (const char *path)
-{
- char filename[PATH_MAX];
- char *dirlist;
- GDir *dir;
- int j;
-
- for(j = 0; j < g_numForbiddenDirs; ++j)
- {
- char* dbuf = g_strdup(path);
- if(*dbuf && dbuf[strlen(dbuf)-1] == '/')
- dbuf[strlen(dbuf)-1] = 0;
- const char *p = strrchr(dbuf, '/');
- p = (p ? (p+1) : dbuf);
- if(matchpattern(p, g_strForbiddenDirs[j], TRUE))
- {
- g_free(dbuf);
- break;
- }
- g_free(dbuf);
- }
- if(j < g_numForbiddenDirs)
- return;
-
- if (g_numDirs == VFS_MAXDIRS)
- return;
-
- Sys_Printf ("VFS Init: %s\n", path);
-
- strncpy (g_strDirs[g_numDirs], path, PATH_MAX);
- g_strDirs[g_numDirs][PATH_MAX] = 0;
- vfsFixDOSName (g_strDirs[g_numDirs]);
- vfsAddSlash (g_strDirs[g_numDirs]);
- g_numDirs++;
-
- if (g_bUsePak)
- {
- dir = g_dir_open (path, 0, NULL);
-
- if (dir != NULL)
- {
- while (1)
- {
- const char* name = g_dir_read_name(dir);
- if(name == NULL)
- break;
-
- for(j = 0; j < g_numForbiddenDirs; ++j)
- {
- const char *p = strrchr(name, '/');
- p = (p ? (p+1) : name);
- if(matchpattern(p, g_strForbiddenDirs[j], TRUE))
- break;
- }
- if(j < g_numForbiddenDirs)
- continue;
-
- dirlist = g_strdup(name);
-
- {
- char *ext = strrchr (dirlist, '.');
-
- if(ext && !Q_stricmp(ext, ".pk3dir"))
- {
- if (g_numDirs == VFS_MAXDIRS)
- continue;
- snprintf(g_strDirs[g_numDirs], PATH_MAX, "%s/%s", path, name);
- g_strDirs[g_numDirs][PATH_MAX] = '\0';
- vfsFixDOSName (g_strDirs[g_numDirs]);
- vfsAddSlash (g_strDirs[g_numDirs]);
- ++g_numDirs;
- }
-
- if ((ext == NULL) || (Q_stricmp (ext, ".pk3") != 0))
- continue;
- }
-
- sprintf (filename, "%s/%s", path, dirlist);
- vfsInitPakFile (filename);
-
- g_free(dirlist);
- }
- g_dir_close (dir);
- }
- }
+void vfsInitDirectory( const char *path ){
+ char filename[PATH_MAX];
+ char *dirlist;
+ GDir *dir;
+ int j;
+
+ for ( j = 0; j < g_numForbiddenDirs; ++j )
+ {
+ char* dbuf = g_strdup( path );
+ if ( *dbuf && dbuf[strlen( dbuf ) - 1] == '/' ) {
+ dbuf[strlen( dbuf ) - 1] = 0;
+ }
+ const char *p = strrchr( dbuf, '/' );
+ p = ( p ? ( p + 1 ) : dbuf );
+ if ( matchpattern( p, g_strForbiddenDirs[j], TRUE ) ) {
+ g_free( dbuf );
+ break;
+ }
+ g_free( dbuf );
+ }
+ if ( j < g_numForbiddenDirs ) {
+ return;
+ }
+
+ if ( g_numDirs == VFS_MAXDIRS ) {
+ return;
+ }
+
+ Sys_Printf( "VFS Init: %s\n", path );
+
+ strncpy( g_strDirs[g_numDirs], path, PATH_MAX );
+ g_strDirs[g_numDirs][PATH_MAX] = 0;
+ vfsFixDOSName( g_strDirs[g_numDirs] );
+ vfsAddSlash( g_strDirs[g_numDirs] );
+ g_numDirs++;
+
+ if ( g_bUsePak ) {
+ dir = g_dir_open( path, 0, NULL );
+
+ if ( dir != NULL ) {
+ while ( 1 )
+ {
+ const char* name = g_dir_read_name( dir );
+ if ( name == NULL ) {
+ break;
+ }
+
+ for ( j = 0; j < g_numForbiddenDirs; ++j )
+ {
+ const char *p = strrchr( name, '/' );
+ p = ( p ? ( p + 1 ) : name );
+ if ( matchpattern( p, g_strForbiddenDirs[j], TRUE ) ) {
+ break;
+ }
+ }
+ if ( j < g_numForbiddenDirs ) {
+ continue;
+ }
+
+ dirlist = g_strdup( name );
+
+ {
+ char *ext = strrchr( dirlist, '.' );
+
+ if ( ext && !Q_stricmp( ext, ".pk3dir" ) ) {
+ if ( g_numDirs == VFS_MAXDIRS ) {
+ continue;
+ }
+ snprintf( g_strDirs[g_numDirs], PATH_MAX, "%s/%s", path, name );
+ g_strDirs[g_numDirs][PATH_MAX] = '\0';
+ vfsFixDOSName( g_strDirs[g_numDirs] );
+ vfsAddSlash( g_strDirs[g_numDirs] );
+ ++g_numDirs;
+ }
+
+ if ( ( ext == NULL ) || ( Q_stricmp( ext, ".pk3" ) != 0 ) ) {
+ continue;
+ }
+ }
+
+ sprintf( filename, "%s/%s", path, dirlist );
+ vfsInitPakFile( filename );
+
+ g_free( dirlist );
+ }
+ g_dir_close( dir );
+ }
+ }