Commits

Bill Garrison  committed 476eec0

First commit.

  • Participants

Comments (0)

Files changed (29)

File Documentation/README.txt

+
+You can regenerate an Xcode docset by running "sh appledoc.sh" from a shell.
+
+The appledoc tool must be installed on your system somewhere, including its templates.
+You can get it from GitHub at <https://github.com/tomaz/appledoc/>.
+
+The appledoc.sh script expects appledoc to be installed in its default location, /usr/local/bin/appledoc.
+
+May the force be with you.

File Documentation/appledoc.sh

+#!/bin/bash
+#
+# Generate an Xcode docset using appledoc
+#
+# I use Xcode-compatible variable names where possible to facilitate
+# running the script from an Xcode run script phase as well as a command line.
+#
+#set -x
+#
+set -e
+
+: ${APPLEDOC:=/usr/local/bin/appledoc}
+: ${APPLEDOC_OUTPUT:=./Documentation}
+: ${PROJECT_DIR:=../}
+: ${PROJECT_NAME:="SOExtendedAttributes"}
+: ${BUILD_VERSION:="1.0"}
+
+if [ -z ${APPLEDOC} ] || ! [ -x ${APPLEDOC} ]; then
+echo "error: can't find the appledoc binary at $APPLEDOC"
+exit -1
+fi
+
+# Set working directory to the project root
+#
+cd ${PROJECT_DIR}
+echo "working directory: $PWD"
+
+# Run the system's appledoc tool, specifying paths relative to the project root
+#
+printf "Using appledoc from %s\n" ${APPLEDOC}
+
+${APPLEDOC} \
+--project-name="SOExtendedAttributes" \
+--project-version=${BUILD_VERSION} \
+--project-company="Standard Orbit" \
+--company-id="net.standardorbit" \
+--logformat="xcode" \
+--no-repeat-first-par \
+--no-warn-invalid-crossref \
+--ignore="Documentation" \
+--ignore="UnitTests" \
+--ignore="SOLoggerDemo" \
+--keep-intermediate-files \
+--create-docset \
+--install-docset \
+--docset-install-path="Documentation" \
+--docset-bundle-name="SOExtendedAttributes" \
+--docset-desc="SOExtendedAttributes defines cateogry on NSURL for manipulating extended attributes on a file system object." \
+--print-settings \
+--verbose=4 \
+--output=${TMPDIR}appledoc-${PROJECT_NAME} \
+--clean-output \
+$PWD
+

File Documentation/net.standardorbit.SOExtendedAttributes.docset/Contents/Info.plist

+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleIdentifier</key>
+	<string>net.standardorbit.SOExtendedAttributes</string>
+	<key>CFBundleName</key>
+	<string>SOExtendedAttributes</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	
+	
+	<key>DocSetDescription</key>
+	<string>SOExtendedAttributes defines cateogry on NSURL for manipulating extended attributes on a file system object.</string>
+	
+	<key>DocSetFeedName</key>
+	<string>SOExtendedAttributes Documentation</string>
+	
+	<key>DocSetMinimumXcodeVersion</key>
+	<string>3.0</string>
+	
+	<key>DocSetPublisherIdentifier</key>
+	<string>net.standardorbit.documentation</string>
+	<key>DocSetPublisherName</key>
+	<string>Standard Orbit</string>
+	<key>NSHumanReadableCopyright</key>
+	<string>Copyright © 2012 Standard Orbit. All rights reserved.</string>
+</dict>
+</plist>

File Documentation/net.standardorbit.SOExtendedAttributes.docset/Contents/Resources/Documents/Categories/NSURL+SOExtendedAttributes.html

