#ifndef	FSLIST_H
#define	FSLIST_H

#include <../source/TAL/objbase.h>
#include <../source/vfs/iobase.h>
#include <../source/vfs/mbase.h>
#include <../source/vfs/fbase.h>
#include <../source/vfs/fsbase.h>

#ifdef	__cplusplus
extern "C" {
#endif	/* __cplusplus */
	/*
	 * Mounts ID WAD filesystem (DOOM I/II, Heretic, Hexen, etc.)
	 * FIXME: duplicate lump names doesn't handled correctly; driver
	 * just stupidly use last lump with given name.
	 */
#ifdef	CONFIG_VFS_WADFS
	vfs_dev_p	V_CALL	vfsMountWad(char *volume_name);
#endif	/* CONFIG_VFS_WADFS */
	/*
	 * Mounts ID PAK filesystem (QuakeI/II, HexenII, Half-Life, etc.)
	 */
#ifdef	CONFIG_VFS_PAKFS
	vfs_dev_p	V_CALL	vfsMountPak(char *volume_name);
#endif	/* CONFIG_VFS_PAKFS */
	/*
	 * Mounts LEC GOB filesystem (DF, JK, MOTS)
	 */
#ifdef	CONFIG_VFS_GOBFS
	vfs_dev_p	V_CALL	vfsMountGob(char *volume_name);
#endif	/* CONFIG_VFS_GOBFS */
	/*
	 * Mounts ordinary ZIP archive (and Quake III *.pk3 files)
	 */
#ifdef	CONFIG_VFS_ZIPFS
	vfs_dev_p	V_CALL	vfsMountZip(char *volume_name);
#endif	/* CONFIG_VFS_ZIPFS */
	/*
	 * Mounts ordinary Tape ARchiver archive
	 */
#ifdef	CONFIG_VFS_TARFS
	vfs_dev_p	V_CALL	vfsMountTar(char *volume_name);
#endif	/* CONFIG_VFS_TARFS */
	/*
	 * Mounts WIN32 PE executable as container for RT_USERDATA resources.
	 * Resources must have string names, not integer IDs.
	 */
#ifdef	CONFIG_VFS_PEFS
	vfs_dev_p	V_CALL	vfsMountExecutable(char *volume_name);
#endif	/* CONFIG_VFS_PEFS */

#ifdef	__cplusplus
}
#endif	/* __cplusplus */

/*
 * Default filesystem recognizers (located in drivers/fslist.c)
 */
extern vfs_mount_proc_t	def_mnt_proc[];

#endif	/* FSLIST_H */
