Add support for the -d (-o debug) option to libfuse. Currently works for FUSE
authorhelg <helg@openbsd.org>
Wed, 13 Dec 2017 12:30:18 +0000 (12:30 +0000)
committerhelg <helg@openbsd.org>
Wed, 13 Dec 2017 12:30:18 +0000 (12:30 +0000)
file systems that call fuse_parse_cmdline(3), fuse_main(3) or
fuse_setup(3).

ok mpi@, jca@

lib/libfuse/Makefile
lib/libfuse/debug.c
lib/libfuse/debug.h
lib/libfuse/fuse.c

index c1233ef..033deee 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: Makefile,v 1.10 2016/09/14 06:26:02 natano Exp $
+#      $OpenBSD: Makefile,v 1.11 2017/12/13 12:30:18 helg Exp $
 
 LIB=   fuse
 MAN=   fuse_main.3
@@ -12,7 +12,7 @@ CDIAGFLAGS+=  -Wwrite-strings -Wshadow -Wpointer-arith -Wsign-compare
 CDIAGFLAGS+=   -Wundef -Wbad-function-cast -Winline -Wcast-align
 
 # XXX Shouldn't we use a common fuse.h with proper ifdef _KERNEL part?
-CFLAGS+=       -I${.CURDIR} -DDEBUG
+CFLAGS+=       -I${.CURDIR}
 
 SRCS=  debug.c dict.c fuse.c fuse_ops.c fuse_opt.c fuse_subr.c tree.c
 HDRS=  fuse.h fuse_opt.h
index e626213..d782911 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: debug.c,v 1.1 2013/06/03 16:00:50 tedu Exp $  */
+/*     $OpenBSD: debug.c,v 1.2 2017/12/13 12:30:18 helg Exp $  */
 /*
  * Copyright (c) 2011 Alexandre Ratchov <alex@caoua.org>
  *
@@ -20,7 +20,6 @@
 
 #include "debug.h"
 
-#ifdef DEBUG
 /*
  * debug level, -1 means uninitialized
  */
@@ -31,10 +30,10 @@ ifuse_debug_init(void)
 {
        char *dbg;
 
+       /* Default to level 1 unless FUSE_DEBUG environment variable is set. */
        if (ifuse_debug < 0) {
                dbg = issetugid() ? NULL : getenv("FUSE_DEBUG");
                if (!dbg || sscanf(dbg, "%u", &ifuse_debug) != 1)
-                       ifuse_debug = 0;
+                       ifuse_debug = 1;
        }
 }
-#endif
index 4a23e9a..5869e0a 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: debug.h,v 1.1 2013/06/03 16:00:50 tedu Exp $  */
+/*     $OpenBSD: debug.h,v 1.2 2017/12/13 12:30:18 helg Exp $  */
 /*
  * Copyright (c) 2008 Alexandre Ratchov <alex@caoua.org>
  *
@@ -17,7 +17,6 @@
 #ifndef _DEBUG_H_
 #define _DEBUG_H_
 
-#ifdef DEBUG
 #include <stdio.h>
 
 #define DPRINTFN(n, ...)                                       \
 
 void ifuse_debug_init(void);
 extern int ifuse_debug;
-#else
-#define DPRINTF(...) do {} while(0)
-#define DPRINTFN(...) do {} while(0)
-#define DPERROR(s) do {} while(0)
-#endif
 
 #endif /* _DEBUG_H_ */
index dcd4d27..c0a31f0 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: fuse.c,v 1.36 2017/11/26 15:17:17 helg Exp $ */
+/* $OpenBSD: fuse.c,v 1.37 2017/12/13 12:30:18 helg Exp $ */
 /*
  * Copyright (c) 2013 Sylvestre Gallon <ccna.syl@gmail.com>
  *
@@ -37,6 +37,7 @@ static struct fuse_context *ictx = NULL;
 static int max_read = FUSEBUFMAXSIZE;
 
 enum {
+       KEY_DEBUG,
        KEY_FOREGROUND,
        KEY_HELP,
        KEY_HELP_WITHOUT_HEADER,
@@ -52,8 +53,8 @@ static struct fuse_opt fuse_core_opts[] = {
        FUSE_OPT_KEY("-V",                      KEY_VERSION),
        FUSE_OPT_KEY("--version",               KEY_VERSION),
        FUSE_OPT_KEY("max_read=",               KEY_MAXREAD),
-       FUSE_OPT_KEY("debug",                   KEY_STUB),
-       FUSE_OPT_KEY("-d",                      KEY_STUB),
+       FUSE_OPT_KEY("debug",                   KEY_DEBUG),
+       FUSE_OPT_KEY("-d",                      KEY_DEBUG),
        FUSE_OPT_KEY("-f",                      KEY_FOREGROUND),
        FUSE_OPT_KEY("-s",                      KEY_STUB),
        FUSE_OPT_KEY("use_ino",                 KEY_STUB),
@@ -410,6 +411,9 @@ ifuse_process_opt(void *data, const char *arg, int key,
        switch (key) {
                case KEY_STUB:
                        return (0);
+               case KEY_DEBUG:
+                       ifuse_debug_init();
+                       /* falls through */
                case KEY_FOREGROUND:
                        opt->foreground = 1;
                        return (0);
@@ -468,9 +472,6 @@ fuse_parse_cmdline(struct fuse_args *args, char **mp, int *mt, int *fg)
 {
        struct fuse_core_opt opt;
 
-#ifdef DEBUG
-       ifuse_debug_init();
-#endif
        bzero(&opt, sizeof(opt));
        if (fuse_opt_parse(args, &opt, fuse_core_opts, ifuse_process_opt) == -1)
                return (-1);