feature: remove/rename sidecar when removing/renaming files.
[rrq/fuse_xattrs.git] / utils.c
diff --git a/utils.c b/utils.c
index 71fe009076b16390cbef5af1030603b734f25196..2f935ab83c02b4b326dcdcf491bdc47eeb570ece 100644 (file)
--- a/utils.c
+++ b/utils.c
@@ -10,6 +10,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <sys/stat.h>
 
 #include "utils.h"
 #include "fuse_xattrs_config.h"
@@ -28,6 +29,34 @@ char *prepend_source_directory(const char *b) {
     return dst;
 }
 
+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;
+}
+
+int is_regular_file(const char *path) {
+    struct stat statbuf;
+    if (stat(path, &statbuf) != 0) {
+        return -1;
+    }
+
+    if (!S_ISREG(statbuf.st_mode)) {
+        return -1;
+    }
+
+    return 1;
+}
+
 char *get_sidecar_path(const char *path)
 {
     const size_t path_len = strlen(path);