mirror of
https://github.com/matrix-construct/construct
synced 2024-12-28 00:14:07 +01:00
ircd::fs: Add fd::opts getter from open fd.
This commit is contained in:
parent
d08bcc2f32
commit
7d55468511
2 changed files with 24 additions and 0 deletions
|
@ -33,6 +33,7 @@ struct ircd::fs::fd
|
||||||
operator const int &() const;
|
operator const int &() const;
|
||||||
operator bool() const;
|
operator bool() const;
|
||||||
bool operator!() const;
|
bool operator!() const;
|
||||||
|
opts options() const;
|
||||||
|
|
||||||
int release() noexcept;
|
int release() noexcept;
|
||||||
|
|
||||||
|
|
23
ircd/fs.cc
23
ircd/fs.cc
|
@ -1630,6 +1630,29 @@ noexcept
|
||||||
return fdno;
|
return fdno;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ircd::fs::fd::opts
|
||||||
|
ircd::fs::fd::options()
|
||||||
|
const
|
||||||
|
{
|
||||||
|
opts ret;
|
||||||
|
ret.flags = syscall(::fcntl, int(*this), F_GETFL, 0);
|
||||||
|
|
||||||
|
if((ret.flags & O_RDONLY) == O_RDONLY)
|
||||||
|
ret.mode = std::ios::in;
|
||||||
|
|
||||||
|
if((ret.flags & O_WRONLY) == O_WRONLY)
|
||||||
|
ret.mode = std::ios::out;
|
||||||
|
|
||||||
|
if((ret.flags & O_RDWR) == O_RDWR)
|
||||||
|
ret.mode = std::ios::in | std::ios::out;
|
||||||
|
|
||||||
|
ret.direct = ret.flags & O_DIRECT;
|
||||||
|
ret.cloexec = ret.flags & O_CLOEXEC;
|
||||||
|
ret.nocreate = ~ret.flags & O_CREAT;
|
||||||
|
ret.blocking = ret.flags & O_NONBLOCK;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// fs/device.h
|
// fs/device.h
|
||||||
|
|
Loading…
Reference in a new issue