about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-01-29 14:46:32 +0100
committerGitHub <noreply@github.com>2022-01-29 14:46:32 +0100
commit2836dcd2dfaeb569060f8894f7b212e85e0eb834 (patch)
treea0b283a3809762b9b6c114acdbaa13783ac5b45e
parentf5f2d4426117375197d7c1ba3eec44a8f213123d (diff)
parentda0d506ace5dc5ec36cd1eafa37a0657fa61442e (diff)
downloadrust-2836dcd2dfaeb569060f8894f7b212e85e0eb834.tar.gz
rust-2836dcd2dfaeb569060f8894f7b212e85e0eb834.zip
Rollup merge of #93410 - solid-rs:feat-kmc-solid-net-dup, r=dtolnay
kmc-solid: Implement `net::FileDesc::duplicate`

This PR implements `std::sys::solid::net::FileDesc::duplicate`, which was accidentally left out when this target was added by #86191.
-rw-r--r--library/std/src/sys/solid/abi/sockets.rs3
-rw-r--r--library/std/src/sys/solid/net.rs2
2 files changed, 4 insertions, 1 deletions
diff --git a/library/std/src/sys/solid/abi/sockets.rs b/library/std/src/sys/solid/abi/sockets.rs
index 7c21d0dd25e..eb06a6dd927 100644
--- a/library/std/src/sys/solid/abi/sockets.rs
+++ b/library/std/src/sys/solid/abi/sockets.rs
@@ -175,6 +175,9 @@ extern "C" {
     #[link_name = "SOLID_NET_Close"]
     pub fn close(s: c_int) -> c_int;
 
+    #[link_name = "SOLID_NET_Dup"]
+    pub fn dup(s: c_int) -> c_int;
+
     #[link_name = "SOLID_NET_GetPeerName"]
     pub fn getpeername(s: c_int, name: *mut sockaddr, namelen: *mut socklen_t) -> c_int;
 
diff --git a/library/std/src/sys/solid/net.rs b/library/std/src/sys/solid/net.rs
index 63ba6341c79..c91ecce4d72 100644
--- a/library/std/src/sys/solid/net.rs
+++ b/library/std/src/sys/solid/net.rs
@@ -107,7 +107,7 @@ impl FileDesc {
     }
 
     fn duplicate(&self) -> io::Result<FileDesc> {
-        super::unsupported()
+        cvt(unsafe { netc::dup(self.fd) }).map(Self::new)
     }
 }