]> git.feebdaed.xyz Git - 0xmirror/tokio.git/commitdiff
net: allow `pipe::OpenOptions::read_write` on Android (#7426)
authorMarshall Pierce <575695+marshallpierce@users.noreply.github.com>
Fri, 27 Jun 2025 07:39:55 +0000 (01:39 -0600)
committerGitHub <noreply@github.com>
Fri, 27 Jun 2025 07:39:55 +0000 (09:39 +0200)
tokio/src/net/unix/pipe.rs
tokio/tests/net_unix_pipe.rs

index 7c279134dbf4f857f74d65e4fb9ba5d3c5a257f3..65bd51ad8a1d6f57a1e7a24f0e0231172609ac0d 100644 (file)
@@ -120,7 +120,7 @@ pub fn pipe() -> io::Result<(Sender, Receiver)> {
 /// ```
 #[derive(Clone, Debug)]
 pub struct OpenOptions {
-    #[cfg(target_os = "linux")]
+    #[cfg(any(target_os = "linux", target_os = "android"))]
     read_write: bool,
     unchecked: bool,
 }
@@ -131,7 +131,7 @@ impl OpenOptions {
     /// All options are initially set to `false`.
     pub fn new() -> OpenOptions {
         OpenOptions {
-            #[cfg(target_os = "linux")]
+            #[cfg(any(target_os = "linux", target_os = "android"))]
             read_write: false,
             unchecked: false,
         }
@@ -168,8 +168,8 @@ impl OpenOptions {
     ///     .read_write(true)
     ///     .open_receiver("path/to/a/fifo");
     /// ```
-    #[cfg(target_os = "linux")]
-    #[cfg_attr(docsrs, doc(cfg(target_os = "linux")))]
+    #[cfg(any(target_os = "linux", target_os = "android"))]
+    #[cfg_attr(docsrs, doc(cfg(any(target_os = "linux", target_os = "android"))))]
     pub fn read_write(&mut self, value: bool) -> &mut Self {
         self.read_write = value;
         self
@@ -264,7 +264,7 @@ impl OpenOptions {
             .write(pipe_end == PipeEnd::Sender)
             .custom_flags(libc::O_NONBLOCK);
 
-        #[cfg(target_os = "linux")]
+        #[cfg(any(target_os = "linux", target_os = "android"))]
         if self.read_write {
             options.read(true).write(true);
         }
index d36610a1666110c076790eef978229300a6adce6..7169b5b61fe51887c873fc4e14a2cfaa757e6809 100644 (file)
@@ -68,7 +68,7 @@ async fn fifo_simple_send() -> io::Result<()> {
 }
 
 #[tokio::test]
-#[cfg(target_os = "linux")]
+#[cfg(any(target_os = "linux", target_os = "android"))]
 #[cfg_attr(miri, ignore)] // No `mkfifo` in miri.
 async fn fifo_simple_send_sender_first() -> io::Result<()> {
     const DATA: &[u8] = b"this is some data to write to the fifo";
@@ -134,7 +134,7 @@ async fn fifo_multiple_writes() -> io::Result<()> {
 /// Checks behavior of a resilient reader (Receiver in O_RDWR access mode)
 /// with writers sequentially opening and closing a FIFO.
 #[tokio::test]
-#[cfg(target_os = "linux")]
+#[cfg(any(target_os = "linux", target_os = "android"))]
 #[cfg_attr(miri, ignore)] // No `socket` in miri.
 async fn fifo_resilient_reader() -> io::Result<()> {
     const DATA: &[u8] = b"this is some data to write to the fifo";