11#include "utils/Portability.h"
12#include "utils/Range.h"
18#include <system_error>
42 ec.assign(errno, std::generic_category());
52 return S_ISREG(
status.st_mode);
53#elif !defined(S_ISREG) && defined(S_IFMT) && defined(S_IFREG)
54 return (
status.st_mode & S_IFMT) == S_IFREG;
56 static_assert(
false,
"No POSIX stat() support.");
68 return S_ISDIR(
status.st_mode);
69#elif !defined(S_ISDIR) && defined(S_IFMT) && defined(S_IFDIR)
70 return (
status.st_mode & S_IFMT) == S_IFDIR;
72 static_assert(
false,
"NO POSIX stat() support.");
84 std::error_code& ec)
noexcept {
85 auto stat =
status(path, ec);
87 return std::numeric_limits<uintmax_t>::max();
90 ec.assign(ENOTSUP, std::generic_category());
91 return std::numeric_limits<uintmax_t>::max();
Definition ErrorHolder.h:16
Range< const char * > StringPiece
Definition Range.h:130
std::uintmax_t file_size(StringPiece path, std::error_code &ec) noexcept
http://en.cppreference.com/w/cpp/filesystem/file_size
Definition FileSystem.h:80
file_status status(StringPiece path, std::error_code &ec) noexcept
http://en.cppreference.com/w/cpp/filesystem/status
Definition FileSystem.h:32
bool is_directory(file_status status) noexcept
http://en.cppreference.com/w/cpp/filesystem/is_directory
Definition FileSystem.h:64
bool is_regular_file(file_status status) noexcept
http://en.cppreference.com/w/cpp/filesystem/is_regular_file
Definition FileSystem.h:48
struct ::stat file_status
Definition FileSystem.h:28
void error(char *msg) const
Definition minigzip.c:356