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

Reply via email to