diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2024-01-13 12:42:42 -0500 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2024-01-13 12:42:42 -0500 |
commit | e9588c49d5539ded993f720fc6855d6fa878c997 (patch) | |
tree | d827157c37f59335252ba874fd41604984775471 /src/bfstd.h | |
parent | d6cae04b54c1d58223e1719101b7c54d348e8d80 (diff) | |
download | bfs-e9588c49d5539ded993f720fc6855d6fa878c997.tar.xz |
bfstd: New {error,errno}_is_like() functions
We used to have is_nonexistence_error() to consistently treat ENOENT and
ENOTDIR the same. Recently, we started considering EFAULT the same as
ENAMETOOLONG on DragonFly BSD to work around a kernel bug. Unify both
of these behind a more generic interface.
Diffstat (limited to 'src/bfstd.h')
-rw-r--r-- | src/bfstd.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/bfstd.h b/src/bfstd.h index 0fcb892..8953b9b 100644 --- a/src/bfstd.h +++ b/src/bfstd.h @@ -45,9 +45,23 @@ // #include <errno.h> /** - * Return whether an error code is due to a path not existing. + * Check if an error code is "like" another one. For example, ENOTDIR is + * like ENOENT because they can both be triggered by non-existent paths. + * + * @param error + * The error code to check. + * @param category + * The category to test for. Known categories include ENOENT and + * ENAMETOOLONG. + * @return + * Whether the error belongs to the given category. + */ +bool error_is_like(int error, int category); + +/** + * Equivalent to error_is_like(errno, category). */ -bool is_nonexistence_error(int error); +bool errno_is_like(int category); #include <fcntl.h> |