diff options
author | Daniel Dickinson <lede@daniel.thecshore.com> | 2016-05-22 05:22:48 -0400 |
---|---|---|
committer | John Crispin <john@phrozen.org> | 2016-05-19 07:46:57 +0200 |
commit | 1fb7688606323ee0ce79b64a5aa75b8df0484356 (patch) | |
tree | c4fbe7126f9b86856fc7bd684a51b3a5b87fba88 | |
parent | 7a967198b9b18d00526094a43248b1c0892eb4aa (diff) | |
download | fstools-1fb7688606323ee0ce79b64a5aa75b8df0484356.tar.gz |
block.c: Add support for checking vfat filesystems
vfat is a common filesystem which users may want to mount on an
OpenWrt/LEDE device, so support peforming filesystem checks
before mount for vfat.
Signed-off-by: Daniel Dickinson <lede@daniel.thecshore.com>
-rw-r--r-- | block.c | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -628,31 +628,37 @@ static void check_filesystem(struct blkid_struct_probe *pr) pid_t pid; struct stat statbuf; const char *e2fsck = "/usr/sbin/e2fsck"; + const char *dosfsck = "/usr/sbin/dosfsck"; + const char *ckfs; /* UBIFS does not need stuff like fsck */ if (!strncmp(pr->id->name, "ubifs", 5)) return; - if (strncmp(pr->id->name, "ext", 3)) { + if (!strncmp(pr->id->name, "vfat", 4)) { + ckfs = dosfsck; + } else if (!strncmp(pr->id->name, "ext", 3)) { + ckfs = e2fsck; + } else { ULOG_ERR("check_filesystem: %s is not supported\n", pr->id->name); return; } - if (stat(e2fsck, &statbuf) < 0) { - ULOG_ERR("check_filesystem: %s not found\n", e2fsck); + if (stat(ckfs, &statbuf) < 0) { + ULOG_ERR("check_filesystem: %s not found\n", ckfs); return; } pid = fork(); if (!pid) { - execl(e2fsck, e2fsck, "-p", pr->dev, NULL); + execl(ckfs, ckfs, "-p", pr->dev, NULL); exit(-1); } else if (pid > 0) { int status; waitpid(pid, &status, 0); if (WEXITSTATUS(status)) - ULOG_ERR("check_filesystem: %s returned %d\n", e2fsck, WEXITSTATUS(status)); + ULOG_ERR("check_filesystem: %s returned %d\n", ckfs, WEXITSTATUS(status)); } } |