diff options
author | Jay Freeman (saurik) <saurik@saurik.com> | 2015-09-28 01:13:27 -0700 |
---|---|---|
committer | Jay Freeman (saurik) <saurik@saurik.com> | 2015-09-28 01:13:27 -0700 |
commit | 23c11ee8bcbc98bcaa3bc3682ab123f8a44d0b01 (patch) | |
tree | c08ca4a87bf2332c358b00b630015fb56a677fca /ldid.hpp | |
parent | 23fff9c86513730660d22f5eba0c85873e8bef09 (diff) | |
download | ldid-23c11ee8bcbc98bcaa3bc3682ab123f8a44d0b01.tar.gz ldid-23c11ee8bcbc98bcaa3bc3682ab123f8a44d0b01.tar.zst ldid-23c11ee8bcbc98bcaa3bc3682ab123f8a44d0b01.zip |
Finish implementating application bundle codesign.
Diffstat (limited to 'ldid.hpp')
-rw-r--r-- | ldid.hpp | 42 |
1 files changed, 41 insertions, 1 deletions
@@ -45,7 +45,47 @@ FunctorImpl<decltype(&Function_::operator())> fun(const Function_ &value) { return value; } -typedef std::map<uint32_t, std::string> Slots; +class Folder { + public: + virtual void Save(const std::string &path, const Functor<void (std::streambuf &)> &code) = 0; + virtual bool Open(const std::string &path, const Functor<void (std::streambuf &)> &code) = 0; + virtual void Find(const std::string &path, const Functor<void (const std::string &, const Functor<void (const Functor<void (std::streambuf &, std::streambuf &)> &)> &)> &code) = 0; +}; + +class DiskFolder : + public Folder +{ + private: + const std::string path_; + std::map<std::string, std::string> commit_; + + std::string Path(const std::string &path); + + public: + DiskFolder(const std::string &path); + ~DiskFolder(); + + virtual void Save(const std::string &path, const Functor<void (std::streambuf &)> &code); + virtual bool Open(const std::string &path, const Functor<void (std::streambuf &)> &code); + virtual void Find(const std::string &path, const Functor<void (const std::string &, const Functor<void (const Functor<void (std::streambuf &, std::streambuf &)> &)> &)> &code); +}; + +class SubFolder : + public Folder +{ + private: + Folder *parent_; + std::string path_; + + public: + SubFolder(Folder *parent, const std::string &path); + + virtual void Save(const std::string &path, const Functor<void (std::streambuf &)> &code); + virtual bool Open(const std::string &path, const Functor<void (std::streambuf &)> &code); + virtual void Find(const std::string &path, const Functor<void (const std::string &, const Functor<void (const Functor<void (std::streambuf &, std::streambuf &)> &)> &)> &code); +}; + +typedef std::map<uint32_t, std::vector<char>> Slots; void Sign(const void *idata, size_t isize, std::streambuf &output, const std::string &identifier, const std::string &entitlements, const std::string &key, const Slots &slots); |