diff options
| -rw-r--r-- | Makefile.am | 2 | ||||
| -rw-r--r-- | acinclude.m4 | 21 | ||||
| -rw-r--r-- | configure.in | 2 | ||||
| -rw-r--r-- | fuse/Makefile.am | 14 | ||||
| -rw-r--r-- | fuse/main.c | 102 | 
5 files changed, 132 insertions, 9 deletions
| diff --git a/Makefile.am b/Makefile.am index a0042ed8..17766626 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3,7 +3,7 @@  #  SUBDIRS = common daemon tools rfcomm hcid sdpd dund pand hidd \ -	cups alsa test scripts pcmcia extra +	cups fuse alsa test scripts pcmcia extra  MAINTAINERCLEANFILES = Makefile.in \  	aclocal.m4 configure config.h.in config.sub config.guess \ diff --git a/acinclude.m4 b/acinclude.m4 index e305b6b0..9f6779a9 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -292,9 +292,10 @@ AC_DEFUN([AC_PATH_USB], [  AC_DEFUN([AC_ARG_BLUEZ], [  	debug_enable=no  	pie_enable=no +	dbus_enable=${dbus_found}  	obex_enable=${openobex_found} +	fuse_enable=no  	alsa_enable=no -	dbus_enable=${dbus_found}  	test_enable=no  	cups_enable=no  	pcmcia_enable=no @@ -315,9 +316,10 @@ AC_DEFUN([AC_ARG_BLUEZ], [  	])  	AC_ARG_ENABLE(all, AC_HELP_STRING([--enable-all], [enable all extra options below]), [ +		dbus_enable=${enableval}  		obex_enable=${enableval} +		fuse_enable=${enableval}  		alsa_enable=${enableval} -		dbus_enable=${enableval}  		test_enable=${enableval}  		cups_enable=${enableval}  		pcmcia_enable=${enableval} @@ -330,16 +332,20 @@ AC_DEFUN([AC_ARG_BLUEZ], [  		bluepin_enable=${enableval}  	]) +	AC_ARG_ENABLE(dbus, AC_HELP_STRING([--enable-dbus], [enable D-BUS support]), [ +		dbus_enable=${enableval} +	]) +  	AC_ARG_ENABLE(obex, AC_HELP_STRING([--enable-obex], [enable OBEX support]), [  		obex_enable=${enableval}  	]) -	AC_ARG_ENABLE(alsa, AC_HELP_STRING([--enable-alsa], [enable ALSA support]), [ -		alsa_enable=${enableval} +	AC_ARG_ENABLE(fuse, AC_HELP_STRING([--enable-fuse], [enable FUSE support]), [ +		fuse_enable=${enableval}  	]) -	AC_ARG_ENABLE(dbus, AC_HELP_STRING([--enable-dbus], [enable D-BUS support]), [ -		dbus_enable=${enableval} +	AC_ARG_ENABLE(alsa, AC_HELP_STRING([--enable-alsa], [enable ALSA support]), [ +		alsa_enable=${enableval}  	])  	AC_ARG_ENABLE(test, AC_HELP_STRING([--enable-test], [install test programs]), [ @@ -391,9 +397,10 @@ AC_DEFUN([AC_ARG_BLUEZ], [  		LDFLAGS="$LDFLAGS -pie"  	fi +	AM_CONDITIONAL(DBUS, test "${dbus_enable}" = "yes" && test "${dbus_found}" = "yes")  	AM_CONDITIONAL(OBEX, test "${obex_enable}" = "yes" && test "${openobex_found}" = "yes") +	AM_CONDITIONAL(FUSE, test "${fuse_enable}" = "yes" && test "${openobex_found}" = "yes" && test "${fuse_found}" = "yes")  	AM_CONDITIONAL(ALSA, test "${alsa_enable}" = "yes" && test "${alsa_found}" = "yes") -	AM_CONDITIONAL(DBUS, test "${dbus_enable}" = "yes" && test "${dbus_found}" = "yes")  	AM_CONDITIONAL(TEST, test "${test_enable}" = "yes")  	AM_CONDITIONAL(CUPS, test "${cups_enable}" = "yes")  	AM_CONDITIONAL(PCMCIA, test "${pcmcia_enable}" = "yes") diff --git a/configure.in b/configure.in index 107ce98f..abe93832 100644 --- a/configure.in +++ b/configure.in @@ -35,4 +35,4 @@ AC_PATH_USB  AC_ARG_BLUEZ -AC_OUTPUT(Makefile common/Makefile daemon/Makefile tools/Makefile rfcomm/Makefile hcid/Makefile sdpd/Makefile dund/Makefile pand/Makefile hidd/Makefile cups/Makefile alsa/Makefile test/Makefile scripts/Makefile pcmcia/Makefile extra/Makefile) +AC_OUTPUT(Makefile common/Makefile daemon/Makefile tools/Makefile rfcomm/Makefile hcid/Makefile sdpd/Makefile dund/Makefile pand/Makefile hidd/Makefile cups/Makefile fuse/Makefile alsa/Makefile test/Makefile scripts/Makefile pcmcia/Makefile extra/Makefile) diff --git a/fuse/Makefile.am b/fuse/Makefile.am new file mode 100644 index 00000000..ba504834 --- /dev/null +++ b/fuse/Makefile.am @@ -0,0 +1,14 @@ +# +#  $Id$ +# + +if FUSE +noinst_PROGRAMS = btfs + +btfs_SOURCES = main.c +btfs_LDADD = @FUSE_LIBS@ @OPENOBEX_LIBS@ @BLUEZ_LIBS@ + +AM_CFLAGS = @BLUEZ_CFLAGS@ @OPENOBEX_CFLAGS@ @FUSE_CFLAGS@ +endif + +MAINTAINERCLEANFILES = Makefile.in diff --git a/fuse/main.c b/fuse/main.c new file mode 100644 index 00000000..7cd57123 --- /dev/null +++ b/fuse/main.c @@ -0,0 +1,102 @@ +/* + * + *  BlueZ - Bluetooth protocol stack for Linux + * + *  Copyright (C) 2004-2005  Marcel Holtmann <marcel@holtmann.org> + * + * + *  This program is free software; you can redistribute it and/or modify + *  it under the terms of the GNU General Public License version 2 as + *  published by the Free Software Foundation; + * + *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + *  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. + *  IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY + *  CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES + *  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + *  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + *  ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, + *  COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS + *  SOFTWARE IS DISCLAIMED. + * + * + *  $Id$ + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <stdio.h> +#include <errno.h> +#include <fcntl.h> +#include <string.h> + +#include <fuse.h> + +static int btfs_getattr(const char *path, struct stat *stbuf) +{ +	int err = 0; + +	memset(stbuf, 0, sizeof(struct stat)); + +	if (!strcmp(path, "/")) { +		stbuf->st_mode = S_IFDIR | 0755; +		stbuf->st_nlink = 2; +	} else if (!strcmp(path, "/test")) { +		stbuf->st_mode = S_IFREG | 0444; +		stbuf->st_nlink = 1; +		stbuf->st_size = strlen("/test"); +	} else +		err = -ENOENT; + +	return err; +} + +static int btfs_getdir(const char *path, fuse_dirh_t h, fuse_dirfil_t filler) +{ +	if (strcmp(path, "/")) +		return -ENOENT; + +	filler(h, ".", 0); +	filler(h, "..", 0); +	filler(h, "test", 0); + +	return 0; +} + +static int btfs_open(const char *path, int flags) +{ +	if (strcmp(path, "/test")) +		return -ENOENT; + +	if ((flags & 3) != O_RDONLY) +		return -EACCES; + +	return 0; +} + +static int btfs_read(const char *path, char *buf, size_t size, off_t offset) +{ +	if (strcmp(path, "/test")) +		return -ENOENT; + +	memcpy(buf, "Test" + offset, size); + +	return size; +} + +static struct fuse_operations btfs_ops = { +	.getattr	= btfs_getattr, +	.getdir		= btfs_getdir, +	.open		= btfs_open, +	.read		= btfs_read, +}; + +int main(int argc, char *argv[]) +{ +	return fuse_main(argc, argv, &btfs_ops); +} | 
