diff --git a/SDWebImage.xcodeproj/project.pbxproj b/SDWebImage.xcodeproj/project.pbxproj index 5312d1be..9635e935 100644 --- a/SDWebImage.xcodeproj/project.pbxproj +++ b/SDWebImage.xcodeproj/project.pbxproj @@ -89,8 +89,8 @@ 325C46272233A0A8004CAE11 /* NSBezierPath+RoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = 325C46242233A0A8004CAE11 /* NSBezierPath+RoundedCorners.h */; settings = {ATTRIBUTES = (Private, ); }; }; 325C46282233A0A8004CAE11 /* NSBezierPath+RoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = 325C46252233A0A8004CAE11 /* NSBezierPath+RoundedCorners.m */; }; 325C46292233A0A8004CAE11 /* NSBezierPath+RoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = 325C46252233A0A8004CAE11 /* NSBezierPath+RoundedCorners.m */; }; - 325F7CC623893B2E00AEDFCC /* NSFileManager+ExtendedAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 325F7CC423893B2E00AEDFCC /* NSFileManager+ExtendedAttributes.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 325F7CC723893B2E00AEDFCC /* NSFileManager+ExtendedAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 325F7CC523893B2E00AEDFCC /* NSFileManager+ExtendedAttributes.m */; }; + 325F7CC623893B2E00AEDFCC /* SDFileAttributeHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 325F7CC423893B2E00AEDFCC /* SDFileAttributeHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 325F7CC723893B2E00AEDFCC /* SDFileAttributeHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 325F7CC523893B2E00AEDFCC /* SDFileAttributeHelper.m */; }; 325F7CCA238942AB00AEDFCC /* UIImage+ExtendedCacheData.h in Headers */ = {isa = PBXBuildFile; fileRef = 325F7CC8238942AB00AEDFCC /* UIImage+ExtendedCacheData.h */; settings = {ATTRIBUTES = (Public, ); }; }; 325F7CCB238942AB00AEDFCC /* UIImage+ExtendedCacheData.m in Sources */ = {isa = PBXBuildFile; fileRef = 325F7CC9238942AB00AEDFCC /* UIImage+ExtendedCacheData.m */; }; 325F7CCC2389463D00AEDFCC /* UIImage+ExtendedCacheData.m in Sources */ = {isa = PBXBuildFile; fileRef = 325F7CC9238942AB00AEDFCC /* UIImage+ExtendedCacheData.m */; }; @@ -414,8 +414,8 @@ 325C461F2233A02E004CAE11 /* UIColor+HexString.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIColor+HexString.m"; sourceTree = ""; }; 325C46242233A0A8004CAE11 /* NSBezierPath+RoundedCorners.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSBezierPath+RoundedCorners.h"; sourceTree = ""; }; 325C46252233A0A8004CAE11 /* NSBezierPath+RoundedCorners.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSBezierPath+RoundedCorners.m"; sourceTree = ""; }; - 325F7CC423893B2E00AEDFCC /* NSFileManager+ExtendedAttributes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSFileManager+ExtendedAttributes.h"; sourceTree = ""; }; - 325F7CC523893B2E00AEDFCC /* NSFileManager+ExtendedAttributes.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSFileManager+ExtendedAttributes.m"; sourceTree = ""; }; + 325F7CC423893B2E00AEDFCC /* SDFileAttributeHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDFileAttributeHelper.h; sourceTree = ""; }; + 325F7CC523893B2E00AEDFCC /* SDFileAttributeHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDFileAttributeHelper.m; sourceTree = ""; }; 325F7CC8238942AB00AEDFCC /* UIImage+ExtendedCacheData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "UIImage+ExtendedCacheData.h"; path = "Core/UIImage+ExtendedCacheData.h"; sourceTree = ""; }; 325F7CC9238942AB00AEDFCC /* UIImage+ExtendedCacheData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ExtendedCacheData.m"; path = "Core/UIImage+ExtendedCacheData.m"; sourceTree = ""; }; 326E2F2C236F0B23006F847F /* SDAnimatedImagePlayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImagePlayer.h; path = Core/SDAnimatedImagePlayer.h; sourceTree = ""; }; @@ -646,8 +646,8 @@ 325C461F2233A02E004CAE11 /* UIColor+HexString.m */, 325C46242233A0A8004CAE11 /* NSBezierPath+RoundedCorners.h */, 325C46252233A0A8004CAE11 /* NSBezierPath+RoundedCorners.m */, - 325F7CC423893B2E00AEDFCC /* NSFileManager+ExtendedAttributes.h */, - 325F7CC523893B2E00AEDFCC /* NSFileManager+ExtendedAttributes.m */, + 325F7CC423893B2E00AEDFCC /* SDFileAttributeHelper.h */, + 325F7CC523893B2E00AEDFCC /* SDFileAttributeHelper.m */, 329F123F223FAD3400B309FD /* SDInternalMacros.h */, 329F123E223FAD3400B309FD /* SDInternalMacros.m */, 329F1235223FAA3B00B309FD /* SDmetamacros.h */, @@ -922,7 +922,7 @@ 32C0FDE32013426C001B8F2D /* SDWebImageIndicator.h in Headers */, 32F7C0712030114C00873181 /* SDImageTransformer.h in Headers */, 32E67311235765B500DB4987 /* SDDisplayLink.h in Headers */, - 325F7CC623893B2E00AEDFCC /* NSFileManager+ExtendedAttributes.h in Headers */, + 325F7CC623893B2E00AEDFCC /* SDFileAttributeHelper.h in Headers */, 4A2CAE2D1AB4BB7500B6BC39 /* UIImage+GIF.h in Headers */, 4A2CAE291AB4BB7500B6BC39 /* NSData+ImageContentType.h in Headers */, 328BB69E2081FED200760D6C /* SDWebImageCacheKeyFilter.h in Headers */, @@ -1145,7 +1145,7 @@ 321E609C1F38E8ED00405457 /* SDImageIOCoder.m in Sources */, 4A2CAE261AB4BB7000B6BC39 /* SDWebImagePrefetcher.m in Sources */, 328BB6C92082581100760D6C /* SDDiskCache.m in Sources */, - 325F7CC723893B2E00AEDFCC /* NSFileManager+ExtendedAttributes.m in Sources */, + 325F7CC723893B2E00AEDFCC /* SDFileAttributeHelper.m in Sources */, 3248475F201775F600AF9E5A /* SDAnimatedImageView.m in Sources */, 32D1222C2080B2EB003685A3 /* SDImageCachesManager.m in Sources */, 32B9B53F206ED4230026769D /* SDWebImageDownloaderConfig.m in Sources */, diff --git a/SDWebImage/Core/SDDiskCache.m b/SDWebImage/Core/SDDiskCache.m index dff1f37f..1dd9e10b 100644 --- a/SDWebImage/Core/SDDiskCache.m +++ b/SDWebImage/Core/SDDiskCache.m @@ -8,7 +8,7 @@ #import "SDDiskCache.h" #import "SDImageCacheConfig.h" -#import "NSFileManager+ExtendedAttributes.h" +#import "SDFileAttributeHelper.h" #import static NSString * const SDDiskCacheExtendedAttributeName = @"com.hackemist.SDDiskCache"; @@ -104,7 +104,7 @@ static NSString * const SDDiskCacheExtendedAttributeName = @"com.hackemist.SDDis // get cache Path for image key NSString *cachePathForKey = [self cachePathForKey:key]; - NSData *extendedData = [self.fileManager extendedAttribute:SDDiskCacheExtendedAttributeName atPath:cachePathForKey traverseLink:NO error:nil]; + NSData *extendedData = [SDFileAttributeHelper extendedAttribute:SDDiskCacheExtendedAttributeName atPath:cachePathForKey traverseLink:NO error:nil]; return extendedData; } @@ -116,10 +116,10 @@ static NSString * const SDDiskCacheExtendedAttributeName = @"com.hackemist.SDDis if (!extendedData) { // Remove - [self.fileManager removeExtendedAttribute:SDDiskCacheExtendedAttributeName atPath:cachePathForKey traverseLink:NO error:nil]; + [SDFileAttributeHelper removeExtendedAttribute:SDDiskCacheExtendedAttributeName atPath:cachePathForKey traverseLink:NO error:nil]; } else { // Override - [self.fileManager setExtendedAttribute:SDDiskCacheExtendedAttributeName value:extendedData atPath:cachePathForKey traverseLink:NO overwrite:YES error:nil]; + [SDFileAttributeHelper setExtendedAttribute:SDDiskCacheExtendedAttributeName value:extendedData atPath:cachePathForKey traverseLink:NO overwrite:YES error:nil]; } } diff --git a/SDWebImage/Private/NSFileManager+ExtendedAttributes.h b/SDWebImage/Private/SDFileAttributeHelper.h similarity index 50% rename from SDWebImage/Private/NSFileManager+ExtendedAttributes.h rename to SDWebImage/Private/SDFileAttributeHelper.h index fef3a6cb..1e66ded7 100644 --- a/SDWebImage/Private/NSFileManager+ExtendedAttributes.h +++ b/SDWebImage/Private/SDFileAttributeHelper.h @@ -1,6 +1,5 @@ // -// NSFileManager+ExtendedAttributes.h -// NSFileManager+ExtendedAttributes +// This file is from https://gist.github.com/zydeco/6292773 // // Created by Jesús A. Álvarez on 2008-12-17. // Copyright 2008-2009 namedfork.net. All rights reserved. @@ -8,12 +7,12 @@ #import -@interface NSFileManager (ExtendedAttributes) +@interface SDFileAttributeHelper : NSObject -- (NSArray*)extendedAttributeNamesAtPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err; -- (BOOL)hasExtendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err; -- (NSData*)extendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err; -- (BOOL)setExtendedAttribute:(NSString*)name value:(NSData*)value atPath:(NSString*)path traverseLink:(BOOL)follow overwrite:(BOOL)overwrite error:(NSError**)err; -- (BOOL)removeExtendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err; ++ (NSArray*)extendedAttributeNamesAtPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err; ++ (BOOL)hasExtendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err; ++ (NSData*)extendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err; ++ (BOOL)setExtendedAttribute:(NSString*)name value:(NSData*)value atPath:(NSString*)path traverseLink:(BOOL)follow overwrite:(BOOL)overwrite error:(NSError**)err; ++ (BOOL)removeExtendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err; @end diff --git a/SDWebImage/Private/NSFileManager+ExtendedAttributes.m b/SDWebImage/Private/SDFileAttributeHelper.m similarity index 91% rename from SDWebImage/Private/NSFileManager+ExtendedAttributes.m rename to SDWebImage/Private/SDFileAttributeHelper.m index 2ec60bf4..fcb8ad47 100644 --- a/SDWebImage/Private/NSFileManager+ExtendedAttributes.m +++ b/SDWebImage/Private/SDFileAttributeHelper.m @@ -1,17 +1,16 @@ // -// NSFileManager+ExtendedAttributes.m -// NSFileManager+ExtendedAttributes +// This file is from https://gist.github.com/zydeco/6292773 // // Created by Jesús A. Álvarez on 2008-12-17. // Copyright 2008-2009 namedfork.net. All rights reserved. // -#import "NSFileManager+ExtendedAttributes.h" +#import "SDFileAttributeHelper.h" #import -@implementation NSFileManager (ExtendedAttributes) +@implementation SDFileAttributeHelper -- (NSArray*)extendedAttributeNamesAtPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err { ++ (NSArray*)extendedAttributeNamesAtPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err { int flags = follow? 0 : XATTR_NOFOLLOW; // get size of name list @@ -40,7 +39,7 @@ return [NSArray arrayWithArray:names]; } -- (BOOL)hasExtendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err { ++ (BOOL)hasExtendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err { int flags = follow? 0 : XATTR_NOFOLLOW; // get size of name list @@ -68,7 +67,7 @@ return NO; } -- (NSData*)extendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err { ++ (NSData*)extendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err { int flags = follow? 0 : XATTR_NOFOLLOW; // get length ssize_t attrLen = getxattr([path fileSystemRepresentation], [name UTF8String], NULL, 0, 0, flags); @@ -91,7 +90,7 @@ return attrData; } -- (BOOL)setExtendedAttribute:(NSString*)name value:(NSData*)value atPath:(NSString*)path traverseLink:(BOOL)follow overwrite:(BOOL)overwrite error:(NSError**)err { ++ (BOOL)setExtendedAttribute:(NSString*)name value:(NSData*)value atPath:(NSString*)path traverseLink:(BOOL)follow overwrite:(BOOL)overwrite error:(NSError**)err { int flags = (follow? 0 : XATTR_NOFOLLOW) | (overwrite? 0 : XATTR_CREATE); if (0 == setxattr([path fileSystemRepresentation], [name UTF8String], [value bytes], [value length], 0, flags)) return YES; // error @@ -109,7 +108,7 @@ return NO; } -- (BOOL)removeExtendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err { ++ (BOOL)removeExtendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err { int flags = (follow? 0 : XATTR_NOFOLLOW); if (0 == removexattr([path fileSystemRepresentation], [name UTF8String], flags)) return YES; // error