From: Lennart Poettering Date: Fri, 26 Oct 2018 14:51:00 +0000 (+0200) Subject: stat-util: add fd_verify_directory(), similar to fd_verify_regular() X-Git-Tag: v240~175^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=844416b64c15f7b417d79bf64df9f475cf4d6047;p=thirdparty%2Fsystemd.git stat-util: add fd_verify_directory(), similar to fd_verify_regular() --- diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c index 3bef0dfe44f..8b63eb360b6 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); +} diff --git a/src/basic/stat-util.h b/src/basic/stat-util.h index 1a725f1da04..84400a6083b 100644 --- a/src/basic/stat-util.h +++ b/src/basic/stat-util.h @@ -59,3 +59,6 @@ int path_is_temporary_fs(const char *path); int stat_verify_regular(const struct stat *st); int fd_verify_regular(int fd); + +int stat_verify_directory(const struct stat *st); +int fd_verify_directory(int fd);