+<!DOCTYPE HTML>
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="html/html; charset=utf-8" />
+		<title>NSURL(SOExtendedAttributes) Category Reference</title>
+		<meta id="xcode-display" name="xcode-display" content="render"/>
+		<meta name="viewport" content="width=550" />
+		<link rel="stylesheet" type="text/css" href="../css/styles.css" media="all" />
+		<link rel="stylesheet" type="text/css" media="print" href="../css/stylesPrint.css" />
+		<meta name="generator" content="appledoc 2.0.5 (build 752)" />
+	</head>
+	<body>
+		<header id="top_header">
+			<div id="library" class="hideInXcode">
+				<h1><a id="libraryTitle" href="../index.html">SOExtendedAttributes </a></h1>
+				<a id="developerHome" href="../index.html">Standard Orbit</a>
+			</div>
+			
+			<div id="title" role="banner">
+				<h1 class="hideInXcode">NSURL(SOExtendedAttributes) Category Reference</h1>
+			</div>
+			<ul id="headerButtons" role="toolbar">
+				<li id="toc_button">
+					<button aria-label="Show Table of Contents" role="checkbox" class="open" id="table_of_contents"><span class="disclosure"></span>Table of Contents</button>
+				</li>
+				<li id="jumpto_button" role="navigation">
+					<select id="jumpTo">
+	<option value="top">Jump To&#133;</option>
+	
+	<option value="overview">Overview</option>
+	
+	
+	
+	
+	<option value="tasks">Tasks</option>
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	<option value="instance_methods">Instance Methods</option>
+	
+	<option value="//api/name/extendedAttributesWithError:">&nbsp;&nbsp;&nbsp;&nbsp;- extendedAttributesWithError:</option>
+	
+	<option value="//api/name/hasExtendedAttributeWithName:">&nbsp;&nbsp;&nbsp;&nbsp;- hasExtendedAttributeWithName:</option>
+	
+	<option value="//api/name/removeExtendedAttributeWithName:error:">&nbsp;&nbsp;&nbsp;&nbsp;- removeExtendedAttributeWithName:error:</option>
+	
+	<option value="//api/name/setExtendedAttributeValue:forName:error:">&nbsp;&nbsp;&nbsp;&nbsp;- setExtendedAttributeValue:forName:error:</option>
+	
+	<option value="//api/name/setExtendedAttributes:error:">&nbsp;&nbsp;&nbsp;&nbsp;- setExtendedAttributes:error:</option>
+	
+	<option value="//api/name/valueOfExtendedAttributeWithName:error:">&nbsp;&nbsp;&nbsp;&nbsp;- valueOfExtendedAttributeWithName:error:</option>
+	
+	
+	
+</select>
+				</li>
+			</ul>
+		</header>
+		<nav id="tocContainer" class="isShowingTOC">
+			<ul id="toc" role="tree">
+				
+<li role="treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#overview">Overview</a></span></li>
+
+
+
+
+<li role="treeitem" id="task_treeitem"><span class="nodisclosure"></span><span class="sectionName"><a href="#tasks">Tasks</a></span><ul>
+	
+	<li><span class="nodisclosure"></span><span class="sectionName"><a href="#task_Accessing attributes in batches">Accessing attributes in batches</a></span></li>
+	
+	<li><span class="nodisclosure"></span><span class="sectionName"><a href="#task_Accessing attributes individually">Accessing attributes individually</a></span></li>
+	
+	<li><span class="nodisclosure"></span><span class="sectionName"><a href="#task_Removing an extended attribute">Removing an extended attribute</a></span></li>
+	
+</ul></li>
+
+
+
+
+
+
+
+
+
+<li role="treeitem" class="children"><span class="disclosure"></span><span class="sectionName"><a href="#instance_methods">Instance Methods</a></span><ul>
+	
+	<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/extendedAttributesWithError:">extendedAttributesWithError:</a></span></li>
+	
+	<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/hasExtendedAttributeWithName:">hasExtendedAttributeWithName:</a></span></li>
+	
+	<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/removeExtendedAttributeWithName:error:">removeExtendedAttributeWithName:error:</a></span></li>
+	
+	<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/setExtendedAttributeValue:forName:error:">setExtendedAttributeValue:forName:error:</a></span></li>
+	
+	<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/setExtendedAttributes:error:">setExtendedAttributes:error:</a></span></li>
+	
+	<li><span class="nodisclosure"></span><span class="sectionName"><a href="#//api/name/valueOfExtendedAttributeWithName:error:">valueOfExtendedAttributeWithName:error:</a></span></li>
+	
+</ul></li>
+
+
+			</ul>
+		</nav>
+		<article>
+			<div id="contents" class="isShowingTOC" role="main">
+				<a title="NSURL(SOExtendedAttributes) Category Reference" name="top"></a>
+				<div class="main-navigation navigation-top">
+					<ul>
+	<li><a href="../index.html">Index</a></li>
+	<li><a href="../hierarchy.html">Hierarchy</a></li>
+</ul>
+				</div>
+				<div id="header">
+					<div class="section-header">
+						<h1 class="title title-header">NSURL(SOExtendedAttributes) Category Reference</h1>
+					</div>		
+				</div>
+				<div id="container">	
+					
+					<div class="section section-specification"><table cellspacing="0"><tbody>
+						<tr>
+	<td class="specification-title">Declared in</td>
+	<td class="specification-value">NSURL+SOExtendedAttributes.h<br />NSURL+SOExtendedAttributes.m</td>
+</tr>
+						</tbody></table></div>
+					
+					
+					
+					
+					<div class="section section-overview">
+						<a title="Overview" name="overview"></a>
+						<h2 class="subtitle subtitle-overview">Overview</h2>
+						<p>The SOExtendedAttributes category on NSURL enables retrieving and manipulating the extended attributes on a file system item.</p>
+
+<p>These methods are valid only on file URLs. An NSInternalInconsistencyException is thrown if invoked an a non-file URL.</p>
+
+<p>Internally, they&rsquo;re implemented using <a href="x-man-page://listxattr">listxattr(2)</a>, <a href="x-man-page://getxattr">getxattr(2)</a>, <a href="x-man-page://setxattr">setxattr(2)</a>, and <a href="x-man-page://removexattr">removexattr(2)</a>.</p>
+
+<p><strong> Compatibility </strong></p>
+
+<p>SOExtendedAttributes is compatible with Mac OS X 10.6+ and iOS 5. The clang compiler is required. The source file <code>NSURL+SOExtendedAttributes.m</code> must be compiled with ARC enabled. For an alternate Cocoa implementation compatible with Mac OS X 10.4 and greater, see <a href="http://zathras.de/angelweb/sourcecode.htm">UKXattrMetadataStore</a>.</p>
+
+<p><strong> Symbolic links </strong></p>
+
+<p>These methods act on the explicitly given URL. If that URL is to a symbolic link, you&rsquo;ll be manipulating extended attributes on the symlink, not its original file. Use <code>-URLByResolvingSymlinksInPath</code> to obtain a URL for which points to the original file system item.</p>
+
+<p><strong> Use with iCloud Backup </strong></p>
+
+<p>iCloud (as of iOS 5.0.1) honors the extended attribute <code>@"com.apple.MobileMeBackup"</code> as a flag to exclude a file system item from iCloud backup. This category defines the constant <code>iCloudDoNotBackupAttributeName</code> to work with this iCloud behavior.</p>
+
+<p><strong> Constants </strong></p>
+
+<p><code>iCloudDoNotBackupAttributeName = @"com.apple.MobileMeBackup"</code></p>
+
+<p>E.g. To determine if a file system item is marked to be excluded from iCloud backup:</p>
+
+<pre><code>NSURL fileURL = ...;
+BOOL isExcludedFromiCloudBackup = [fileURL hasExtendedAttributeWithName:iCloudDoNotBackupAttribute];
+</code></pre>
+					</div>
+					
+					
+					
+					
+					
+					<div class="section section-tasks">
+						<a title="Tasks" name="tasks"></a>
+						<h2 class="subtitle subtitle-tasks">Tasks</h2>
+						
+						
+						<a title="Accessing attributes in batches" name="task_Accessing attributes in batches"></a>
+						<h3 class="subsubtitle task-title">Accessing attributes in batches</h3>
+
+						<ul class="task-list">
+							<li>
+	<span class="tooltip">
+		<code><a href="#//api/name/extendedAttributesWithError:">&ndash;&nbsp;extendedAttributesWithError:</a></code>
+		<span class="tooltip"><p>Returns the extended attributes of the file system item at this URL.</p></span>
+	</span>
+	
+	
+</li><li>
+	<span class="tooltip">
+		<code><a href="#//api/name/setExtendedAttributes:error:">&ndash;&nbsp;setExtendedAttributes:error:</a></code>
+		<span class="tooltip"><p>Sets the extended attribute values for the given URL.</p></span>
+	</span>
+	
+	
+</li>
+						</ul>
+						
+						
+						<a title="Accessing attributes individually" name="task_Accessing attributes individually"></a>
+						<h3 class="subsubtitle task-title">Accessing attributes individually</h3>
+
+						<ul class="task-list">
+							<li>
+	<span class="tooltip">
+		<code><a href="#//api/name/hasExtendedAttributeWithName:">&ndash;&nbsp;hasExtendedAttributeWithName:</a></code>
+		<span class="tooltip"><p>Returns YES if the file system item has the named attribute.</p></span>
+	</span>
+	
+	
+</li><li>
+	<span class="tooltip">
+		<code><a href="#//api/name/valueOfExtendedAttributeWithName:error:">&ndash;&nbsp;valueOfExtendedAttributeWithName:error:</a></code>
+		<span class="tooltip"><p>Returns the value of the named extended attribute from this file system item.</p></span>
+	</span>
+	
+	
+</li><li>
+	<span class="tooltip">
+		<code><a href="#//api/name/setExtendedAttributeValue:forName:error:">&ndash;&nbsp;setExtendedAttributeValue:forName:error:</a></code>
+		<span class="tooltip"><p>Set the value of the named extended attribute.</p></span>
+	</span>
+	
+	
+</li>
+						</ul>
+						
+						
+						<a title="Removing an extended attribute" name="task_Removing an extended attribute"></a>
+						<h3 class="subsubtitle task-title">Removing an extended attribute</h3>
+
+						<ul class="task-list">
+							<li>
+	<span class="tooltip">
+		<code><a href="#//api/name/removeExtendedAttributeWithName:error:">&ndash;&nbsp;removeExtendedAttributeWithName:error:</a></code>
+		<span class="tooltip"><p>Removes the named extended attribute from this file system item.</p></span>
+	</span>
+	
+	
+</li>
+						</ul>
+						
+					</div>
+					
+					
+					
+					
+					
+					
+					
+					
+					
+					<div class="section section-methods">
+						<a title="Instance Methods" name="instance_methods"></a>
+						<h2 class="subtitle subtitle-methods">Instance Methods</h2>
+						
+						<div class="section-method">
+	<a name="//api/name/extendedAttributesWithError:" title="extendedAttributesWithError:"></a>
+	<h3 class="subsubtitle method-title">extendedAttributesWithError:</h3>
+	
+	
+	
+	<div class="method-subsection brief-description">
+		<p>Returns the extended attributes of the file system item at this URL.</p>
+	</div>		
+	
+	
+	<div class="method-subsection method-declaration"><code>- (NSDictionary *)extendedAttributesWithError:(NSError *__autoreleasing *)<em>outError</em></code></div>
+	
+	
+	<div class="method-subsection arguments-section parameters">
+		<h4 class="method-subtitle parameter-title">Parameters</h4>
+		
+		<dl class="argument-def parameter-def">
+			<dt><em>outError</em></dt>
+			<dd><p>A pointer to an error object. On return, if an error has occurred, this pointer references an actual error object containing the error information. Pass NULL if you&rsquo;re not interesting in error reporting.</p></dd>
+		</dl>
+		
+	</div>
+	
+	
+	
+	<div class="method-subsection return">
+		<h4 class="method-subtitle parameter-title">Return Value</h4>
+		<p>An NSDictionary object that describes the extended attributes of the file system object, or nil if an error occurred.</p>
+	</div>
+	
+	
+	
+	
+	
+	<div class="method-subsection discussion-section">
+		<h4 class="method-subtitle">Discussion</h4>
+		<p>Return all extended attributes that the current user account has permission to access. Attributes will include the HFS compression extended attribute if present.</p>
+	</div>
+	
+	
+	
+	
+	
+	
+	
+	<div class="method-subsection declared-in-section">
+		<h4 class="method-subtitle">Declared In</h4>
+		<code class="declared-in-ref">NSURL+SOExtendedAttributes.h</code><br />
+	</div>				
+	
+	
+</div>
+						
+						<div class="section-method">
+	<a name="//api/name/hasExtendedAttributeWithName:" title="hasExtendedAttributeWithName:"></a>
+	<h3 class="subsubtitle method-title">hasExtendedAttributeWithName:</h3>
+	
+	
+	
+	<div class="method-subsection brief-description">
+		<p>Returns YES if the file system item has the named attribute.</p>
+	</div>		
+	
+	
+	<div class="method-subsection method-declaration"><code>- (BOOL)hasExtendedAttributeWithName:(NSString *)<em>name</em></code></div>
+	
+	
+	<div class="method-subsection arguments-section parameters">
+		<h4 class="method-subtitle parameter-title">Parameters</h4>
+		
+		<dl class="argument-def parameter-def">
+			<dt><em>name</em></dt>
+			<dd><p>The name of the extended attribute. Throws <code>NSInvalidArgumentException</code> if name is nil or empty.</p></dd>
+		</dl>
+		
+	</div>
+	
+	
+	
+	<div class="method-subsection return">
+		<h4 class="method-subtitle parameter-title">Return Value</h4>
+		<p>YES if the named extended attribute is present on the URL; NO otherwise.</p>
+	</div>
+	
+	
+	
+	
+	
+	<div class="method-subsection discussion-section">
+		<h4 class="method-subtitle">Discussion</h4>
+		<p>Sometimes, you&rsquo;re only interested in the presence or absence of an extended attribute on a given URL. E.g. @&ldquo;com.apple.MobileMeBackup&rdquo;.</p>
+	</div>
+	
+	
+	
+	
+	
+	
+	
+	<div class="method-subsection declared-in-section">
+		<h4 class="method-subtitle">Declared In</h4>
+		<code class="declared-in-ref">NSURL+SOExtendedAttributes.h</code><br />
+	</div>				
+	
+	
+</div>
+						
+						<div class="section-method">
+	<a name="//api/name/removeExtendedAttributeWithName:error:" title="removeExtendedAttributeWithName:error:"></a>
+	<h3 class="subsubtitle method-title">removeExtendedAttributeWithName:error:</h3>
+	
+	
+	
+	<div class="method-subsection brief-description">
+		<p>Removes the named extended attribute from this file system item.</p>
+	</div>		
+	
+	
+	<div class="method-subsection method-declaration"><code>- (BOOL)removeExtendedAttributeWithName:(NSString *)<em>name</em> error:(NSError *__autoreleasing *)<em>outError</em></code></div>
+	
+	
+	<div class="method-subsection arguments-section parameters">
+		<h4 class="method-subtitle parameter-title">Parameters</h4>
+		
+		<dl class="argument-def parameter-def">
+			<dt><em>name</em></dt>
+			<dd><p>The name of the extended attribute. Throws <code>NSInvalidArgumentException</code> if name is nil or empty.</p></dd>
+		</dl>
+		
+		<dl class="argument-def parameter-def">
+			<dt><em>outError</em></dt>
+			<dd><p>A pointer to an error object. On return, if an error has occurred, this pointer references an actual error object containing the error information. Pass NULL if you&rsquo;re not interesting in error reporting.</p></dd>
+		</dl>
+		
+	</div>
+	
+	
+	
+	<div class="method-subsection return">
+		<h4 class="method-subtitle parameter-title">Return Value</h4>
+		<p>YES if successfully removed or named attribute does not exist. NO if there was an error.</p>
+	</div>
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	<div class="method-subsection declared-in-section">
+		<h4 class="method-subtitle">Declared In</h4>
+		<code class="declared-in-ref">NSURL+SOExtendedAttributes.h</code><br />
+	</div>				
+	
+	
+</div>
+						
+						<div class="section-method">
+	<a name="//api/name/setExtendedAttributeValue:forName:error:" title="setExtendedAttributeValue:forName:error:"></a>
+	<h3 class="subsubtitle method-title">setExtendedAttributeValue:forName:error:</h3>
+	
+	
+	
+	<div class="method-subsection brief-description">
+		<p>Set the value of the named extended attribute.</p>
+	</div>		
+	
+	
+	<div class="method-subsection method-declaration"><code>- (BOOL)setExtendedAttributeValue:(id)<em>value</em> forName:(NSString *)<em>name</em> error:(NSError *__autoreleasing *)<em>outError</em></code></div>
+	
+	
+	<div class="method-subsection arguments-section parameters">
+		<h4 class="method-subtitle parameter-title">Parameters</h4>
+		
+		<dl class="argument-def parameter-def">
+			<dt><em>value</em></dt>
+			<dd><p>The value to be set. Must be an instance of NSData, NSString, NSArray, NSDictionary, NSDate or NSNumber.</p></dd>
+		</dl>
+		
+		<dl class="argument-def parameter-def">
+			<dt><em>name</em></dt>
+			<dd><p>The name of the extended attribute. Throws <code>NSInvalidArgumentException</code> if name is nil or empty.</p></dd>
+		</dl>
+		
+		<dl class="argument-def parameter-def">
+			<dt><em>outError</em></dt>
+			<dd><p>A pointer to an error object. On return, if an error has occurred, this pointer references an actual error object containing the error information. Pass NULL if you&rsquo;re not interesting in error reporting.</p></dd>
+		</dl>
+		
+	</div>
+	
+	
+	
+	<div class="method-subsection return">
+		<h4 class="method-subtitle parameter-title">Return Value</h4>
+		<p>YES if the given value was set; NO if there was an error.</p>
+	</div>
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	<div class="method-subsection declared-in-section">
+		<h4 class="method-subtitle">Declared In</h4>
+		<code class="declared-in-ref">NSURL+SOExtendedAttributes.h</code><br />
+	</div>				
+	
+	
+</div>
+						
+						<div class="section-method">
+	<a name="//api/name/setExtendedAttributes:error:" title="setExtendedAttributes:error:"></a>
+	<h3 class="subsubtitle method-title">setExtendedAttributes:error:</h3>
+	
+	
+	
+	<div class="method-subsection brief-description">
+		<p>Sets the extended attribute values for the given URL.</p>
+	</div>		
+	
+	
+	<div class="method-subsection method-declaration"><code>- (BOOL)setExtendedAttributes:(NSDictionary *)<em>attributes</em> error:(NSError *__autoreleasing *)<em>outError</em></code></div>
+	
+	
+	<div class="method-subsection arguments-section parameters">
+		<h4 class="method-subtitle parameter-title">Parameters</h4>
+		
+		<dl class="argument-def parameter-def">
+			<dt><em>attributes</em></dt>
+			<dd><p>The extended attribute names and values to be set. All values be instances of NSData, NSString, NSArray, NSDictionary, NSDate or NSNumber.</p></dd>
+		</dl>
+		
+		<dl class="argument-def parameter-def">
+			<dt><em>outError</em></dt>
+			<dd><p>A pointer to an error object. On return, if an error has occurred, this pointer references an actual error object containing the error information. Pass NULL if you&rsquo;re not interesting in error reporting.</p></dd>
+		</dl>
+		
+	</div>
+	
+	
+	
+	<div class="method-subsection return">
+		<h4 class="method-subtitle parameter-title">Return Value</h4>
+		<p>YES if all given attribute values were set. NO if there was an error setting one or more of the values.</p>
+	</div>
+	
+	
+	
+	
+	
+	<div class="method-subsection discussion-section">
+		<h4 class="method-subtitle">Discussion</h4>
+		<p>The attributes dictionary parameter may contain any object value that can be encoded as a property list.</p>
+
+<p>If the attributes dictionary holds a value object that cannot be encoded as a plist, an NSError with code <code>SOExtendedAttributesValueCantBeSerialized</code> is returned via the outError parameter.</p>
+
+<p>On error, a partial number of the given extended attributes may have been successfully set. The error returned through outError will indicate which attributes could not be set. In particular, <code>[[*outError userInfo] objectForKey:NSUnderlyingErrorKey]</code></p>
+	</div>
+	
+	
+	
+	
+	
+	
+	
+	<div class="method-subsection declared-in-section">
+		<h4 class="method-subtitle">Declared In</h4>
+		<code class="declared-in-ref">NSURL+SOExtendedAttributes.h</code><br />
+	</div>				
+	
+	
+</div>
+						
+						<div class="section-method">
+	<a name="//api/name/valueOfExtendedAttributeWithName:error:" title="valueOfExtendedAttributeWithName:error:"></a>
+	<h3 class="subsubtitle method-title">valueOfExtendedAttributeWithName:error:</h3>
+	
+	
+	
+	<div class="method-subsection brief-description">
+		<p>Returns the value of the named extended attribute from this file system item.</p>
+	</div>		
+	
+	
+	<div class="method-subsection method-declaration"><code>- (id)valueOfExtendedAttributeWithName:(NSString *)<em>name</em> error:(NSError *__autoreleasing *)<em>outError</em></code></div>
+	
+	
+	<div class="method-subsection arguments-section parameters">
+		<h4 class="method-subtitle parameter-title">Parameters</h4>
+		
+		<dl class="argument-def parameter-def">
+			<dt><em>name</em></dt>
+			<dd><p>The name of the extended attribute. Throws <code>NSInvalidArgumentException</code> if name is nil or empty.</p></dd>
+		</dl>
+		
+		<dl class="argument-def parameter-def">
+			<dt><em>outError</em></dt>
+			<dd><p>A pointer to an error object. On return, if an error has occurred, this pointer references an actual error object containing the error information. Pass NULL if you&rsquo;re not interesting in error reporting.</p></dd>
+		</dl>
+		
+	</div>
+	
+	
+	
+	<div class="method-subsection return">
+		<h4 class="method-subtitle parameter-title">Return Value</h4>
+		<p>An appropriate Foundation object holding the value, or nil if there was an error.</p>
+	</div>
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	<div class="method-subsection declared-in-section">
+		<h4 class="method-subtitle">Declared In</h4>
+		<code class="declared-in-ref">NSURL+SOExtendedAttributes.h</code><br />
+	</div>				
+	
+	
+</div>
+						
+					</div>
+					
+					
+				</div>
+				<div class="main-navigation navigation-bottom">
+					<ul>
+	<li><a href="../index.html">Index</a></li>
+	<li><a href="../hierarchy.html">Hierarchy</a></li>
+</ul>
+				</div>
+				<div id="footer">
+					<hr />
+					<div class="footer-copyright">
+						<p><span class="copyright">&copy; 2012 Standard Orbit. All rights reserved. (Last updated: 2012-01-23)</span><br />
+						
+						<span class="generator">Generated by <a href="http://appledoc.gentlebytes.com">appledoc 2.0.5 (build 752)</a>.</span></p>
+						
+					</div>
+				</div>
+			</div>
+		</article>
+		<script type="text/javascript">
+			function jumpToChange()
+			{
+				window.location.hash = this.options[this.selectedIndex].value;
+			}
+			
+			function toggleTOC()
+			{
+				var contents = document.getElementById('contents');
+				var tocContainer = document.getElementById('tocContainer');
+				
+				if (this.getAttribute('class') == 'open')
+				{
+					this.setAttribute('class', '');
+					contents.setAttribute('class', '');
+					tocContainer.setAttribute('class', '');
+					
+					window.name = "hideTOC";
+				}
+				else
+				{
+					this.setAttribute('class', 'open');
+					contents.setAttribute('class', 'isShowingTOC');
+					tocContainer.setAttribute('class', 'isShowingTOC');
+					
+					window.name = "";
+				}
+				return false;
+			}
+			
+			function toggleTOCEntryChildren(e)
+			{
+				e.stopPropagation();
+				var currentClass = this.getAttribute('class');
+				if (currentClass == 'children') {
+					this.setAttribute('class', 'children open');
+				}
+				else if (currentClass == 'children open') {
+					this.setAttribute('class', 'children');
+				}
+				return false;
+			}
+			
+			function tocEntryClick(e)
+			{
+				e.stopPropagation();
+				return true;
+			}
+			
+			function init()
+			{
+				var selectElement = document.getElementById('jumpTo');
+				selectElement.addEventListener('change', jumpToChange, false);
+				
+				var tocButton = document.getElementById('table_of_contents');
+				tocButton.addEventListener('click', toggleTOC, false);
+				
+				var taskTreeItem = document.getElementById('task_treeitem');
+				if (taskTreeItem.getElementsByTagName('li').length > 0)
+				{
+					taskTreeItem.setAttribute('class', 'children');
+					taskTreeItem.firstChild.setAttribute('class', 'disclosure');
+				}
+				
+				var tocList = document.getElementById('toc');
+				
+				var tocEntries = tocList.getElementsByTagName('li');
+				for (var i = 0; i < tocEntries.length; i++) {
+					tocEntries[i].addEventListener('click', toggleTOCEntryChildren, false);
+				}
+				
+				var tocLinks = tocList.getElementsByTagName('a');
+				for (var i = 0; i < tocLinks.length; i++) {
+					tocLinks[i].addEventListener('click', tocEntryClick, false);
+				}
+				
+				if (window.name == "hideTOC") {
+					toggleTOC.call(tocButton);
+				}
+			}
+			
+			window.onload = init;
+		</script>
+	</body>
+</html>

