From b82ffe72b3f72b8fc5e42464319bab69973c097f Mon Sep 17 00:00:00 2001
From: Ben Bridle <bridle.benjamin@gmail.com>
Date: Sun, 4 Aug 2024 13:09:04 +1200
Subject: Fix compilation on Linux

Some Windows-only library functions were added in during a previous
commit while I was developing on Windows.
---
 src/devices/file.rs                   | 8 ++++++++
 src/devices/file/directory_listing.rs | 6 ++++++
 2 files changed, 14 insertions(+)

(limited to 'src/devices')

diff --git a/src/devices/file.rs b/src/devices/file.rs
index fc1b56c..2a00a59 100644
--- a/src/devices/file.rs
+++ b/src/devices/file.rs
@@ -12,6 +12,8 @@ pub use directory_listing::*;
 pub use entry::*;
 use operations::*;
 
+#[cfg(target_family = "unix")]
+use std::os::unix::ffi::OsStrExt;
 use std::fs::{OpenOptions, metadata};
 use std::path::{Component, Path, PathBuf};
 
@@ -129,6 +131,9 @@ impl FileDevice {
                 let file_entry = Entry::File(BufferedFile::new(file));
                 self.entry = Some((file_entry, path.to_owned()));
                 let relative = remove_base(&path, &self.base_path).unwrap();
+                #[cfg(target_family = "unix")]
+                self.name_buffer.populate(relative.as_os_str().as_bytes());
+                #[cfg(target_family = "windows")]
                 self.name_buffer.populate(relative.as_os_str().as_encoded_bytes());
                 return Ok(());
             };
@@ -137,6 +142,9 @@ impl FileDevice {
                 let dir_entry = Entry::Directory(listing);
                 self.entry = Some((dir_entry, path.to_owned()));
                 let relative = remove_base(&path, &self.base_path).unwrap();
+                #[cfg(target_family = "unix")]
+                self.name_buffer.populate(relative.as_os_str().as_bytes());
+                #[cfg(target_family = "windows")]
                 self.name_buffer.populate(relative.as_os_str().as_encoded_bytes());
                 return Ok(());
             };
diff --git a/src/devices/file/directory_listing.rs b/src/devices/file/directory_listing.rs
index 6d669e5..341f353 100644
--- a/src/devices/file/directory_listing.rs
+++ b/src/devices/file/directory_listing.rs
@@ -21,6 +21,9 @@ impl DirectoryListing {
                 };
                 let entry = continue_on_err!(entry_result);
                 let path = continue_on_err!(remove_base(&entry.path(), &base));
+                #[cfg(target_family = "unix")]
+                let byte_path = path.as_os_str().as_bytes();
+                #[cfg(target_family = "windows")]
                 let byte_path = path.as_os_str().as_encoded_bytes();
                 if byte_path.len() > 255 {
                     continue;
@@ -107,6 +110,9 @@ pub fn remove_base(absolute_path: &Path, base_path: &Path) -> Result<PathBuf, ()
 // Returns true if a dot character directly follows the right-most
 // forward-slash character in the path.
 fn filename_dot_prefixed(path: &Path) -> bool {
+    #[cfg(target_family = "unix")]
+    let bytes = path.as_os_str().as_bytes();
+    #[cfg(target_family = "windows")]
     let bytes = path.as_os_str().as_encoded_bytes();
     // Find position of final forward-slash byte.
     let mut final_slash = None;
-- 
cgit v1.2.3-70-g09d2