32 lines
870 B
Diff
32 lines
870 B
Diff
|
# Tup needs a setuid fusermount which may be outside $PATH.
|
||
|
|
||
|
diff --git a/src/tup/server/fuse_server.c b/src/tup/server/fuse_server.c
|
||
|
index d4ab648d..2dc9294b 100644
|
||
|
--- a/src/tup/server/fuse_server.c
|
||
|
+++ b/src/tup/server/fuse_server.c
|
||
|
@@ -105,16 +105,21 @@ static void *fuse_thread(void *arg)
|
||
|
#if defined(__linux__)
|
||
|
static int os_unmount(void)
|
||
|
{
|
||
|
- int rc;
|
||
|
#ifdef FUSE3
|
||
|
- rc = system("fusermount3 -u -z " TUP_MNT);
|
||
|
+#define FUSERMOUNT "fusermount3"
|
||
|
#else
|
||
|
- rc = system("fusermount -u -z " TUP_MNT);
|
||
|
+#define FUSERMOUNT "fusermount"
|
||
|
#endif
|
||
|
+ int rc;
|
||
|
+ const char *cmd = (access("/run/wrappers/bin/" FUSERMOUNT, X_OK) == 0)
|
||
|
+ ? "/run/wrappers/bin/" FUSERMOUNT " -u -z " TUP_MNT
|
||
|
+ : FUSERMOUNT " -u -z " TUP_MNT;
|
||
|
+ rc = system(cmd);
|
||
|
if(rc == -1) {
|
||
|
perror("system");
|
||
|
}
|
||
|
return rc;
|
||
|
+#undef FUSERMOUNT
|
||
|
}
|
||
|
#elif defined(__APPLE__)
|
||
|
static int os_unmount(void)
|