File Documentation/net.standardorbit.SOExtendedAttributes.docset/Contents/Resources/Documents/css/styles.css

+body {
+	font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+	font-size: 13px;
+}
+
+code {
+	font-family: Courier, Consolas, monospace;
+	font-size: 13px;
+	color: #666;
+}
+
+pre {
+	font-family: Courier, Consolas, monospace;
+	font-size: 13px;
+	line-height: 18px;
+	tab-interval: 0.5em;
+	border: 1px solid #C7CFD5;
+	background-color: #F1F5F9;
+	color: #666;
+	padding: 0.3em 1em;
+}
+
+ul {
+	list-style-type: square;
+}
+
+li {
+	margin-bottom: 10px;
+}
+
+a {
+	text-decoration: none;
+	color: #36C;
+}
+
+a:hover {
+	text-decoration: underline;
+	color: #36C;
+}
+
+h2 {
+	border-bottom: 1px solid #8391A8;
+	color: #3C4C6C;
+	font-size: 187%;
+	font-weight: normal;
+	margin-top: 1.75em;
+	padding-bottom: 2px;	
+}
+
+/* @group Common page elements */
+
+#top_header {
+	height: 91px;
+	left: 0;
+	min-width: 598px;
+	position: absolute;
+	right: 0;
+	top: 0;
+	z-index: 900;
+}
+
+#footer {
+	clear: both;
+	padding-top: 20px;
+	text-align: center;
+}
+
+#contents, #overview_contents {
+	border-top: 1px solid #2B334F;
+	position: absolute;
+	top: 91px;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	overflow-x: hidden;
+	overflow-y: auto;
+	padding-left: 2em;
+	padding-right: 2em;
+	padding-top: 1em;
+	min-width: 550px;
+}
+
+#contents.isShowingTOC {
+	left: 230px;
+	min-width: 320px;
+}
+
+.copyright {
+	font-size: 12px;
+}
+
+.generator {
+	font-size: 11px;
+}
+
+.main-navigation ul li {
+	display: inline;
+	margin-left: 15px;
+	list-style: none;
+}
+
+.navigation-top {
+	clear: both;
+	float: right;
+}
+
+.navigation-bottom {
+	clear: both;
+	float: right;
+	margin-top: 20px;
+	margin-bottom: -10px;
+}
+
+.open > .disclosure {
+	background-image: url("../img/disclosure_open.png");
+}
+
+.disclosure {
+	background: url("../img/disclosure.png") no-repeat scroll 0 0;
+}
+
+.disclosure, .nodisclosure {
+	display: inline-block;
+	height: 8px;
+	margin-right: 5px;
+	position: relative;
+	width: 9px;
+}
+
+/* @end */
+
+/* @group Header */
+
+#top_header #library {
+	background: url("../img/library_background.png") repeat-x 0 0 #485E78;
+	background-color: #ccc;
+	height: 35px;
+	font-size: 115%;
+}
+
+#top_header #library #libraryTitle {
+	color: #FFFFFF;
+	margin-left: 15px;
+	text-shadow: 0 -1px 0 #485E78;
+	top: 8px;
+	position: absolute;
+}
+
+#top_header #library #developerHome {
+	color: #92979E;
+	right: 15px;
+	top: 8px;
+	position: absolute;
+}
+
+#top_header #library a:hover {
+	text-decoration: none;
+}
+
+#top_header #title {
+	background: url("../img/title_background.png") repeat-x 0 0 #8A98A9;
+	border-bottom: 1px solid #B6B6B6;
+	height: 25px;
+	overflow: hidden;
+}
+
+#top_header h1 {
+	font-size: 115%;
+	font-weight: normal;
+	margin: 0;
+	padding: 3px 0 2px;
+	text-align: center;
+	text-shadow: 0 1px 0 #D5D5D5;
+	white-space: nowrap;
+}
+
+#headerButtons {
+	background-color: #D8D8D8;
+	background-image: url("../img/button_bar_background.png");
+	border-bottom: 1px solid #EDEDED;
+	border-top: 1px solid #2B334F;
+	font-size: 8pt;
+	height: 28px;
+	left: 0;
+	list-style: none outside none;
+	margin: 0;
+	overflow: hidden;
+	padding: 0;
+	position: absolute;
+	right: 0;
+	top: 61px;
+}
+
+#headerButtons li {
+	background-repeat: no-repeat;
+	display: inline;
+	margin-top: 0;
+	margin-bottom: 0;
+	padding: 0;
+}
+
+#toc_button button {
+	border-color: #ACACAC;
+	border-style: none solid none none;
+	border-width: 0 1px 0 0;
+	height: 28px;
+	margin: 0;
+	padding-left: 30px;
+	text-align: left;
+	width: 230px;
+}
+
+li#jumpto_button {
+	left: 230px;
+	margin-left: 0;
+	position: absolute;
+}
+
+li#jumpto_button select {
+	height: 22px;
+	margin: 5px 2px 0 10px;
+	max-width: 300px;
+}
+
+/* @end */
+
+/* @group Table of contents */
+
+#tocContainer.isShowingTOC {
+	border-right: 1px solid #ACACAC;
+	display: block;
+	overflow-x: hidden;
+	overflow-y: auto;
+	padding: 0;
+}
+
+#tocContainer {
+	background-color: #E4EBF7;
+	border-top: 1px solid #2B334F;
+	bottom: 0;
+	display: none;
+	left: 0;
+	overflow: hidden;
+	position: absolute;
+	top: 91px;
+	width: 229px;
+}
+
+#tocContainer > ul#toc {
+	font-size: 11px;
+	margin: 0;
+	padding: 12px 0 18px;
+	width: 209px;
+	-moz-user-select: none;
+	-webkit-user-select: none;
+	user-select: none;
+}
+
+#tocContainer > ul#toc > li {
+	margin: 0;
+	padding: 0 0 7px 30px;
+	text-indent: -15px;
+}
+
+#tocContainer > ul#toc > li > .sectionName a {
+	color: #000000;
+	font-weight: bold;
+}
+
+#tocContainer > ul#toc > li > .sectionName a:hover {
+	text-decoration: none;
+}
+
+#tocContainer > ul#toc li.children > ul {
+    display: none;
+    height: 0;
+}
+
+#tocContainer > ul#toc > li > ul {
+    margin: 0;
+    padding: 0;
+}
+
+#tocContainer > ul#toc > li > ul, ul#toc > li > ul > li {
+    margin-left: 0;
+    margin-bottom: 0;
+    padding-left: 15px;
+}
+
+#tocContainer > ul#toc > li ul {
+    list-style: none;
+    margin-right: 0;
+    padding-right: 0;
+}
+
+#tocContainer > ul#toc li.children.open > ul {
+    display: block;
+    height: auto;
+    margin-left: -15px;
+    padding-left: 0;
+}
+
+#tocContainer > ul#toc > li > ul, ul#toc > li > ul > li {
+    margin-left: 0;
+    padding-left: 15px;
+}
+
+#tocContainer li ul li {
+    margin-top: 0.583em;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+
+#tocContainer li ul li span.sectionName {
+    white-space: normal;
+}
+
+#tocContainer > ul#toc > li > ul > li > .sectionName a {
+    font-weight: bold;
+}
+
+#tocContainer > ul#toc > li > ul a {
+    color: #4F4F4F;
+}
+
+/* @end */
+
+/* @group Index formatting */
+
+.index-title {
+	font-size: 13px;
+	font-weight: normal;
+}
+
+.index-column {
+	float: left;
+	width: 30%;
+	min-width: 200px;
+	font-size: 11px;
+}
+
+.index-column ul {
+	margin: 8px 0 0 0;
+	padding: 0;
+	list-style: none;
+}
+
+.index-column ul li {
+	margin: 0 0 3px 0;
+	padding: 0;
+}
+
+.hierarchy-column {
+	min-width: 400px;
+}
+
+.hierarchy-column ul {
+	margin: 3px 0 0 15px;
+}
+
+.hierarchy-column ul li {
+	list-style-type: square;
+}
+
+/* @end */
+
+/* @group Common formatting elements */
+
+.title {
+	font-weight: normal;
+	font-size: 215%;
+	margin-top:0;
+}
+
+.subtitle {
+	font-weight: normal;
+	font-size: 180%;
+	color: #3C4C6C;
+	border-bottom: 1px solid #5088C5;
+}
+
+.subsubtitle {
+	font-weight: normal;
+	font-size: 145%;
+	height: 0.7em;
+}
+
+.warning {
+	border: 1px solid #5088C5;
+	background-color: #F0F3F7;
+	margin-bottom: 0.5em;
+	padding: 0.3em 0.8em;
+}
+
+.bug {
+	border: 1px solid #000;
+	background-color: #ffffcc;
+	margin-bottom: 0.5em;
+	padding: 0.3em 0.8em;
+}
+
+.deprecated {
+	color: #F60425;
+}
+
+/* @end */
+
+/* @group Common layout */
+
+.section {
+	margin-top: 3em;
+}
+
+/* @end */
+
+/* @group Object specification section */
+
+.section-specification {
+	margin-left: 2.5em;
+	margin-right: 2.5em;
+	font-size: 12px;
+}
+
+.section-specification table {
+	border-top: 1px solid #d6e0e5;
+}
+
+.section-specification td {
+	vertical-align: top;
+	border-bottom: 1px solid #d6e0e5;
+	padding: .6em;
+}
+
+.section-specification .specification-title {
+	font-weight: bold;
+}
+
+/* @end */
+
+/* @group Tasks section */
+
+.task-list {
+	list-style-type: none;
+	padding-left: 0px;
+}
+
+.task-list li {
+	margin-bottom: 3px;
+}
+
+.task-item-suffix {
+	color: #996;
+	font-size: 12px;
+	font-style: italic;
+	margin-left: 0.5em;
+}
+
+span.tooltip span.tooltip {
+	font-size: 1.0em;
+	display: none;
+	padding: 0.3em;
+	border: 1px solid #aaa;
+	background-color: #fdfec8;
+	color: #000;
+	text-align: left;
+}
+
+span.tooltip:hover span.tooltip {
+	display: block;
+	position: absolute;
+	margin-left: 2em;
+}
+
+/* @end */
+
+/* @group Method section */
+
+.section-method {
+	margin-top: 2.3em;
+}
+
+.method-title {
+	margin-bottom: 1.5em;
+}
+
+.method-subtitle {
+	margin-top: 0.7em;
+	margin-bottom: 0.2em;
+}
+
+.method-subsection p {
+	margin-top: 0.4em;
+	margin-bottom: 0.8em;
+}
+
+.method-declaration {
+	margin-top:1.182em;
+	margin-bottom:.909em;
+}
+
+.method-declaration code {
+	font:14px Courier, Consolas, monospace;
+	color:#000;
+}
+
+.declaration {
+	color: #000;
+}
+
+.argument-def {
+	margin-top: 0.3em;
+	margin-bottom: 0.3em;
+}
+
+.argument-def dd {
+	margin-left: 1.25em;
+}
+
+.see-also-section ul {
+	list-style-type: none;
+	padding-left: 0px;
+	margin-top: 0;
+}
+
+.see-also-section li {
+	margin-bottom: 3px;
+}
+
+.declared-in-ref {
+	color: #666;
+}
+
+/* @end */
+

