| 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; |
| +} |