diff options
author | Nikolaus Rath <Nikolaus@rath.org> | 2016-11-16 12:41:41 -0800 |
---|---|---|
committer | Nikolaus Rath <Nikolaus@rath.org> | 2016-11-16 12:41:41 -0800 |
commit | c22da7f3a89353ee2b68b6ae1b46af430ba9a691 (patch) | |
tree | b392de57bac8818d0218824fd87c411a8ae8eddb /lib | |
parent | 2e6cd2d4255e2948cecb54d72d21b018752e92cc (diff) |
Add support for more detailed error codes from main loop
Diffstat (limited to 'lib')
-rw-r--r-- | lib/fuse_i.h | 1 | ||||
-rw-r--r-- | lib/fuse_loop.c | 4 | ||||
-rw-r--r-- | lib/fuse_loop_mt.c | 2 | ||||
-rw-r--r-- | lib/fuse_lowlevel.c | 1 |
4 files changed, 7 insertions, 1 deletions
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) |