2013-02-21 3 views
3

Я обновляю утилиту резервного копирования, которую я написал и имею в магазине Mac App.Как найти формат тома диска

В приложении Macintosh Cocoa, как узнать, как отформатирован том диска? Единственное официальное, что я нахожу, делает GetResourceValue: для «NSURLVolumeLocalizedFormatDescriptionKey», но это зависит от языка.

Моя утилита не поддерживает тома, отформатированные для FAT32. Моя утилита должна выполнять специальную обработку для дисков XSan.

ответ

5

statfs(2) даст вам не-локализованное название:

struct statfs volinfo; 
if(statfs("/path/to/your/volume", &volinfo) != 0) 
{ 
    perror("statfs"); 
    return -1; 
} 

fprintf(stderr, "%s\n", volinfo.f_fstypename); 

См /System/Library/Filesystems для имен, которые будут возвращены в f_fstypename.

+0

Works! Я замечаю, что диск iCloud для «MobileBackups» - это «mtmfs», который не является одной из перечисленных файловых систем. При преобразовании url.path в C String, какую кодировку я использую? Я использую «NSASCIIStringEncoding». – NPAssoc

+1

Использовать '[[url путь] fileSystemRepresentation]'; ср https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html – jatoben

0

Этот вопрос был дан ответ, но я брошу мои 2 цента ...

/sbin/mount | grep acfs | awk '{print $3}' 

Это выводит

/Volumes/XsanVolumeName1 
/Volumes/XsanVolumeName2 
+0

Мне нужно было узнать формат * определенного тома, а не другой и мне нужно было сделать это в Objective C. Вы показываете мне тома, которые используют определенную файловую систему - интересную идею, но это было не то, что я искал. – NPAssoc