From 79bb654b80d5eb7a65814f80b9ca7ca1ccd62a00 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 4 Mar 2017 00:27:54 +0300 Subject: Reimplement VirtFs in correct way. Now all tests should pass. --- src/fs/virtfs/virtfszip.h | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'src/fs/virtfs/virtfszip.h') diff --git a/src/fs/virtfs/virtfszip.h b/src/fs/virtfs/virtfszip.h index a8af1a449..e88c74b69 100644 --- a/src/fs/virtfs/virtfszip.h +++ b/src/fs/virtfs/virtfszip.h @@ -25,19 +25,20 @@ #include "enums/simpletypes/append.h" #include "enums/simpletypes/skiperror.h" -#include "localconsts.h" +#include "utils/stringvector.h" -#include -#include +#include "localconsts.h" struct VirtFile; struct VirtList; struct VirtFsFuncs; +struct VirtFsEntry; struct VirtZipEntry; struct ZipLocalHeader; namespace VirtFsZip { + VirtFsFuncs *getFuncs(); VirtZipEntry *searchEntryByArchive(const std::string &restrict archiveName); ZipLocalHeader *searchHeaderByName(const std::string &restrict filename); @@ -54,20 +55,38 @@ namespace VirtFsZip void deinit(); std::vector &getEntries(); bool exists(std::string name); + bool exists(VirtFsEntry *restrict const entry, + const std::string &filename, + const std::string &dirName); + void enumerate(VirtFsEntry *restrict const entry, + const std::string &dirName, + StringVect &names); VirtList *enumerateFiles(std::string dirName) RETURNS_NONNULL; VirtList *enumerateFiles(std::string dirName, VirtList *restrict const list) RETURNS_NONNULL; - bool isDirectory(std::string dirName); + bool isDirectory(VirtFsEntry *restrict const entry, + const std::string &dirName, + bool &isDirFlag); bool isDirectoryInternal(std::string dirName); bool isSymbolicLink(std::string name); void freeList(VirtList *restrict const handle); VirtFile *openRead(std::string filename); + VirtFile *openRead(VirtFsEntry *restrict const entry, + const std::string &filename); + VirtFile *openWrite(VirtFsEntry *restrict const entry, + const std::string &filename); + VirtFile *openAppend(VirtFsEntry *restrict const entry, + const std::string &filename); VirtFile *openReadInternal(const std::string &filename); VirtFile *openWrite(const std::string &restrict filename); VirtFile *openAppend(const std::string &restrict filename); bool setWriteDir(const std::string &restrict newDir); std::string getRealDir(std::string filename); std::string getRealDirInternal(const std::string &filename); + bool getRealDir(VirtFsEntry *restrict const entry, + const std::string &filename, + const std::string &dirName, + std::string &realDir); bool mkdir(const std::string &restrict dirName); bool remove(const std::string &restrict filename); void permitLinks(const bool val); -- cgit v1.2.3-70-g09d2