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
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit