system/Error: move code to IsErrno()

This commit is contained in:
Max Kellermann 2019-07-09 18:17:41 +02:00
parent 13ce07d181
commit 75a592f629

View File

@ -147,6 +147,14 @@ FormatErrno(const char *fmt, Args&&... args) noexcept
return FormatErrno(errno, fmt, std::forward<Args>(args)...); return FormatErrno(errno, fmt, std::forward<Args>(args)...);
} }
gcc_pure
inline bool
IsErrno(const std::system_error &e, int code) noexcept
{
return e.code().category() == ErrnoCategory() &&
e.code().value() == code;
}
gcc_pure gcc_pure
static inline bool static inline bool
IsFileNotFound(const std::system_error &e) noexcept IsFileNotFound(const std::system_error &e) noexcept
@ -155,8 +163,7 @@ IsFileNotFound(const std::system_error &e) noexcept
return e.code().category() == std::system_category() && return e.code().category() == std::system_category() &&
e.code().value() == ERROR_FILE_NOT_FOUND; e.code().value() == ERROR_FILE_NOT_FOUND;
#else #else
return e.code().category() == ErrnoCategory() && return IsErrno(e, ENOENT);
e.code().value() == ENOENT;
#endif #endif
} }
@ -168,8 +175,7 @@ IsPathNotFound(const std::system_error &e) noexcept
return e.code().category() == std::system_category() && return e.code().category() == std::system_category() &&
e.code().value() == ERROR_PATH_NOT_FOUND; e.code().value() == ERROR_PATH_NOT_FOUND;
#else #else
return e.code().category() == ErrnoCategory() && return IsErrno(e, ENOTDIR);
e.code().value() == ENOTDIR;
#endif #endif
} }
@ -181,8 +187,7 @@ IsAccessDenied(const std::system_error &e) noexcept
return e.code().category() == std::system_category() && return e.code().category() == std::system_category() &&
e.code().value() == ERROR_ACCESS_DENIED; e.code().value() == ERROR_ACCESS_DENIED;
#else #else
return e.code().category() == ErrnoCategory() && return IsErrno(e, EACCES);
e.code().value() == EACCES;
#endif #endif
} }