diff options
author | Lennart Poettering <lennart@poettering.net> | 2018-10-26 16:51:00 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2018-11-26 18:09:01 +0100 |
commit | 844416b64c15f7b417d79bf64df9f475cf4d6047 (patch) | |
tree | 4a5bb769bcaa05fd97d861609512ace1ed68e23e /src/basic/stat-util.c | |
parent | 0c9448fa8201ad2e2a2dde57f4d4b7e48a34c522 (diff) | |
download | systemd-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.c | 23 |
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); +} |