From ec072bb718e79cd3ee24eab3e5d041dfb7ff6e11 Mon Sep 17 00:00:00 2001
From: Jeremy Soller <jeremy@system76.com>
Date: Sun, 28 Apr 2019 13:32:43 -0600
Subject: [PATCH] Return correct error for fevent on files

---
 src/mount/redox/scheme.rs | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/mount/redox/scheme.rs b/src/mount/redox/scheme.rs
index 8d5dc9f..e905e39 100644
--- a/src/mount/redox/scheme.rs
+++ b/src/mount/redox/scheme.rs
@@ -494,6 +494,16 @@ impl<D: Disk> Scheme for FileScheme<D> {
         }
     }
 
+    fn fevent(&self, id: usize, flags: usize) -> Result<usize> {
+        let files = self.files.borrow_mut();
+        if let Some(file) = files.get(&id) {
+            // EPERM is returned for files that are always readable or writable
+            Err(Error::new(EPERM))
+        } else {
+            Err(Error::new(EBADF))
+        }
+    }
+
     fn fpath(&self, id: usize, buf: &mut [u8]) -> Result<usize> {
         // println!("Fpath {}, {:X} {}", id, buf.as_ptr() as usize, buf.len());
         let files = self.files.borrow_mut();
-- 
GitLab