Revision: 28382 http://sourceforge.net/p/bibdesk/svn/28382 Author: hofman Date: 2023-10-02 14:33:56 +0000 (Mon, 02 Oct 2023) Log Message: ----------- Only force filing papers for the error that was reported
Modified Paths: -------------- trunk/bibdesk/BDSKFiler.h trunk/bibdesk/BDSKFiler.m Modified: trunk/bibdesk/BDSKFiler.h =================================================================== --- trunk/bibdesk/BDSKFiler.h 2023-10-02 09:12:12 UTC (rev 28381) +++ trunk/bibdesk/BDSKFiler.h 2023-10-02 14:33:56 UTC (rev 28382) @@ -133,10 +133,10 @@ @abstract Extension to movePath:toPath:handler: which can handle symlinks and aliases, and allows for forcing a move when otherwise move errors occur. @param fileURL The URL to the file to move. @param newFileURL The URL where the file should move to. - @param force Boolean. If YES, overwrite an existing file or copy a non-removable file. + @param ignoredFlag Ignore potential errors that may occur forcing the m ove. @param error An NSError object set when an error occurs. @discussion - */ -- (BOOL)moveItemAtURL:(NSURL *)fileURL toURL:(NSURL *)newFileURL force:(BOOL)force error:(NSError **)error; +- (BOOL)moveItemAtURL:(NSURL *)fileURL toURL:(NSURL *)newFileURL ignoring:(NSInteger)ignoredFlag error:(NSError **)error; @end Modified: trunk/bibdesk/BDSKFiler.m =================================================================== --- trunk/bibdesk/BDSKFiler.m 2023-10-02 09:12:12 UTC (rev 28381) +++ trunk/bibdesk/BDSKFiler.m 2023-10-02 14:33:56 UTC (rev 28382) @@ -196,6 +196,7 @@ id paperInfo = [paperInfos objectAtIndex:i]; BDSKLinkedFile *file = [paperInfo valueForKey:BDSKFilerFileKey]; BibItem *pub = [paperInfo valueForKey:BDSKFilerPublicationKey]; + NSInteger flag = [paperInfo valueForKey:BDSKFilerFlagKey]; NSString *oldPath = nil; NSString *newPath = nil; @@ -237,7 +238,7 @@ [info setValue:newPath forKey:BDSKFilerNewPathKey]; [errorInfoDicts addObject:info]; - } else if ([[newPath lastPathComponent] length] > 255 && force == NO) { + } else if ([[newPath lastPathComponent] length] > 255 && (force == NO || (flag & BDSKFileNameTooLongErrorMask) == 0)) { [info setValue:NSLocalizedString(@"The file name is too long.",@"") forKey:BDSKFilerStatusKey]; [info setValue:[NSNumber numberWithInteger:BDSKFileNameTooLongErrorMask] forKey:BDSKFilerFlagKey]; @@ -261,7 +262,7 @@ NSError *error = nil; - if (cancelled && force == NO) { + if (cancelled && (force == NO || ((flag & BDSKCancelledErrorMask) == 0))) { [info setValue:NSLocalizedString(@"The move was cancelled.",@"") forKey:BDSKFilerStatusKey]; [info setValue:[NSNumber numberWithInteger:BDSKCancelledErrorMask] forKey:BDSKFilerFlagKey]; @@ -269,7 +270,7 @@ [info setValue:newPath forKey:BDSKFilerNewPathKey]; [errorInfoDicts addObject:info]; - } else if (NO == [[NSFileManager defaultManager] moveItemAtURL:[NSURL fileURLWithPath:oldPath isDirectory:NO] toURL:[NSURL fileURLWithPath:newPath isDirectory:NO] force:force error:&error]){ + } else if (NO == [[NSFileManager defaultManager] moveItemAtURL:[NSURL fileURLWithPath:oldPath isDirectory:NO] toURL:[NSURL fileURLWithPath:newPath isDirectory:NO] ignoring:force ? flag : 0 error:&error]){ NSDictionary *errorInfo = [error userInfo]; [info setValue:[errorInfo objectForKey:NSLocalizedRecoverySuggestionErrorKey] forKey:BDSKFilerFixKey]; @@ -357,7 +358,7 @@ @implementation NSFileManager (BDSKFilerExtensions) -- (BOOL)moveItemAtURL:(NSURL *)fileURL toURL:(NSURL *)newFileURL force:(BOOL)force error:(NSError **)error{ +- (BOOL)moveItemAtURL:(NSURL *)fileURL toURL:(NSURL *)newFileURL ignoring:(NSInteger)ignoredFlag error:(NSError **)error{ NSURL *resolvedURL = nil; NSURL *resolvedNewURL = nil; NSString *status = nil; @@ -377,9 +378,9 @@ statusFlag = BDSKCannotResolveAliasErrorMask; }else if([resolvedNewURL checkResourceIsReachableAndReturnError:NULL]){ if([resolvedURL checkResourceIsReachableAndReturnError:NULL]){ - if(force){ + if(ignoredFlag == BDSKTargetFileExistsErrorMask){ NSURL *backupURL = [self desktopFileURLWithBasename:[resolvedNewURL lastPathComponent]]; - if(NO == [self moveItemAtURL:resolvedNewURL toURL:backupURL force:NO error:NULL] && + if(NO == [self moveItemAtURL:resolvedNewURL toURL:backupURL ignoring:0 error:NULL] && [resolvedNewURL checkResourceIsReachableAndReturnError:NULL] && ![self removeItemAtURL:resolvedNewURL error:NULL]){ status = NSLocalizedString(@"Unable to remove existing file at target location.", @"AutoFile error message"); @@ -398,7 +399,7 @@ } statusFlag = BDSKTargetFileExistsErrorMask; } - }else if(force){ + }else if(ignoredFlag == (BDSKSourceFileDoesNotExistErrorMask | BDSKTargetFileExistsErrorMask)){ ignoreMove = YES; }else{ status = NSLocalizedString(@"Original file does not exist, file exists at target location.", @"AutoFile error message"); @@ -408,7 +409,7 @@ }else if(NO == [resolvedURL checkResourceIsReachableAndReturnError:NULL]){ status = NSLocalizedString(@"Original file does not exist.", @"AutoFile error message"); statusFlag = BDSKSourceFileDoesNotExistErrorMask; - }else if(force == NO && NO == [self isDeletableFileAtPath:[resolvedURL path]]){ + }else if(ignoredFlag != BDSKCannotMoveFileErrorMask && NO == [self isDeletableFileAtPath:[resolvedURL path]]){ status = NSLocalizedString(@"Unable to move read-only file.", @"AutoFile error message"); fix = NSLocalizedString(@"Copy original file.", @"AutoFile fix"); statusFlag = BDSKCannotMoveFileErrorMask; @@ -420,7 +421,7 @@ statusFlag = BDSKCannotCreateParentErrorMask; }else{ NSString *fileType = [[self attributesOfItemAtPath:[resolvedURL path] error:NULL] fileType]; - if([fileType isEqualToString:NSFileTypeDirectory] && [[NSWorkspace sharedWorkspace] isFilePackageAtPath:[resolvedURL path]] == NO && force == NO && + if([fileType isEqualToString:NSFileTypeDirectory] && [[NSWorkspace sharedWorkspace] isFilePackageAtPath:[resolvedURL path]] == NO && ignoredFlag != BDSKCannotMoveFileErrorMask && [[NSUserDefaults standardUserDefaults] boolForKey:BDSKWarnOnMoveFolderKey]){ NSAlert *alert = [[[NSAlert alloc] init] autorelease]; [alert setMessageText:NSLocalizedString(@"Really Move Folder?", @"Message in alert dialog when trying to auto file a folder")]; @@ -448,7 +449,7 @@ statusFlag = BDSKCannotMoveFileErrorMask; }else{ if(![self removeItemAtURL:resolvedURL error:NULL]){ - if (force == NO){ + if (ignoredFlag != BDSKCannotRemoveFileErrorMask){ status = NSLocalizedString(@"Unable to remove original.", @"AutoFile error message"); fix = NSLocalizedString(@"Copy original file.", @"AutoFile fix"); statusFlag = BDSKCannotRemoveFileErrorMask; @@ -466,7 +467,7 @@ } } }else if([resolvedNewURL checkResourceIsReachableAndReturnError:NULL]){ // error remove original file - if(force == NO){ + if(ignoredFlag != BDSKCannotRemoveFileErrorMask){ status = NSLocalizedString(@"Unable to remove original file.", @"AutoFile error message"); fix = NSLocalizedString(@"Copy original file.", @"AutoFile fix"); statusFlag = BDSKCannotRemoveFileErrorMask; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ Bibdesk-commit mailing list Bibdesk-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bibdesk-commit