From c22da7f3a89353ee2b68b6ae1b46af430ba9a691 Mon Sep 17 00:00:00 2001 From: Nikolaus Rath Date: Wed, 16 Nov 2016 12:41:41 -0800 Subject: Add support for more detailed error codes from main loop --- lib/fuse_i.h | 1 + lib/fuse_loop.c | 4 +++- lib/fuse_loop_mt.c | 2 ++ lib/fuse_lowlevel.c | 1 + 4 files changed, 7 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/fuse_i.h b/lib/fuse_i.h index ec29c4e..1e99c6f 100644 --- a/lib/fuse_i.h +++ b/lib/fuse_i.h @@ -63,6 +63,7 @@ struct fuse_session { uint64_t notify_ctr; struct fuse_notify_req notify_list; size_t bufsize; + int error; }; struct fuse_chan { diff --git a/lib/fuse_loop.c b/lib/fuse_loop.c index 4a85b13..c847bd8 100644 --- a/lib/fuse_loop.c +++ b/lib/fuse_loop.c @@ -35,6 +35,8 @@ int fuse_session_loop(struct fuse_session *se) } free(fbuf.mem); + if(se->error != 0) + res = se->error; fuse_session_reset(se); - return res < 0 ? -1 : 0; + return res; } diff --git a/lib/fuse_loop_mt.c b/lib/fuse_loop_mt.c index 54fb56d..42d3e03 100644 --- a/lib/fuse_loop_mt.c +++ b/lib/fuse_loop_mt.c @@ -339,6 +339,8 @@ int fuse_session_loop_mt(struct fuse_session *se, int clone_fd) pthread_mutex_destroy(&mt.lock); sem_destroy(&mt.finish); + if(se->error != 0) + err = se->error; fuse_session_reset(se); return err; } diff --git a/lib/fuse_lowlevel.c b/lib/fuse_lowlevel.c index 8455669..4cc4193 100644 --- a/lib/fuse_lowlevel.c +++ b/lib/fuse_lowlevel.c @@ -2940,6 +2940,7 @@ void fuse_session_exit(struct fuse_session *se) void fuse_session_reset(struct fuse_session *se) { se->exited = 0; + se->error = 0; } int fuse_session_exited(struct fuse_session *se) -- cgit v1.2.3