From b0fd1fed0d5d6c93595381cb3bf0e3380cb37bd6 Mon Sep 17 00:00:00 2001 From: Benjamin Fleischer Date: Fri, 11 Apr 2025 20:50:59 +0200 Subject: [PATCH] Update LoopbackFS-ObjC for macFUSE 5 --- .../LoopbackFS.xcodeproj/project.pbxproj | 4 ++-- LoopbackFS-ObjC/LoopbackFS/AppDelegate.m | 2 +- LoopbackFS-ObjC/LoopbackFS/LoopbackFS.m | 24 +++++++++++++++++-- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/LoopbackFS-ObjC/LoopbackFS.xcodeproj/project.pbxproj b/LoopbackFS-ObjC/LoopbackFS.xcodeproj/project.pbxproj index e24021f..9a494f5 100644 --- a/LoopbackFS-ObjC/LoopbackFS.xcodeproj/project.pbxproj +++ b/LoopbackFS-ObjC/LoopbackFS.xcodeproj/project.pbxproj @@ -205,7 +205,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; PRODUCT_BUNDLE_IDENTIFIER = "io.macfuse.demo.loopbackfs-objc"; PRODUCT_NAME = LoopbackFS; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -232,7 +231,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; PRODUCT_BUNDLE_IDENTIFIER = "io.macfuse.demo.loopbackfs-objc"; PRODUCT_NAME = LoopbackFS; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -289,6 +287,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; OTHER_CODE_SIGN_FLAGS = "--timestamp"; @@ -340,6 +339,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; OTHER_CODE_SIGN_FLAGS = "--timestamp"; SDKROOT = macosx; diff --git a/LoopbackFS-ObjC/LoopbackFS/AppDelegate.m b/LoopbackFS-ObjC/LoopbackFS/AppDelegate.m index 191c665..8a412b8 100644 --- a/LoopbackFS-ObjC/LoopbackFS/AppDelegate.m +++ b/LoopbackFS-ObjC/LoopbackFS/AppDelegate.m @@ -43,7 +43,7 @@ static NSString *LoopbackMountPath = @"/Volumes/loop"; [alert setMessageText:@"Mount Failed"]; [alert setInformativeText:[error localizedDescription] ?: @"Unknown error"]; [alert runModal]; - + [[NSApplication sharedApplication] terminate:nil]; }); } diff --git a/LoopbackFS-ObjC/LoopbackFS/LoopbackFS.m b/LoopbackFS-ObjC/LoopbackFS/LoopbackFS.m index ec7ba48..ff5d991 100644 --- a/LoopbackFS-ObjC/LoopbackFS/LoopbackFS.m +++ b/LoopbackFS-ObjC/LoopbackFS/LoopbackFS.m @@ -294,9 +294,29 @@ #pragma mark Directory Contents -- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error { +- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path + includingAttributesForKeys:(NSArray *)keys + error:(NSError * _Nullable *)error { NSString *p = [rootPath_ stringByAppendingString:path]; - return [[NSFileManager defaultManager] contentsOfDirectoryAtPath:p error:error]; + NSArray *contents = + [[NSFileManager defaultManager] contentsOfDirectoryAtPath:p error:error]; + if (!contents) { + return nil; + } + + NSMutableArray *entries = [NSMutableArray array]; + for (NSString *n in contents) { + NSDictionary *d = + [[NSFileManager defaultManager] attributesOfItemAtPath:[p stringByAppendingPathComponent:n] + error:nil]; + if (!d) { + continue; + } + + GMDirectoryEntry *entry = [GMDirectoryEntry directoryEntryWithName:n attributes:d]; + [entries addObject:entry]; + } + return entries; } #pragma mark Getting and Setting Attributes