diff options
-rw-r--r-- | src/filesystem.c | 8 | ||||
-rw-r--r-- | src/filesystem.h | 4 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/filesystem.c b/src/filesystem.c index 4ba0bd9..dc72d93 100644 --- a/src/filesystem.c +++ b/src/filesystem.c @@ -32,6 +32,7 @@ # include <io.h> # define F_OK 0 # define mkdir(path, flags) _mkdir(path) +# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) #else # include <dirent.h> # include <unistd.h> @@ -240,6 +241,13 @@ lilv_path_exists(const char* path) #endif } +bool +lilv_is_directory(const char* path) +{ + struct stat st; + return !stat(path, &st) && S_ISDIR(st.st_mode); +} + int lilv_copy_file(const char* src, const char* dst) { diff --git a/src/filesystem.h b/src/filesystem.h index b43e394..09b8b5f 100644 --- a/src/filesystem.h +++ b/src/filesystem.h @@ -77,6 +77,10 @@ lilv_path_canonical(const char* path); bool lilv_path_exists(const char* path); +/// Return true iff `path` points to an existing directory +bool +lilv_is_directory(const char* path); + /** Copy the file at path `src` to path `dst`. |