// // NSFileManager+ExtendedAttributes.h // Sparkle // // Created by Mark Mentovai on 2008-01-22. // Copyright 2008 Mark Mentovai. All rights reserved. // #ifndef NSFILEMANAGER_PLUS_EXTENDEDATTRIBUTES #define NSFILEMANAGER_PLUS_EXTENDEDATTRIBUTES #import @interface NSFileManager (MMExtendedAttributes) // Wraps the removexattr system call, allowing an AppKit-style NSString* to // be used for the pathname argument. Note that the order of the arguments // has changed from what removexattr accepts, so that code reads more // naturally. // // removexattr is only available on Mac OS X 10.4 ("Tiger") and later. If // built with an SDK that includes removexattr, this method will link against // removexattr directly. When using earlier SDKs, this method will dynamically // look up the removexattr symbol at runtime. If the symbol is not present, // as will be the case when running on 10.3, this method returns -1 and sets // errno to ENOSYS. - (int)removeXAttr:(const char*)name fromFile:(NSString*)file options:(int)options; // Removes the directory tree rooted at |root| from the file quarantine. // The quarantine was introduced on Mac OS X 10.5 and is described at: // // http://developer.apple.com/releasenotes/Carbon/RN-LaunchServices/index.html //#apple_ref/doc/uid/TP40001369-DontLinkElementID_2 // // If |root| is not a directory, then it alone is removed from the quarantine. // Symbolic links, including |root| if it is a symbolic link, will not be // traversed. // // Ordinarily, the quarantine is managed by calling LSSetItemAttribute // to set the kLSItemQuarantineProperties attribute to a dictionary specifying // the quarantine properties to be applied. However, it does not appear to be // possible to remove an item from the quarantine directly through any public // Launch Services calls. Instead, this method takes advantage of the fact // that the quarantine is implemented in part by setting an extended attribute, // "com.apple.quarantine", on affected files. Removing this attribute is // sufficient to remove files from the quarantine. - (void)releaseFromQuarantine:(NSString*)root; @end #endif