| /* |
| FUSE: Filesystem in Userspace |
| Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu> |
| |
| Implementation of the single-threaded FUSE session loop. |
| |
| This program can be distributed under the terms of the GNU LGPLv2. |
| See the file COPYING.LIB |
| */ |
| |
| #include "config.h" |
| #include "fuse_lowlevel.h" |
| #include "fuse_i.h" |
| |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <errno.h> |
| |
| int fuse_session_loop(struct fuse_session *se) |
| { |
| int res = 0; |
| struct fuse_buf fbuf = { |
| .mem = NULL, |
| }; |
| |
| while (!fuse_session_exited(se)) { |
| res = fuse_session_receive_buf_int(se, &fbuf, NULL); |
| |
| if (res == -EINTR) |
| continue; |
| if (res <= 0) |
| break; |
| |
| fuse_session_process_buf_int(se, &fbuf, NULL); |
| } |
| |
| free(fbuf.mem); |
| if(se->error != 0) |
| res = se->error; |
| fuse_session_reset(se); |
| return res; |
| } |