diff options
| author | Jeremy Soller <jackpot51@gmail.com> | 2016-11-14 12:15:11 -0700 |
|---|---|---|
| committer | Jeremy Soller <jackpot51@gmail.com> | 2016-11-14 12:15:11 -0700 |
| commit | a0b5dfef2a36a15f76476a9d6bb7184a701d0d3c (patch) | |
| tree | fb267b4d1c3ee73d0488590185f6042871174bd9 /src/libstd/sys | |
| parent | 0bb9a959074bb7f027cf05a240a0044116fa0ab0 (diff) | |
| download | rust-a0b5dfef2a36a15f76476a9d6bb7184a701d0d3c.tar.gz rust-a0b5dfef2a36a15f76476a9d6bb7184a701d0d3c.zip | |
Add fcntl
Diffstat (limited to 'src/libstd/sys')
| -rw-r--r-- | src/libstd/sys/redox/fd.rs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/libstd/sys/redox/fd.rs b/src/libstd/sys/redox/fd.rs index 786d7676612..47d2280fe05 100644 --- a/src/libstd/sys/redox/fd.rs +++ b/src/libstd/sys/redox/fd.rs @@ -49,13 +49,19 @@ impl FileDesc { } pub fn set_cloexec(&self) -> io::Result<()> { - ::sys_common::util::dumb_print(format_args!("{}: set cloexec\n", self.fd)); - unimplemented!(); + let mut flags = cvt(libc::fcntl(self.fd, libc::F_GETFL, 0))?; + flags |= libc::O_CLOEXEC; + cvt(libc::fcntl(self.fd, libc::F_SETFL, flags)).and(Ok(())) } - pub fn set_nonblocking(&self, _nonblocking: bool) -> io::Result<()> { - ::sys_common::util::dumb_print(format_args!("{}: set nonblocking\n", self.fd)); - unimplemented!(); + pub fn set_nonblocking(&self, nonblocking: bool) -> io::Result<()> { + let mut flags = cvt(libc::fcntl(self.fd, libc::F_GETFL, 0))?; + if nonblocking { + flags |= libc::O_NONBLOCK; + } else { + flags &= !libc::O_NONBLOCK; + } + cvt(libc::fcntl(self.fd, libc::F_SETFL, flags)).and(Ok(())) } pub fn duplicate(&self) -> io::Result<FileDesc> { |
