diff options
author | Jay Freeman (saurik) <saurik@saurik.com> | 2015-06-25 10:19:08 +0000 |
---|---|---|
committer | Jay Freeman (saurik) <saurik@saurik.com> | 2015-06-25 11:59:32 +0000 |
commit | 10fd0e0c7fc4459f65c1e6029d44cd522e18becb (patch) | |
tree | 90bdf8374633501d71c8d606d5371da0ed96c217 /libuicache.mm | |
parent | 445ca7c40d970d9ed973e67040123c2e020fd294 (diff) |
On iOS 8.3, allow symbolic links as /Applications.
Diffstat (limited to 'libuicache.mm')
-rw-r--r-- | libuicache.mm | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/libuicache.mm b/libuicache.mm new file mode 100644 index 0000000..800beb9 --- /dev/null +++ b/libuicache.mm @@ -0,0 +1,27 @@ +#include <objc/runtime.h> +#include <Foundation/Foundation.h> + +@interface MIFileManager ++ (MIFileManager *) defaultManager; +- (NSURL *) destinationOfSymbolicLinkAtURL:(NSURL *)url error:(NSError *)error; +@end + +static Class $MIFileManager; + +static NSArray *(*_MIFileManager$urlsForItemsInDirectoryAtURL$ignoringSymlinks$error$)(MIFileManager *self, SEL _cmd, NSURL *url, BOOL ignoring, NSError *error); + +static NSArray *$MIFileManager$urlsForItemsInDirectoryAtURL$ignoringSymlinks$error$(MIFileManager *self, SEL _cmd, NSURL *url, BOOL ignoring, NSError *error) { + MIFileManager *manager(reinterpret_cast<MIFileManager *>([$MIFileManager defaultManager])); + if (NSURL *destiny = [manager destinationOfSymbolicLinkAtURL:url error:NULL]) + url = destiny; + return _MIFileManager$urlsForItemsInDirectoryAtURL$ignoringSymlinks$error$(self, _cmd, url, NO, error); +} + +__attribute__((__constructor__)) +static void initialize() { + $MIFileManager = objc_getClass("MIFileManager"); + SEL sel(@selector(urlsForItemsInDirectoryAtURL:ignoringSymlinks:error:)); + Method method(class_getInstanceMethod($MIFileManager, sel)); + _MIFileManager$urlsForItemsInDirectoryAtURL$ignoringSymlinks$error$ = reinterpret_cast<NSArray *(*)(MIFileManager *, SEL, NSURL *, BOOL, NSError *)>(method_getImplementation(method)); + method_setImplementation(method, reinterpret_cast<IMP>(&$MIFileManager$urlsForItemsInDirectoryAtURL$ignoringSymlinks$error$)); +} |