Revision: 28627
          http://sourceforge.net/p/bibdesk/svn/28627
Author:   hofman
Date:     2024-01-17 15:40:06 +0000 (Wed, 17 Jan 2024)
Log Message:
-----------
Save linked files using bookmark data by default. Hidden pref to save legacy 
alias data. Simplify some code calls.

Modified Paths:
--------------
    trunk/bibdesk/BDSKLinkedFile.m

Modified: trunk/bibdesk/BDSKLinkedFile.m
===================================================================
--- trunk/bibdesk/BDSKLinkedFile.m      2024-01-17 10:41:02 UTC (rev 28626)
+++ trunk/bibdesk/BDSKLinkedFile.m      2024-01-17 15:40:06 UTC (rev 28627)
@@ -45,7 +45,7 @@
 
 #define BDSKSaveLinkedFilesAsRelativePathOnlyKey 
@"BDSKSaveLinkedFilesAsRelativePathOnly"
 #define BDSKSaveLinkedFilesAsArchivedDataKey 
@"BDSKSaveLinkedFilesAsArchivedData"
-#define BDSKSaveLinkedFilesAsBookmarkDataKey 
@"BDSKSaveLinkedFilesAsBookmarkData"
+#define BDSKSaveLinkedFilesAsAliasKey @"BDSKSaveLinkedFilesAsAlias"
 
 // this is the base64 encoding of "bplist", which is always the start of a 
binary property list
 #define ENCODED_PLIST_PREFIX @"YnBsaXN0"
@@ -54,10 +54,9 @@
 #define BOOKMARK_KEY @"bookmark"
 #define RELATIVEPATH_KEY @"relativePath"
 
-static NSURL *BDSKCreateURLFromFSRef(const FSRef *inRef);
-static BOOL BDSKPathToFSRef(NSString *inPath, FSRef *outRef);
-static NSDictionary *BDSKDictionaryFromPlistData(NSData *data);
-static NSDictionary *BDSKDictionaryFromArchivedData(NSData *data);
+static inline NSURL *BDSKCreateURLFromFSRef(const FSRef *inRef);
+static inline BOOL BDSKPathToFSRef(NSString *inPath, FSRef *outRef);
+static inline NSDictionary *BDSKDictionaryFromData(NSData *data);
 
 #pragma mark -
 
@@ -68,7 +67,7 @@
 + (id)newWithFSRef:(const FSRef *)aRef baseRef:(const FSRef *)baseRef;
 + (id)newWithPath:(NSString *)path basePath:(NSString *)basePath;
 - (BOOL)getFSRef:(FSRef *)outRef baseRef:(const FSRef *)baseRef 
shouldUpdate:(BOOL *)shouldUpdate;
-- (void)updateWithFSRef:(const FSRef *)outRef baseRef:(const FSRef *)baseRef;
+- (void)updateWithFSRef:(const FSRef *)aRef baseRef:(const FSRef *)baseRef;
 - (NSData *)copyData;
 @end
 
@@ -130,9 +129,9 @@
 static Class BDSKLinkedFileClass = Nil;
 static BOOL saveRelativePathOnly = NO;
 static BOOL saveArchivedData = NO;
-static BOOL wantsBookmark = NO;
+static BOOL wantsAlias = NO;
 
