struct svfs_private {
	struct ntvfs_module_context *ntvfs;

	/* the base directory */
	char *connectpath;

	/* a linked list of open searches */
	struct search_state *search;

	/* next available search handle */
	uint16_t next_search_handle;

	struct svfs_file *open_files;
};

struct svfs_dir {
	unsigned int count;
	char *unix_dir;
	struct svfs_dirfile {
		char *name;
		struct stat st;
	} *files;
};

struct svfs_file {
	struct svfs_file *next, *prev;
	int fd;
	struct ntvfs_handle *handle;
	char *name;
};

struct search_state {
	struct search_state *next, *prev;
	uint16_t handle;
	unsigned int current_index;
	struct svfs_dir *dir;
};