2022-09-23 19:45:23 +08:00
|
|
|
#include "disk.h"
|
|
|
|
|
|
2022-10-12 14:03:03 +08:00
|
|
|
#include <sys/statvfs.h>
|
2022-09-23 19:45:23 +08:00
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
|
|
2022-10-06 22:56:56 +08:00
|
|
|
void ffDetectDiskWithStatvfs(const char* folderPath, struct statvfs* fs, FFDiskResult* result);
|
|
|
|
|
|
2022-09-23 19:45:23 +08:00
|
|
|
const char* ffDiskAutodetectFolders(FFinstance* instance, FFlist* folders)
|
|
|
|
|
{
|
|
|
|
|
NSArray *keys = [NSArray arrayWithObjects:NSURLVolumeNameKey, nil];
|
|
|
|
|
NSArray *urls = [NSFileManager.defaultManager mountedVolumeURLsIncludingResourceValuesForKeys:keys
|
|
|
|
|
options:NSVolumeEnumerationSkipHiddenVolumes];
|
|
|
|
|
if(urls == nil)
|
|
|
|
|
return "[NSFileManager.defaultManager mountedVolumeURLsIncludingResourceValuesForKeys] failed";
|
|
|
|
|
|
|
|
|
|
for (NSURL *url in urls) {
|
|
|
|
|
NSError *error;
|
|
|
|
|
NSNumber* removable;
|
|
|
|
|
if([url getResourceValue:&removable forKey:NSURLVolumeIsRemovableKey error:&error] == NO)
|
|
|
|
|
continue;
|
|
|
|
|
if(removable.boolValue && !instance->config.diskRemovable)
|
|
|
|
|
continue;
|
|
|
|
|
|
2022-10-07 01:36:32 +08:00
|
|
|
FFDiskResult* folder = (FFDiskResult*)ffListAdd(folders);
|
|
|
|
|
ffDetectDiskWithStatvfs([url.relativePath cStringUsingEncoding:NSUTF8StringEncoding], NULL, folder);
|
|
|
|
|
folder->removable = removable.boolValue;
|
2022-09-23 19:45:23 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|