diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2017-09-06 22:42:26 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2017-09-06 22:42:26 -0400 |
commit | 4504dd3599404a916f104e0c715a9bcf3fb0062b (patch) | |
tree | 7cf605481dae9ce89096c429c634e70ee7c9240e /util.c | |
parent | c3dcb94d52ea36bc1cefa2ccd4a7f305ba4df889 (diff) | |
download | bfs-4504dd3599404a916f104e0c715a9bcf3fb0062b.tar.xz |
util: Factor out checks for nonexistent paths/broken links
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -226,10 +226,14 @@ const char *xbasename(const char *path) { return i; } +bool is_nonexistence_error(int error) { + return error == ENOENT || errno == ENOTDIR; +} + int xfstatat(int fd, const char *path, struct stat *buf, int flags) { int ret = fstatat(fd, path, buf, flags); - if (ret != 0 && !(flags & AT_SYMLINK_NOFOLLOW) && (errno == ENOENT || errno == ENOTDIR)) { + if (ret != 0 && !(flags & AT_SYMLINK_NOFOLLOW) && is_nonexistence_error(errno)) { flags |= AT_SYMLINK_NOFOLLOW; ret = fstatat(fd, path, buf, flags); } |