avoid reconfirming the root paths
authorRalph Ronnquist <ralph.ronnquist@gmail.com>
Sat, 13 Nov 2021 00:18:25 +0000 (11:18 +1100)
committerRalph Ronnquist <ralph.ronnquist@gmail.com>
Sat, 13 Nov 2021 00:18:25 +0000 (11:18 +1100)
binary_storage.c

index 3e4144111be32cadc1081ff74986c92104009166..e8eaba4564fba93768181f6a4c98d3e322715e34 100644 (file)
@@ -20,6 +20,7 @@
 #include "utils.h"
 #include "fuse_xattrs_config.h"
 #include "stringmem.h"
+#include "xattrs_config.h"
 
 #include <sys/xattr.h>
 
@@ -231,11 +232,22 @@ int __write_to_file(FILE *file, const char *name, const char *value, const size_
     return 0;
 }
 
+// Ensure existence of tail path from either source_dir or sidecar_dir
 static int ensure_dirs(char *path) {
     int n = strlen( path );
     char *p = stralloc( n+1 );
     memcpy( p, path, n+1 );
     char *e = p + 1;
+    if ( strncmp( path, xattrs_config.source_dir,
+                 xattrs_config.source_dir_size ) == 0 ) {
+       e += xattrs_config.source_dir_size;
+    } else if ( strncmp( path, xattrs_config.sidecar_dir,
+                        xattrs_config.sidecar_dir_size ) == 0 ) {
+       e += xattrs_config.sidecar_dir_size;
+    }
+    if ( e - p >= n ) {
+       return 0;
+    }
     for ( ;; ) {
        while ( *e && *e != '/' ) e++;
        if ( *e ) {