Loading...
--- dyld/dyld-1066.8/cache-builder/FileUtils.h
+++ dyld/dyld-960/cache-builder/FileUtils.h
@@ -38,11 +38,22 @@
#include "DyldSharedCache.h"
#include "JSON.h"
-namespace cache_builder {
- struct FileAlias;
+class Diagnostics;
+
+#if BUILDING_CACHE_BUILDER
+struct FileCache {
+ FileCache(void);
+ std::pair<uint8_t*, struct stat> cacheLoad(Diagnostics& diags, const std::string path);
+
+private:
+ std::pair<uint8_t*, struct stat> fill(Diagnostics& diags, const std::string& path);
+
+ std::unordered_map<std::string, std::pair<uint8_t*, struct stat>> entries;
+ dispatch_queue_t cache_queue;
};
-class Diagnostics;
+extern FileCache fileCache;
+#endif
//
// recursively walk all files in a directory tree
@@ -76,5 +87,24 @@
std::string toolDir();
+#if BUILDING_CACHE_BUILDER
+class SymlinkResolver {
+public:
+ SymlinkResolver() { }
+
+ void addFile(Diagnostics& diags, std::string path);
+
+ void addSymlink(Diagnostics& diags, std::string fromPath, std::string toPath);
+
+ std::string realPath(Diagnostics& diags, const std::string& path) const;
+
+ std::vector<DyldSharedCache::FileAlias> getResolvedSymlinks(Diagnostics& diags);
+
+private:
+ std::set<std::string> filePaths;
+ std::map<std::string, std::string> symlinks;
+};
+#endif // BUILDING_CACHE_BUILDER
+
#endif // FileUtils_h