# HG changeset patch # User mas01mj # Date 1276871518 0 # Node ID df850498486e9e729e2af1fc5f61168efb179efa # Parent ec23b53ffa1429beec978a8cc3602ca865f0c824 Fixed overwrite handling (shows error if unable to remove existing files). diff -r ec23b53ffa14 -r df850498486e examples/iAudioDB/AppController.m --- a/examples/iAudioDB/AppController.m Fri Jun 18 14:06:03 2010 +0000 +++ b/examples/iAudioDB/AppController.m Fri Jun 18 14:31:58 2010 +0000 @@ -104,14 +104,50 @@ [self reset]; - // Create new db, and set flags. - db = audiodb_create([[panel filename] cStringUsingEncoding:NSUTF8StringEncoding], datasize, numtracks, dim); - audiodb_l2norm(db); - + + // Store useful paths. dbName = [[[panel URL] relativePath] retain]; dbFilename = [[panel filename] retain]; plistFilename = [[NSString stringWithFormat:@"%@.plist", [dbFilename stringByDeletingPathExtension]] retain]; + + // Remove any existing files + NSFileManager *fileManager = [[NSFileManager alloc] init]; + + BOOL overwriteError = NO; + + if([fileManager fileExistsAtPath:[panel filename]]) + { + if(![fileManager removeItemAtPath:[panel filename] error:NULL]) + { + overwriteError = YES; + } + } + + if(!overwriteError && [fileManager fileExistsAtPath:plistFilename]) + { + if(![fileManager removeItemAtPath:plistFilename error:NULL]) + { + overwriteError = YES; + } + } + [fileManager release]; + + if(overwriteError) + { + NSAlert *alert = [[NSAlert alloc] init]; + [alert addButtonWithTitle:@"OK"]; + [alert setMessageText:@"Unable to create database."]; + [alert setInformativeText:@"A database with this name already exists, and could not be overwritten."]; + [alert setAlertStyle:NSWarningAlertStyle]; + [alert runModal]; + [alert release]; + return; + } + + // Create new db, and set flags. + db = audiodb_create([[panel filename] cStringUsingEncoding:NSUTF8StringEncoding], datasize, numtracks, dim); + audiodb_l2norm(db); // Create the plist file (contains mapping from filename to key). dbState = [[NSMutableDictionary alloc] init];