.travis.yml: specify more dependencies.
[rrq/fuse_xattrs.git] / fuse_xattrs.c
index 48e136b0796ea94ea840912d2138452002ffbc8f..242e1717f1d27e43aeda694e77e260ba7dd6eeb3 100644 (file)
@@ -53,7 +53,7 @@ static int xmp_setxattr(const char *path, const char *name, const char *value, s
         return -ENOSPC;
     }
 
-    char *_path = prepend_source_directory(xattrs_config.source_dir, path);
+    char *_path = prepend_source_directory(path);
 
 #ifdef DEBUG
     char *sanitized_value = sanitize_value(value, size);
@@ -84,7 +84,7 @@ static int xmp_getxattr(const char *path, const char *name, char *value, size_t
         return -ERANGE;
     }
 
-    char *_path = prepend_source_directory(xattrs_config.source_dir, path);
+    char *_path = prepend_source_directory(path);
     debug_print("path=%s name=%s size=%zu\n", _path, name, size);
     int rtval = binary_storage_read_key(_path, name, value, size);
     free(_path);
@@ -103,7 +103,7 @@ static int xmp_listxattr(const char *path, char *list, size_t size)
         return -E2BIG;
     }
 
-    char *_path = prepend_source_directory(xattrs_config.source_dir, path);
+    char *_path = prepend_source_directory(path);
     debug_print("path=%s size=%zu\n", _path, size);
     int rtval = binary_storage_list_keys(_path, list, size);
     free(_path);
@@ -126,7 +126,7 @@ static int xmp_removexattr(const char *path, const char *name)
         return -ERANGE;
     }
 
-    char *_path = prepend_source_directory(xattrs_config.source_dir, path);
+    char *_path = prepend_source_directory(path);
     debug_print("path=%s name=%s\n", _path, name);
     int rtval = binary_storage_remove_key(_path, name);
     free(_path);
@@ -167,22 +167,6 @@ static struct fuse_operations xmp_oper = {
         .removexattr = xmp_removexattr,
 };
 
-
-int is_directory(const char *path) {
-    struct stat statbuf;
-    if (stat(path, &statbuf) != 0) {
-        fprintf(stderr, "cannot get source directory status: %s\n", path);
-        return -1;
-    }
-
-    if (!S_ISDIR(statbuf.st_mode)) {
-        fprintf(stderr, "source directory must be a directory: %s\n", path);
-        return -1;
-    }
-
-    return 1;
-}
-
 /**
  * Check if the path is valid. If it's a relative path,
  * prepend the working path.
@@ -249,6 +233,7 @@ static int xattrs_opt_proc(void *data, const char *arg, int key,
         case FUSE_OPT_KEY_NONOPT:
             if (!xattrs_config.source_dir) {
                 xattrs_config.source_dir = sanitized_source_directory(arg);
+                xattrs_config.source_dir_size = strlen(xattrs_config.source_dir);
                 return 0;
             }
             break;
@@ -294,5 +279,8 @@ int main(int argc, char *argv[]) {
     }
 
     umask(0);
+
+    // disable multi-threading
+    fuse_opt_add_arg(&args, "-s");
     return fuse_main(args.argc, args.argv, &xmp_oper, NULL);
 }