File Documentation/net.standardorbit.SOExtendedAttributes.docset/Contents/Resources/Documents/css/stylesPrint.css

+
+header {
+	display: none;
+}
+
+div.main-navigation, div.navigation-top {
+	display: none;
+}
+
+div#overview_contents, div#contents.isShowingTOC, div#contents {
+	overflow: visible;
+	position: relative;
+	top: 0px;
+	border: none;
+	left: 0;
+}
+#tocContainer.isShowingTOC {
+	display: none;
+}
+nav {
+	display: none;
+}

File Documentation/net.standardorbit.SOExtendedAttributes.docset/Contents/Resources/Documents/hierarchy.html

+<!DOCTYPE HTML>
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<title>SOExtendedAttributes Hierarchy</title>
+			<link rel="stylesheet" type="text/css" href="css/styles.css" media="all" />
+			<link rel="stylesheet" type="text/css" media="print" href="css/stylesPrint.css" />
+		<meta name="generator" content="appledoc 2.0.5 (build 752)" />
+	</head>
+	<body>
+		<header id="top_header">
+			<div id="library" class="hideInXcode">
+				<h1><a id="libraryTitle" href="index.html">SOExtendedAttributes </a></h1>
+				<a id="developerHome" href="index.html">Standard Orbit</a>
+			</div>
+			
+			<div id="title" role="banner">
+				<h1 class="hideInXcode">SOExtendedAttributes Hierarchy</h1>
+			</div>
+			<ul id="headerButtons" role="toolbar"></ul>
+		</header>
+		<article>
+			<div id="overview_contents" role="main">
+				<div class="main-navigation navigation-top">
+					<a href="index.html">Previous</a>
+				</div>
+				<div id="header">
+					<div class="section-header">
+						<h1 class="title title-header">SOExtendedAttributes Hierarchy</h1>
+					</div>		
+				</div>
+				<div id="container">
+					
+					
+						
+					<div class="index-column">
+						
+						
+						<h2 class="index-title">Category References</h2>
+						<ul>
+							
+							<li><a href="Categories/NSURL+SOExtendedAttributes.html">NSURL(SOExtendedAttributes)</a></li>
+							
+						</ul>
+						
+					</div>
+					
+				</div>
+				<div class="main-navigation navigation-bottom">
+					<a href="index.html">Previous</a>
+				</div>
+				<div id="footer">
+					<hr />
+					<div class="footer-copyright">
+						<p><span class="copyright">&copy; 2012 Standard Orbit. All rights reserved. (Last updated: 2012-01-23)</span><br />
+						
+						<span class="generator">Generated by <a href="http://appledoc.gentlebytes.com">appledoc 2.0.5 (build 752)</a>.</span></p>
+						
+	
+					</div>
+				</div>
+			</div>
+		</article>		
+	</body>
+</html>

