Disk: add volume name detection

This commit is contained in:
李通洲
2022-10-18 18:39:28 +08:00
parent 7bbd2aee94
commit e3ea39afaa
6 changed files with 28 additions and 19 deletions
+14 -14
View File
@@ -4,16 +4,6 @@
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
static bool getBool(NSURL* url, NSURLResourceKey key)
{
NSError *error;
NSNumber* result;
if([url getResourceValue:&result forKey:key error:&error] == NO)
return false;
return result.boolValue;
}
void ffDetectDisksImpl(FFDiskResult* disks)
{
NSArray *keys = [NSArray arrayWithObjects:NSURLVolumeNameKey, nil];
@@ -32,8 +22,9 @@ void ffDetectDisksImpl(FFDiskResult* disks)
ffStrbufInitS(&disk->mountpoint, [url.relativePath cStringUsingEncoding:NSUTF8StringEncoding]);
NSString* filesystem;
[[NSWorkspace sharedWorkspace] getFileSystemInfoForPath:url.relativePath
isRemovable:nil
BOOL removable;
[NSWorkspace.sharedWorkspace getFileSystemInfoForPath:url.relativePath
isRemovable:&removable
isWritable:nil
isUnmountable:nil
description:nil
@@ -41,13 +32,22 @@ void ffDetectDisksImpl(FFDiskResult* disks)
];
ffStrbufInitS(&disk->filesystem, [filesystem cStringUsingEncoding:NSUTF8StringEncoding]);
if(getBool(url, NSURLVolumeIsRemovableKey))
NSError* error;
NSNumber* isBrowsable;
if(removable)
disk->type = FF_DISK_TYPE_EXTERNAL;
else if(getBool(url, NSURLVolumeIsBrowsableKey))
else if([url getResourceValue:&isBrowsable forKey:NSURLVolumeIsBrowsableKey error:&error] == YES && isBrowsable.boolValue)
disk->type = FF_DISK_TYPE_REGULAR;
else
disk->type = FF_DISK_TYPE_HIDDEN;
NSString* volumeName;
if([url getResourceValue:&volumeName forKey:NSURLVolumeNameKey error:&error] == YES)
ffStrbufInitS(&disk->name, [volumeName cStringUsingEncoding:NSUTF8StringEncoding]);
else
ffStrbufInit(&disk->name);
struct statvfs fs;
if(statvfs(disk->mountpoint.chars, &fs) != 0)
memset(&fs, 0, sizeof(struct statvfs)); //Set all values to 0, so our values get initialized to 0 too