libfuse: remove "-D_FILE_OFFSET_BITS=64" from fuse.pc
[fuse.git] / lib / fuse_session.c
blobe919e731ff78cc3c427d550cb4386fd98eaecb00
1 /*
2 FUSE: Filesystem in Userspace
3 Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
5 This program can be distributed under the terms of the GNU LGPLv2.
6 See the file COPYING.LIB
7 */
9 #include "config.h"
10 #include "fuse_i.h"
11 #include "fuse_misc.h"
13 #include <stdio.h>
14 #include <stdlib.h>
15 #include <string.h>
16 #include <assert.h>
17 #include <errno.h>
20 struct fuse_session *fuse_session_new(void)
22 struct fuse_session *se = (struct fuse_session *) malloc(sizeof(*se));
23 if (se == NULL) {
24 fprintf(stderr, "fuse: failed to allocate session\n");
25 return NULL;
27 memset(se, 0, sizeof(*se));
29 return se;
32 void fuse_session_add_chan(struct fuse_session *se, struct fuse_chan *ch)
34 assert(se->ch == NULL);
35 assert(ch->se == NULL);
36 se->ch = ch;
37 ch->se = se;
40 void fuse_session_remove_chan(struct fuse_chan *ch)
42 struct fuse_session *se = ch->se;
43 if (se) {
44 assert(se->ch == ch);
45 se->ch = NULL;
46 ch->se = NULL;
50 struct fuse_chan *fuse_session_chan(struct fuse_session *se)
52 return se->ch;
55 int fuse_chan_clearfd(struct fuse_chan *ch)
57 int fd = ch->fd;
58 ch->fd = -1;
59 return fd;
62 void fuse_session_exit(struct fuse_session *se)
64 se->exited = 1;
67 void fuse_session_reset(struct fuse_session *se)
69 se->exited = 0;
72 int fuse_session_exited(struct fuse_session *se)
74 return se->exited;
77 struct fuse_chan *fuse_chan_new(int fd)
79 struct fuse_chan *ch = (struct fuse_chan *) malloc(sizeof(*ch));
80 if (ch == NULL) {
81 fprintf(stderr, "fuse: failed to allocate channel\n");
82 return NULL;
85 memset(ch, 0, sizeof(*ch));
86 ch->fd = fd;
88 return ch;
91 int fuse_chan_fd(struct fuse_chan *ch)
93 return ch->fd;
96 struct fuse_session *fuse_chan_session(struct fuse_chan *ch)
98 return ch->se;
101 void fuse_chan_destroy(struct fuse_chan *ch)
103 fuse_session_remove_chan(ch);
104 fuse_chan_close(ch);
105 free(ch);