blob: 45142d6aa616b30339c502abcb653f23aaa956cc [file] [log] [blame]
Index: b/include/fuse_common.h
===================================================================
--- a/include/fuse_common.h
+++ b/include/fuse_common.h
@@ -834,6 +834,11 @@ int fuse_set_signal_handlers(struct fuse
*/
void fuse_remove_signal_handlers(struct fuse_session *se);
+/**
+ * Return 1 if fuse has been signaled, and 0 otherwise.
+ */
+int fuse_signaled();
+
/* ----------------------------------------------------------- *
* Compatibility stuff *
* ----------------------------------------------------------- */
Index: b/lib/fuse_signals.c
===================================================================
--- a/lib/fuse_signals.c
+++ b/lib/fuse_signals.c
@@ -18,10 +18,12 @@
#include <stdlib.h>
static struct fuse_session *fuse_instance;
+static int signaled;
static void exit_handler(int sig)
{
if (fuse_instance) {
+ signaled = 1;
fuse_session_exit(fuse_instance);
if(sig <= 0) {
fuse_log(FUSE_LOG_ERR, "assertion error: signal value <= 0\n");
@@ -89,3 +91,8 @@ void fuse_remove_signal_handlers(struct
set_one_signal_handler(SIGTERM, exit_handler, 1);
set_one_signal_handler(SIGPIPE, do_nothing, 1);
}
+
+int fuse_signaled()
+{
+ return signaled;
+}