From d5926d3848b1e9c6147f0bd908a35d20cdef50b5 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Thu, 10 Sep 2015 17:22:34 +0200 Subject: [PATCH] add exfat support Signed-off-by: John Crispin --- fs.c | 15 +++++++++++++++ include/fs.h | 3 ++- mount.c | 5 +++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/fs.c b/fs.c index 49ad1d5..fee6608 100644 --- a/fs.c +++ b/fs.c @@ -123,6 +123,20 @@ out: return ret; } +static int detect_exfat(int fd) +{ + int ret = NONE; + unsigned char *buffer = (unsigned char*)malloc(FAT_BUF_SIZE); + if(get_buffer(fd, buffer, 0, FAT_BUF_SIZE) != 0) + goto out; + + if (!memcmp(buffer + 3, "EXFAT ", 7)) + ret = EXFAT; +out: + free(buffer); + return ret; +} + #define HFSPLUS_VOL_JOURNALED (1 << 13) #define HFSPLUS_BUF_SIZE 512 static int detect_hfsplus(int fd) @@ -179,6 +193,7 @@ out: dfunc funcs[] = { detect_ext23, + detect_exfat, detect_fat, detect_ntfs, detect_hfsplus, diff --git a/include/fs.h b/include/fs.h index be60f2e..1c66db3 100644 --- a/include/fs.h +++ b/include/fs.h @@ -7,6 +7,7 @@ #define EFI 7 #define NTFS 8 #define EXTENDED 9 -#define EXT4 10 +#define EXFAT 10 +#define EXT4 11 int detect_fs(char *device); diff --git a/mount.c b/mount.c index 0370eb9..8892040 100644 --- a/mount.c +++ b/mount.c @@ -227,6 +227,11 @@ int mount_new(char *path, char *dev) pid = autofs_safe_fork(); if(!pid) { + if(mount->fs == EXFAT) + { + log_printf("mount -t exfat -o rw,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp); + ret = system_printf("mount -t exfat -o rw,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp); + } if(mount->fs == FAT) { log_printf("mount -t vfat -o rw,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp); -- 2.30.2