File Documentation/net.standardorbit.SOExtendedAttributes.docset/Contents/Resources/Documents/img/button_bar_background.png

Added
New image

File Documentation/net.standardorbit.SOExtendedAttributes.docset/Contents/Resources/Documents/img/disclosure.png

Added
New image

File Documentation/net.standardorbit.SOExtendedAttributes.docset/Contents/Resources/Documents/img/disclosure_open.png

Added
New image

File Documentation/net.standardorbit.SOExtendedAttributes.docset/Contents/Resources/Documents/img/library_background.png

Added
New image

File Documentation/net.standardorbit.SOExtendedAttributes.docset/Contents/Resources/Documents/img/title_background.png

Added
New image

File Documentation/net.standardorbit.SOExtendedAttributes.docset/Contents/Resources/Documents/index.html

+<!DOCTYPE HTML>
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<title>SOExtendedAttributes Reference</title>
+		<link rel="stylesheet" type="text/css" href="css/styles.css" media="all" />
+		<link rel="stylesheet" type="text/css" media="print" href="css/stylesPrint.css" />
+		<meta name="generator" content="appledoc 2.0.5 (build 752)" />
+	</head>
+	<body>
+		<header id="top_header">
+			<div id="library" class="hideInXcode">
+				<h1><a id="libraryTitle" href="index.html">SOExtendedAttributes </a></h1>
+				<a id="developerHome" href="index.html">Standard Orbit</a>
+			</div>
+			
+			<div id="title" role="banner">
+				<h1 class="hideInXcode">SOExtendedAttributes Reference</h1>
+			</div>
+			<ul id="headerButtons" role="toolbar"></ul>
+		</header>
+		<article>
+			<div id="overview_contents" role="main">
+				<div class="main-navigation navigation-top">
+					<a href="hierarchy.html">Next</a>
+				</div>
+				<div id="header">
+					<div class="section-header">
+						<h1 class="title title-header">SOExtendedAttributes Reference</h1>
+					</div>		
+				</div>
+				<div id="container">
+					
+					
+					
+					
+						
+					<div class="index-column">
+						
+						
+						<h2 class="index-title">Category References</h2>
+						<ul>
+							
+							<li><a href="Categories/NSURL+SOExtendedAttributes.html">NSURL(SOExtendedAttributes)</a></li>
+							
+						</ul>
+						
+					</div>
+					
+				</div>