diff options
author | tv <tv@krebsco.de> | 2021-01-03 21:41:38 +0100 |
---|---|---|
committer | tv <tv@krebsco.de> | 2021-01-14 23:32:24 +0100 |
commit | 8d20d5d18d8504d9e95748a15988f125593ef031 (patch) | |
tree | 2d9490e4c122daec716f3110da98d4c3d129e34e /fs | |
parent | 82a1d6722def33450733efdffbf94f766ba1fbf5 (diff) |
add tabfs-wrapper for all things shell scripting
Diffstat (limited to 'fs')
-rwxr-xr-x | fs/tabfs-wrapper | 28 | ||||
-rw-r--r-- | fs/tabfs.c | 40 |
2 files changed, 29 insertions, 39 deletions
diff --git a/fs/tabfs-wrapper b/fs/tabfs-wrapper new file mode 100755 index 0000000..9116a52 --- /dev/null +++ b/fs/tabfs-wrapper @@ -0,0 +1,28 @@ +#! /bin/sh +set -efu + +# allow wrapper to find tabfs executable +PATH=$(dirname "$0")${PATH:+:$PATH} + +pgrep tabfs | grep -v ^$$\$ | xargs kill -9 2>/dev/null || : + +OS=$(uname -s) +case $OS in + Darwin) + diskutil umount force mnt >/dev/null || : + extraArgs= + ;; + FreeBSD) + umount -f mnt 2>/dev/null || : + extraArgs= + ;; + Linux) + fusermount -u mnt 2>/dev/null || : + extraArgs=-oauto_unmount + ;; + *) + echo "tabfs-wrapper: error: unknown OS: $OS" >&2 + exit 2 +esac + +exec tabfs -f $extraArgs -odirect_io mnt @@ -460,28 +460,6 @@ static const struct fuse_operations tabfs_oper = { }; int main(int argc, char **argv) { - (void)argc; - if (NULL == getenv("TABFS_MOUNT_DIR")) { - setenv("TABFS_MOUNT_DIR", "mnt", 1); - } - - freopen("log.txt", "a", stderr); - setvbuf(stderr, NULL, _IONBF, 0); - - char killcmd[128]; - sprintf(killcmd, "pgrep tabfs | grep -v %d | xargs kill -9 2>/dev/null", getpid()); - system(killcmd); - -#if defined(__APPLE__) - system("diskutil umount force \"$TABFS_MOUNT_DIR\" >/dev/null"); -#elif defined(__FreeBSD__) - system("umount -f \"$TABFS_MOUNT_DIR\" 2>/dev/null"); -#else - system("fusermount -u \"$TABFS_MOUNT_DIR\" 2>/dev/null"); -#endif - - system("mkdir -p \"$TABFS_MOUNT_DIR\""); - pthread_t thread; int err = pthread_create(&thread, NULL, reader_main, NULL); if (err != 0) { @@ -491,21 +469,5 @@ int main(int argc, char **argv) { pthread_detach(thread); - char *fuse_argv[] = { - argv[0], - "-f", -#if !defined(__APPLE__) -#if !defined(__FreeBSD__) - "-oauto_unmount", -#endif -#endif - "-odirect_io", - getenv("TABFS_MOUNT_DIR"), - NULL, - }; - return fuse_main( - (sizeof(fuse_argv)/sizeof(*fuse_argv))-1, - (char **)&fuse_argv, - &tabfs_oper, - NULL); + return fuse_main(argc, argv, &tabfs_oper, NULL); } |