fix
diff --git a/lib/fuse.c b/lib/fuse.c
index d68ca5d..7d66a7d 100644
--- a/lib/fuse.c
+++ b/lib/fuse.c
@@ -1806,11 +1806,18 @@
     fuse_getcontext = func;
 }
 
+enum {
+    KEY_HELP,
+    KEY_KEEP
+};
+
 #define FUSE_LIB_OPT(t, p, v) { t, offsetof(struct fuse_config, p), v }
 
 static const struct fuse_opt fuse_lib_opts[] = {
-    FUSE_OPT_KEY("debug", 0),
-    FUSE_OPT_KEY("-d", 0),
+    FUSE_OPT_KEY("-h",                    KEY_HELP),
+    FUSE_OPT_KEY("--help",                KEY_HELP),
+    FUSE_OPT_KEY("debug",                 KEY_KEEP),
+    FUSE_OPT_KEY("-d",                    KEY_KEEP),
     FUSE_LIB_OPT("debug",                 debug, 1),
     FUSE_LIB_OPT("-d",                    debug, 1),
     FUSE_LIB_OPT("hard_remove",           hard_remove, 1),
@@ -1830,6 +1837,35 @@
     FUSE_OPT_END
 };
 
+static void fuse_lib_help(void)
+{
+    fprintf(stderr,
+            "    -o hard_remove         immediate removal (don't hide files)\n"
+            "    -o use_ino             let filesystem set inode numbers\n"
+            "    -o readdir_ino         try to fill in d_ino in readdir\n"
+            "    -o direct_io           use direct I/O\n"
+            "    -o kernel_cache        cache files in kernel\n"
+            "    -o umask=M             set file permissions (octal)\n"
+            "    -o uid=N               set file owner\n"
+            "    -o gid=N               set file group\n"
+            "    -o entry_timeout=T     cache timeout for names (1.0s)\n"
+            "    -o negative_timeout=T  cache timeout for deleted names (0.0s)\n"
+            "    -o attr_timeout=T      cache timeout for attributes (1.0s)\n"
+            "\n");
+}
+
+static int fuse_lib_opt_proc(void *data, const char *arg, int key,
+                             struct fuse_args *outargs)
+{
+    (void) data; (void) arg; (void) outargs;
+
+    if (key == KEY_HELP)
+        fuse_lib_help();
+
+    return 1;
+}
+
+
 int fuse_is_lib_option(const char *opt)
 {
     return fuse_lowlevel_is_lib_option(opt) ||
@@ -1859,7 +1895,7 @@
     f->conf.attr_timeout = 1.0;
     f->conf.negative_timeout = 0.0;
 
-    if (fuse_opt_parse(args, &f->conf, fuse_lib_opts, NULL) == -1)
+    if (fuse_opt_parse(args, &f->conf, fuse_lib_opts, fuse_lib_opt_proc) == -1)
             goto out_free;
 
 #ifdef __FreeBSD__