Hi Michal, On Fri, Oct 26, 2012 at 4:10 PM, Luiz Augusto von Dentz <luiz.dentz@xxxxxxxxx> wrote: > Hi Michal, > > On Sun, Oct 21, 2012 at 7:05 PM, Michał Poczwardowski > <dmp0x7c5@xxxxxxxxx> wrote: >> --- >> fuse/helpers.c | 55 +++++++++++++++++++++++++ >> fuse/helpers.h | 49 ++++++++++++++++++++++ >> fuse/obexfuse.c | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ >> 3 files changed, 223 insertions(+), 0 deletions(-) >> create mode 100644 fuse/helpers.c >> create mode 100644 fuse/helpers.h >> create mode 100644 fuse/obexfuse.c >> >> diff --git a/fuse/helpers.c b/fuse/helpers.c >> new file mode 100644 >> index 0000000..53bba57 >> --- /dev/null >> +++ b/fuse/helpers.c >> @@ -0,0 +1,55 @@ >> +/* >> + * OBEX Filesystem in Userspace >> + * >> + * Copyright (C) 2012 Michał Poczwardowski <dmp0x7c5@xxxxxxxxx> >> + * >> + * >> + * This program is free software; you can redistribute it and/or modify >> + * it under the terms of the GNU General Public License as published by >> + * the Free Software Foundation; either version 2 of the License, or >> + * (at your option) any later version. >> + * >> + * This program is distributed in the hope that it will be useful, >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> + * GNU General Public License for more details. >> + * >> + * You should have received a copy of the GNU General Public License >> + * along with this program; if not, write to the Free Software >> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA >> + * >> + */ >> + >> +#include <gobex/gobex.h> >> +#include <btio/btio.h> >> + >> +#include <glib.h> >> +#include <fcntl.h> >> +#include <errno.h> >> + >> +#include <bluetooth/bluetooth.h> >> +#include <bluetooth/rfcomm.h> >> +#include <bluetooth/sdp.h> >> +#include <bluetooth/sdp_lib.h> >> + >> +#define BT_RX_MTU 32767 >> +#define BT_TX_MTU 32767 >> + >> +#include "helpers.h" >> + >> +#define OBEX_FTP_UUID \ >> + "\xF9\xEC\x7B\xC4\x95\x3C\x11\xD2\x98\x4E\x52\x54\x00\xDC\x9E\x09" >> +#define OBEX_FTP_UUID_LEN 16 >> + >> +#define OBEX_FTP_LS "x-obex/folder-listing" >> + >> +struct gobexhlp_request { >> + gchar *name; >> + gboolean complete; >> +}; >> + >> +struct gobexhlp_location { >> + gchar *dir; >> + gchar *file; >> +}; >> + >> diff --git a/fuse/helpers.h b/fuse/helpers.h >> new file mode 100644 >> index 0000000..21972b2 >> --- /dev/null >> +++ b/fuse/helpers.h >> @@ -0,0 +1,49 @@ >> +/* >> + * OBEX Filesystem in Userspace >> + * >> + * Copyright (C) 2012 Michał Poczwardowski <dmp0x7c5@xxxxxxxxx> >> + * >> + * >> + * This program is free software; you can redistribute it and/or modify >> + * it under the terms of the GNU General Public License as published by >> + * the Free Software Foundation; either version 2 of the License, or >> + * (at your option) any later version. >> + * >> + * This program is distributed in the hope that it will be useful, >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> + * GNU General Public License for more details. >> + * >> + * You should have received a copy of the GNU General Public License >> + * along with this program; if not, write to the Free Software >> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA >> + * >> + */ >> + >> +#include <gobex/gobex.h> >> +#include <glib.h> >> + >> +struct gobexhlp_request; >> + >> +struct gobexhlp_buffer { >> + void *data; >> + gsize tmpsize; >> + gsize size; >> + gboolean edited; >> +}; >> + >> +struct gobexhlp_session { >> + GObex *obex; >> + GList *lsfiles; >> + GIOChannel *io; >> + GHashTable *file_stat; >> + gchar *setpath; >> + struct gobexhlp_request *request; >> + struct gobexhlp_buffer *buffer; >> + gboolean vtouch; >> + gchar *vtouch_path; >> + gboolean rtouch; >> + int status; >> + GError *err; >> +}; >> + >> diff --git a/fuse/obexfuse.c b/fuse/obexfuse.c >> new file mode 100644 >> index 0000000..fe4f4da >> --- /dev/null >> +++ b/fuse/obexfuse.c >> @@ -0,0 +1,119 @@ >> +/* >> + * OBEX Filesystem in Userspace >> + * >> + * Copyright (C) 2012 Michał Poczwardowski <dmp0x7c5@xxxxxxxxx> >> + * >> + * >> + * This program is free software; you can redistribute it and/or modify >> + * it under the terms of the GNU General Public License as published by >> + * the Free Software Foundation; either version 2 of the License, or >> + * (at your option) any later version. >> + * >> + * This program is distributed in the hope that it will be useful, >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> + * GNU General Public License for more details. >> + * >> + * You should have received a copy of the GNU General Public License >> + * along with this program; if not, write to the Free Software >> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA >> + * >> + */ >> + >> +#define FUSE_USE_VERSION 26 >> + >> +#include <stdio.h> >> +#include <errno.h> >> +#include <fcntl.h> >> +#include <stdlib.h> >> +#include <string.h> >> + >> +#include <fuse.h> >> +#include <fuse/fuse_opt.h> >> + >> +#include "helpers.h" >> + >> +struct options { >> + char* dststr; >> + char* srcstr; >> +} options; >> + >> +#define GOBEXFUSE_OPT_KEY(t, p, v) { t, offsetof(struct options, p), v } >> + >> +enum >> +{ >> + KEY_VERSION, >> + KEY_HELP, >> +}; >> + >> +static struct fuse_opt obexfuse_opts[] = >> +{ >> + GOBEXFUSE_OPT_KEY("--target=%s",dststr, 0), >> + GOBEXFUSE_OPT_KEY("-t %s", dststr, 0), >> + GOBEXFUSE_OPT_KEY("--source=%s",srcstr, 0), >> + GOBEXFUSE_OPT_KEY("-s %s", srcstr, 0), >> + >> + FUSE_OPT_KEY("-V", KEY_VERSION), >> + FUSE_OPT_KEY("--version", KEY_VERSION), >> + FUSE_OPT_KEY("-h", KEY_HELP), >> + FUSE_OPT_KEY("--help", KEY_HELP), >> + FUSE_OPT_END >> +}; >> + >> +static struct fuse_operations obexfuse_oper = { >> +}; >> + >> +static int obexfuse_opt_proc(void *data, const char *arg, int key, >> + struct fuse_args *outargs) >> +{ >> + switch (key) { >> + case KEY_HELP: >> + g_printerr("Usage: %s mountpoint [options]\n" >> + "\n" >> + "general options:\n" >> + " -o opt,[opt...] mount options\n" >> + " -h --help print help\n" >> + " -V --version print version\n" >> + "\n" >> + "obexfuse options:\n" >> + " -t --target target btaddr " >> + "(mandatory)\n" >> + " -s --source source btaddr\n" >> + "\n" >> + , outargs->argv[0]); >> + fuse_opt_add_arg(outargs, "-ho"); >> + fuse_main(outargs->argc, outargs->argv, &obexfuse_oper, NULL); >> + exit(1); >> + case KEY_VERSION: >> + g_print("obexfuse upon:\n"); >> + fuse_opt_add_arg(outargs, "--version"); >> + fuse_main(outargs->argc, outargs->argv, &obexfuse_oper, NULL); >> + exit(0); >> + } >> + return 1; >> +} >> + >> +int main(int argc, char *argv[]) >> +{ >> + int retfuse; >> + struct fuse_args args = FUSE_ARGS_INIT(argc, argv); >> + >> + memset(&options, 0, sizeof(struct options)); >> + >> + if (fuse_opt_parse(&args, &options, obexfuse_opts, >> + obexfuse_opt_proc) == -1) >> + return -EINVAL; >> + >> + if (options.dststr == NULL) { >> + g_printerr("Target not specified\n"); >> + return -EINVAL; >> + } >> + >> + g_thread_init(NULL); >> + >> + fuse_opt_add_arg(&args, "-s"); /* force single threaded mode */ >> + retfuse = fuse_main(args.argc, args.argv, &obexfuse_oper, NULL); >> + >> + fuse_opt_free_args(&args); >> + return retfuse; >> +} >> -- >> 1.7.8.6 > > Doesn't apply: > > Applying: fuse: Add initial obexfuse files, fuse main and options parse > /home/vudentz/git/obexd/.git/rebase-apply/patch:70: new blank line at EOF. > + > /home/vudentz/git/obexd/.git/rebase-apply/patch:125: new blank line at EOF. > + > fatal: 2 lines add whitespace errors. > Patch failed at 0001 fuse: Add initial obexfuse files, fuse main and > options parse Somehow patch 01 seems to mangled, it has windows style line break and git doesn't like that. -- Luiz Augusto von Dentz -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html