2009-10-03 15:19:30 +08:00
|
|
|
/*
|
|
|
|
FUSE: Filesystem in Userspace
|
|
|
|
Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
|
|
|
|
|
|
|
|
This program can be distributed under the terms of the GNU LGPLv2.
|
|
|
|
See the file COPYING.LIB.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "config.h"
|
|
|
|
#include "fuse_i.h"
|
|
|
|
#include "fuse_lowlevel.h"
|
|
|
|
|
|
|
|
struct fuse_chan *fuse_mount(const char *mountpoint, struct fuse_args *args)
|
|
|
|
{
|
|
|
|
struct fuse_chan *ch;
|
|
|
|
int fd;
|
|
|
|
|
2012-08-22 17:02:36 +08:00
|
|
|
#ifdef __SOLARIS__
|
|
|
|
/*
|
|
|
|
* Make sure file descriptors 0, 1 and 2 are open, otherwise chaos
|
|
|
|
* would ensue.
|
|
|
|
*/
|
|
|
|
do {
|
|
|
|
fd = open("/dev/null", O_RDWR);
|
|
|
|
if (fd > 2)
|
|
|
|
close(fd);
|
|
|
|
} while (fd >= 0 && fd <= 2);
|
|
|
|
#endif /* __SOLARIS__ */
|
|
|
|
|
2009-10-03 15:19:30 +08:00
|
|
|
fd = fuse_kern_mount(mountpoint, args);
|
|
|
|
if (fd == -1)
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
ch = fuse_kern_chan_new(fd);
|
|
|
|
if (!ch)
|
|
|
|
fuse_kern_unmount(mountpoint, fd);
|
|
|
|
|
|
|
|
return ch;
|
|
|
|
}
|
|
|
|
|
|
|
|
void fuse_unmount(const char *mountpoint, struct fuse_chan *ch)
|
|
|
|
{
|
|
|
|
int fd = ch ? fuse_chan_fd(ch) : -1;
|
|
|
|
fuse_kern_unmount(mountpoint, fd);
|
|
|
|
fuse_chan_destroy(ch);
|
|
|
|
}
|
|
|
|
|
|
|
|
int fuse_version(void)
|
|
|
|
{
|
|
|
|
return FUSE_VERSION;
|
|
|
|
}
|
|
|
|
|
2012-08-22 17:02:36 +08:00
|
|
|
#ifdef __SOLARIS__
|
|
|
|
#undef fuse_main
|
|
|
|
int fuse_main(void);
|
|
|
|
int fuse_main(void)
|
|
|
|
{
|
|
|
|
fprintf(stderr, "fuse_main(): This function does not exist\n");
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
#endif /* __SOLARIS__ */
|