aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGravatar Nikolaus Rath <Nikolaus@rath.org>2016-11-16 12:41:41 -0800
committerGravatar Nikolaus Rath <Nikolaus@rath.org>2016-11-16 12:41:41 -0800
commitc22da7f3a89353ee2b68b6ae1b46af430ba9a691 (patch)
treeb392de57bac8818d0218824fd87c411a8ae8eddb /lib
parent2e6cd2d4255e2948cecb54d72d21b018752e92cc (diff)
Add support for more detailed error codes from main loop
Diffstat (limited to 'lib')
-rw-r--r--lib/fuse_i.h1
-rw-r--r--lib/fuse_loop.c4
-rw-r--r--lib/fuse_loop_mt.c2
-rw-r--r--lib/fuse_lowlevel.c1
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)