From 8d20d5d18d8504d9e95748a15988f125593ef031 Mon Sep 17 00:00:00 2001 From: tv Date: Sun, 3 Jan 2021 21:41:38 +0100 Subject: add tabfs-wrapper for all things shell scripting --- fs/tabfs-wrapper | 28 ++++++++++++++++++++++++++++ fs/tabfs.c | 40 +--------------------------------------- install.sh | 2 +- 3 files changed, 30 insertions(+), 40 deletions(-) create mode 100755 fs/tabfs-wrapper 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 diff --git a/fs/tabfs.c b/fs/tabfs.c index fd1a15d..f734109 100644 --- a/fs/tabfs.c +++ b/fs/tabfs.c @@ -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); } diff --git a/install.sh b/install.sh index 103101e..b0e8e7c 100755 --- a/install.sh +++ b/install.sh @@ -44,7 +44,7 @@ esac mkdir -p "$MANIFEST_LOCATION" APP_NAME="com.rsnous.tabfs" -EXE_PATH=$(pwd)/fs/tabfs +EXE_PATH=$(realpath "$(dirname "$0")")/fs/tabfs-wrapper case "$BROWSER" in chrome | chromium | chromebeta | vivaldi) -- cgit v1.2.3