File: programming/cocoa/UKXattrMetadataStore.zip/UKXattrMetadataStore/UKXattrMetadataStore.h


//
//  UKXattrMetadataStore.h
//  BubbleBrowser
//	LICENSE: MIT License
//
//  Created by Uli Kusterer on 12.03.06.
//  Copyright 2006 Uli Kusterer. All rights reserved.
//
 
// -----------------------------------------------------------------------------
//	Headers:
// -----------------------------------------------------------------------------
 
#import <Cocoa/Cocoa.h>
 
/*
	This is a wrapper around The Mac OS X 10.4 and later xattr API that lets
	you attach arbitrary metadata to a file. Currently it allows querying and
	changing the attributes of a file, as well as retrieving a list of attribute
	names.
	
	It also includes some conveniences for storing/retrieving UTF8 strings,
	and objects as XML property lists in addition to the raw data.
	
	NOTE: keys (i.e. xattr names) are strings of 127 characters or less and
	should be made like bundle identifiers, e.g. @"de.zathras.myattribute".
*/
 
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
// -----------------------------------------------------------------------------
//	Class declaration:
// -----------------------------------------------------------------------------
 
@interface UKXattrMetadataStore : NSObject
{
	
}
 
+(NSArray*)		allKeysAtPath: (NSString*)path traverseLink:(BOOL)travLnk;
 
// Store UTF8 strings:
+(void)				setString: (NSString*)str forKey: (NSString*)key
						atPath: (NSString*)path traverseLink:(BOOL)travLnk;
+(id)				stringForKey: (NSString*)key atPath: (NSString*)path
						traverseLink:(BOOL)travLnk;
 
// Store raw data:
+(void)				setData: (NSData*)data forKey: (NSString*)key
						atPath: (NSString*)path traverseLink:(BOOL)travLnk;
+(NSMutableData*)	dataForKey: (NSString*)key atPath: (NSString*)path
						traverseLink:(BOOL)travLnk;
 
// Store objects: (Only can get/set plist-type objects for now)â
+(void)				setObject: (id)obj forKey: (NSString*)key atPath: (NSString*)path
						traverseLink:(BOOL)travLnk;
+(id)				objectForKey: (NSString*)key atPath: (NSString*)path
						traverseLink:(BOOL)travLnk;
 
@end
 
#endif /*MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4*/

This code uses the PclZip Zip File reading code, which is subject to the GNU LGPL. It also uses the GeSHi syntax highlighter, subject to the GPL. Ask if you want this for your own web site, it's free.