#ifndef	VFS_FSWARP_H
#define	VFS_FSWARP_H

vhandle_t	V_CALL	libvOpenRead(char *right_slashed_name);

#ifdef		CONFIG_COMPRESSION_ZLIB
/*
 * may be gzStreamDecompress ? gzStreamConvert ?
 */
vhandle_t	V_GLOBAL	gzConvertToDecompress(vhandle_t in);
#endif		/* CONFIG_COMPRESSION_ZLIB */

#ifdef	RIGHT_SLASHED
#define	PATH_DELIMITER				'/'
#else	/* !RIGHT_SLASHED */

#define	PATH_DELIMITER				'\\'

/*
 * fixme: get rid of these !!!
 */
typedef struct file_apis_s
{
	void (V_CALL *fsEnumFiles)(
		void (V_CALL *dir_callback)(char *full_unix_style_dir_name),
		void (V_CALL *file_callback)(char *full_unix_style_file_name),
		vboolean recursive);
	void (V_CALL *fsSplitPath)(char *src,char *dir,char *name,char *ext);
	void (V_CALL *fsMakePath)(char *dest_path,char *dir,
		char *name,char *ext);
	void (V_CALL *fsReplaceExt)(char *dst,char *name,char *ext);
	file_t	(V_CALL *fileOpenRead)(char *name);
	file_t	(V_CALL	*fileOpenWrite)(char *name);
	file_t	(V_CALL *fileOpenAppend)(char *name);
}	file_apis_t, *file_apis_p;

void	V_CALL	uvfsReplaceExt(char *dst,char *name,char *ext);
void	V_CALL	nvfsReplaceExt(char *dst,char *name,char *ext);
void	V_CALL	nvfsSplitPath(char *src,char *dir,char *name,char *ext);
void	V_CALL	nvfsMakePath(char *dest_path,char *dir,char *name,char *ext);
file_t	V_CALL	ufileOpenRead(char *name);
file_t	V_CALL	nfileOpenRead(char *name);
file_t	V_CALL	ufileOpenWrite(char *name);
file_t	V_CALL	nfileOpenWrite(char *name);
file_t	V_CALL	ufileOpenAppend(char *name);
file_t	V_CALL	nfileOpenAppend(char *name);

#endif	/* !RIGHT_SLASHED */

#endif	/* VFS_FSWARP_H */
