stat-util: add statx_verify_directory() helper, similar to stat_verify_directory() but for statx
This commit is contained in:
@@ -90,6 +90,21 @@ int stat_verify_directory(const struct stat *st) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int statx_verify_directory(const struct statx *stx) {
|
||||
assert(stx);
|
||||
|
||||
if (!FLAGS_SET(stx->stx_mask, STATX_TYPE))
|
||||
return -ENODATA;
|
||||
|
||||
if (S_ISLNK(stx->stx_mode))
|
||||
return -ELOOP;
|
||||
|
||||
if (!S_ISDIR(stx->stx_mode))
|
||||
return -ENOTDIR;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int fd_verify_directory(int fd) {
|
||||
if (IN_SET(fd, AT_FDCWD, XAT_FDROOT))
|
||||
return 0;
|
||||
|
||||
@@ -11,6 +11,7 @@ int verify_regular_at(int fd, const char *path, bool follow);
|
||||
int fd_verify_regular(int fd);
|
||||
|
||||
int stat_verify_directory(const struct stat *st);
|
||||
int statx_verify_directory(const struct statx *stx);
|
||||
int fd_verify_directory(int fd);
|
||||
int is_dir_at(int fd, const char *path, bool follow);
|
||||
int is_dir(const char *path, bool follow);
|
||||
|
||||
Reference in New Issue
Block a user