aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2021-01-03 21:41:38 +0100
committertv <tv@krebsco.de>2021-01-14 23:32:24 +0100
commit8d20d5d18d8504d9e95748a15988f125593ef031 (patch)
tree2d9490e4c122daec716f3110da98d4c3d129e34e
parent82a1d6722def33450733efdffbf94f766ba1fbf5 (diff)
add tabfs-wrapper for all things shell scripting
-rwxr-xr-xfs/tabfs-wrapper28
-rw-r--r--fs/tabfs.c40
-rwxr-xr-xinstall.sh2
3 files changed, 30 insertions, 40 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
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)