Loading...
cache-builder/FileUtils.h dyld-1231.3 dyld-960
--- dyld/dyld-1231.3/cache-builder/FileUtils.h
+++ dyld/dyld-960/cache-builder/FileUtils.h
@@ -33,20 +33,27 @@
 #include <vector>
 #include <unordered_map>
 #include <unordered_set>
-#include <TargetConditionals.h>
-#include "Defines.h"
-#if !TARGET_OS_EXCLAVEKIT
-  #include <dispatch/dispatch.h>
-#endif
+#include <dispatch/dispatch.h>
 
 #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
@@ -80,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