-#define BDSKLinkedAliasFile_alloc (wantsBookmark ? [BDSKBookmarkLinkedFile 
alloc] : [BDSKAliasLinkedFile alloc])
+#define BDSKLinkedAliasFile_alloc (wantsAlias ? [BDSKAliasLinkedFile alloc] : 
[BDSKBookmarkLinkedFile alloc])
 
 + (void)initialize {
     BDSKINITIALIZE;
@@ -139,9 +138,9 @@
     BDSKLinkedFileClass = self;
     saveRelativePathOnly = [[NSUserDefaults standardUserDefaults] 
boolForKey:BDSKSaveLinkedFilesAsRelativePathOnlyKey];
     saveArchivedData = [[NSUserDefaults standardUserDefaults] 
boolForKey:BDSKSaveLinkedFilesAsArchivedDataKey];
-    wantsBookmark = saveArchivedData == NO && [[NSUserDefaults 
standardUserDefaults] boolForKey:BDSKSaveLinkedFilesAsBookmarkDataKey];
+    wantsAlias = saveArchivedData || [[NSUserDefaults standardUserDefaults] 
boolForKey:BDSKSaveLinkedFilesAsAliasKey];
     
-    NSString *fileClassName = wantsBookmark ? @"BDSKBookmarkLinkedFile" : 
@"BDSKAliasLinkedFile";
+    NSString *fileClassName = wantsAlias ? @"BDSKAliasLinkedFile" : 
@"BDSKBookmarkLinkedFile";
     [NSKeyedUnarchiver setClass:NSClassFromString(fileClassName) 
forClassName:@"BDSKLinkedAliasFile"];
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wdeprecated-declarations"
@@ -356,14 +355,8 @@
             NSLog(@"Ignoring exception \"%@\" while getting data from base 64 
string.", exception);
         }
         if (data) {
-            NSDictionary *dictionary = nil;
-            if (saveArchivedData)
-                dictionary = BDSKDictionaryFromArchivedData(data) ?: 
BDSKDictionaryFromPlistData(data);
-            else
-                dictionary = BDSKDictionaryFromPlistData(data) ?: 
BDSKDictionaryFromArchivedData(data);
-            anAlias = [BDSKAlias newWithData:[dictionary 
objectForKey:ALIASDATA_KEY]];
-            if (anAlias == nil)
-                anAlias = [[dictionary objectForKey:BOOKMARK_KEY] copy];
+            NSDictionary *dictionary = BDSKDictionaryFromData(data);
+            anAlias = [dictionary objectForKey:BOOKMARK_KEY] ?: [BDSKAlias 
newWithData:[dictionary objectForKey:ALIASDATA_KEY]];
             relPath = [dictionary objectForKey:RELATIVEPATH_KEY];
         }
     } else {
@@ -387,9 +380,7 @@
     id anAlias = nil;
     NSString *relPath = nil;
     if ([coder allowsKeyedCoding]) {
-        anAlias = [BDSKAlias newWithData:[coder 
decodeObjectForKey:ALIASDATA_KEY]];
-        if (anAlias == nil)
-            anAlias = [coder decodeObjectForKey:BOOKMARK_KEY];
+        anAlias = [coder decodeObjectForKey:BOOKMARK_KEY] ?: [BDSKAlias 
newWithData:[coder decodeObjectForKey:ALIASDATA_KEY]];
         relPath = [coder decodeObjectForKey:RELATIVEPATH_KEY];
     } else {
         anAlias = [BDSKAlias newWithData:[coder decodeObject]];
@@ -1040,7 +1031,7 @@
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wdeprecated-declarations"
 
-static NSURL *BDSKCreateURLFromFSRef(const FSRef *inRef) {
+static inline NSURL *BDSKCreateURLFromFSRef(const FSRef *inRef) {
     return inRef == NULL ? NULL : CFBridgingRelease(CFURLCreateFromFSRef(NULL, 
inRef));
 }
 
@@ -1054,11 +1045,11 @@
     return sameVolume ? inBaseRef : NULL;
 }
 
-static BOOL BDSKPathToFSRef(NSString *inPath, FSRef *outRef) {
+static inline BOOL BDSKPathToFSRef(NSString *inPath, FSRef *outRef) {
     OSStatus err = fnfErr;
     
     if (inPath != nil)
-        err = FSPathMakeRefWithOptions((UInt8 *)[(NSString *)inPath 
fileSystemRepresentation], kFSPathMakeRefDoNotFollowLeafSymlink, outRef, NULL);
+        err = FSPathMakeRefWithOptions((UInt8 *)[inPath 
fileSystemRepresentation], kFSPathMakeRefDoNotFollowLeafSymlink, outRef, NULL);
     
     return noErr == err;
 }
@@ -1087,6 +1078,13 @@
     return dictionary;
 }
 
+static inline NSDictionary *BDSKDictionaryFromData(NSData *data) {
+    if (saveArchivedData)
+        return BDSKDictionaryFromArchivedData(data) ?: 
BDSKDictionaryFromPlistData(data);
+    else
+        return BDSKDictionaryFromPlistData(data) ?: 
BDSKDictionaryFromArchivedData(data);
+}
+
 #pragma mark -
 
 @implementation BDSKAlias

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

Reply via email to