2007-11-04 03:34:51 +00:00
|
|
|
/*
|
2012-03-17 20:01:54 +00:00
|
|
|
Copyright (c) 2001, Loki software, inc.
|
|
|
|
All rights reserved.
|
2007-11-04 03:34:51 +00:00
|
|
|
|
2012-03-17 20:01:54 +00:00
|
|
|
Redistribution and use in source and binary forms, with or without modification,
|
|
|
|
are permitted provided that the following conditions are met:
|
2007-11-04 03:34:51 +00:00
|
|
|
|
2012-03-17 20:01:54 +00:00
|
|
|
Redistributions of source code must retain the above copyright notice, this list
|
|
|
|
of conditions and the following disclaimer.
|
2007-11-04 03:34:51 +00:00
|
|
|
|
2012-03-17 20:01:54 +00:00
|
|
|
Redistributions in binary form must reproduce the above copyright notice, this
|
|
|
|
list of conditions and the following disclaimer in the documentation and/or
|
|
|
|
other materials provided with the distribution.
|
2007-11-04 03:34:51 +00:00
|
|
|
|
2012-03-17 20:01:54 +00:00
|
|
|
Neither the name of Loki software nor the names of its contributors may be used
|
|
|
|
to endorse or promote products derived from this software without specific prior
|
|
|
|
written permission.
|
2007-11-04 03:34:51 +00:00
|
|
|
|
2012-03-17 20:01:54 +00:00
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
|
|
|
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
|
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
|
|
|
DIRECT,INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
|
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
|
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
|
|
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
|
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
*/
|
2007-11-04 03:34:51 +00:00
|
|
|
|
|
|
|
#ifndef _VFS_H_
|
|
|
|
#define _VFS_H_
|
|
|
|
|
|
|
|
#define VFS_MAXDIRS 8
|
|
|
|
|
2012-03-17 20:01:54 +00:00
|
|
|
void vfsInitDirectory( const char *path );
|
|
|
|
void vfsShutdown();
|
|
|
|
void vfsFreeFile( void *p );
|
|
|
|
GSList* vfsGetFileList( const char *dir, const char *ext );
|
|
|
|
GSList* vfsGetDirList( const char *dir );
|
|
|
|
void vfsClearFileDirList( GSList **lst );
|
|
|
|
int vfsGetFileCount( const char *filename, int flag );
|
|
|
|
int vfsLoadFile( const char *filename, void **buffer, int index = 0 );
|
|
|
|
int vfsLoadFullPathFile( const char *filename, void **buffer );
|
2007-11-04 03:34:51 +00:00
|
|
|
|
|
|
|
// some useful functions
|
|
|
|
// clean a file name to a unique representation
|
|
|
|
// very usefull if you have to do some weird manips on the files
|
|
|
|
// works on regular files and dirs
|
|
|
|
// will convert to lowercase, unix path ('/' filename seperator)
|
|
|
|
// on win32, will build the short path name
|
|
|
|
// directories will be cleaned, no ending filename seperator
|
|
|
|
// we modify the entry directly, the size of the string can only go down
|
2012-03-17 20:01:54 +00:00
|
|
|
void vfsCleanFileName( char * );
|
2007-11-04 03:34:51 +00:00
|
|
|
// these return a static char*, doesn't need to be freed or anything
|
|
|
|
// get the base path to use when raising file dialogs
|
|
|
|
// we manually add "maps/" or "sounds/" or "mapobjects/models/" etc.
|
|
|
|
const char* vfsBasePromptPath();
|
|
|
|
// extract the relative path from a full path
|
|
|
|
// will match against any of the base paths we have
|
|
|
|
// returns NULL if not found
|
2012-03-17 20:01:54 +00:00
|
|
|
char* vfsExtractRelativePath( const char *in );
|
2007-11-04 03:34:51 +00:00
|
|
|
// returns the full path (in a static buff) to a file given it's relative path
|
|
|
|
// returns the first file in the list or NULL if not found
|
|
|
|
// see ifilesystem.h for more notes
|
2012-03-17 20:01:54 +00:00
|
|
|
char* vfsGetFullPath( const char*, int index = 0, int flag = 0 );
|
2007-11-04 03:34:51 +00:00
|
|
|
|
|
|
|
|
|
|
|
#endif // _VFS_H_
|