system/FileDescriptor: add method IsValid()

This commit is contained in:
Max Kellermann
2017-08-10 11:52:22 +02:00
parent 8c832f4c50
commit d310f3e9b7
2 changed files with 18 additions and 0 deletions

View File

@@ -57,6 +57,16 @@
#define O_CLOEXEC 0 #define O_CLOEXEC 0
#endif #endif
#ifndef _WIN32
bool
FileDescriptor::IsValid() const noexcept
{
return IsDefined() && fcntl(fd, F_GETFL) >= 0;
}
#endif
bool bool
FileDescriptor::Open(const char *pathname, int flags, mode_t mode) noexcept FileDescriptor::Open(const char *pathname, int flags, mode_t mode) noexcept
{ {

View File

@@ -64,6 +64,14 @@ public:
return fd >= 0; return fd >= 0;
} }
#ifndef _WIN32
/**
* Ask the kernel whether this is a valid file descriptor.
*/
gcc_pure
bool IsValid() const noexcept;
#endif
/** /**
* Returns the file descriptor. This may only be called if * Returns the file descriptor. This may only be called if
* IsDefined() returns true. * IsDefined() returns true.