--- /dev/null
+//
+// NSFileManager+UniqueNames.m
+// Enjoyable
+//
+// Created by Joe Wreschnig on 3/7/13.
+//
+//
+
+#import "NSFileManager+UniqueNames.h"
+
+@implementation NSFileManager (UniqueNames)
+
+- (NSURL *)generateUniqueURLWithBase:(NSURL *)canonical {
+ // Punt for cases that are just too hard.
+ if (!canonical.isFileURL)
+ return canonical;
+
+ NSString *trying = canonical.path;
+ NSString *dirname = [trying stringByDeletingLastPathComponent];
+ NSString *basename = [trying.lastPathComponent stringByDeletingPathExtension];
+ NSString *extension = trying.pathExtension;
+ int index = 1;
+ while ([self fileExistsAtPath:trying] && index < 10000) {
+ NSString *indexName = [NSString stringWithFormat:@"%@ (%d)", basename, index++];
+ indexName = [indexName stringByAppendingPathExtension:extension];
+ trying = [dirname stringByAppendingPathComponent:indexName];
+ }
+ return [NSURL fileURLWithPath:trying];
+}
+
+@end