summaryrefslogtreecommitdiff
path: root/src/basic/stat-util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2018-10-26 16:51:00 +0200
committerLennart Poettering <lennart@poettering.net>2018-11-26 18:09:01 +0100
commit844416b64c15f7b417d79bf64df9f475cf4d6047 (patch)
tree4a5bb769bcaa05fd97d861609512ace1ed68e23e /src/basic/stat-util.c
parent0c9448fa8201ad2e2a2dde57f4d4b7e48a34c522 (diff)
downloadsystemd-844416b64c15f7b417d79bf64df9f475cf4d6047.tar.gz
stat-util: add fd_verify_directory(), similar to fd_verify_regular()
Diffstat (limited to 'src/basic/stat-util.c')
-rw-r--r--src/basic/stat-util.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c
index 3bef0dfe44..8b63eb360b 100644
--- a/src/basic/stat-util.c
+++ b/src/basic/stat-util.c
@@ -296,3 +296,26 @@ int fd_verify_regular(int fd) {
return stat_verify_regular(&st);
}
+
+int stat_verify_directory(const struct stat *st) {
+ assert(st);
+
+ if (S_ISLNK(st->st_mode))
+ return -ELOOP;
+
+ if (!S_ISDIR(st->st_mode))
+ return -ENOTDIR;
+
+ return 0;
+}
+
+int fd_verify_directory(int fd) {
+ struct stat st;
+
+ assert(fd >= 0);
+
+ if (fstat(fd, &st) < 0)
+ return -errno;
+
+ return stat_verify_directory(&st);
+}