Как читать vfat атрибуты файлов в Linux с помощью C - PullRequest
4 голосов
/ 29 октября 2009

У меня есть файловая система FAT, смонтированная в Linux с драйвером vfat. Я хочу знать, как я смогу прочитать атрибуты vfat файла, такие как «скрытый» и «только для чтения».

Исходя из того, что я уже прочитал, если я использую команду stat() glibc для файла, я получу только атрибуты файла, перечисленные здесь: http://www.gnu.org/s/libc/manual/html_node/Attribute-Meanings.html#Attribute-Meanings

Однако они не содержат никаких атрибутов vfat. Кто-нибудь может помочь?

Спасибо

Katsupoy

1 Ответ

6 голосов
/ 29 октября 2009

Атрибуты DAT FAT плохо сопоставляются с моделью файловой системы UNIX, поэтому драйвер vfat в Linux не отражает их.

Вместо монтирования файловой системы используйте mtools для чтения файловой системы из пространства пользователя.


Редактировать Я солгал. Очевидно, что драйвер vfat может работать с этими атрибутами DOS, по крайней мере, с 2.4.29 (я думаю, мои исторические журналы не уходят так далеко).

#include <inttypes.h>
#include <sys/ioctl.h>
#include <linux/msdos_fs.h>

int fd = open("/mnt/fat/...", ...);
__u32 attrs;
ioctl(fd, FAT_IOCTL_GET_ATTRIBUTES, &attrs);
attrs = ATTR_NONE;  /* ATTR_{RO,HIDDEN,SYS,VOLUME,DIR,ARCH} */
ioctl(fd, FAT_IOCTL_SET_ATTRIBUTES, &attrs);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...