From be55e95636126cb943be70a54154a55fb720c2b9 Mon Sep 17 00:00:00 2001 From: Ronaldo Ferreira Date: Tue, 17 Apr 2018 15:29:30 +0200 Subject: [PATCH] Make it work with macOS --- Cargo.toml | 2 +- src/lib.rs | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 525bfbd..439acea 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dutree" -version = "0.2.6" +version = "0.2.7" authors = ["nacho "] description = "Command line tool to analyze disk usage" repository = "https://github.com/nachoparker/dutree" diff --git a/src/lib.rs b/src/lib.rs index 40b52bd..f479a60 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -52,11 +52,14 @@ use regex::Regex; use std::io; use std::path::{Path, PathBuf}; use std::fs; +#[cfg(target_os = "linux")] use std::os::linux::fs::MetadataExt; +#[cfg(target_os = "macos")] +use std::os::unix::fs::MetadataExt; use std::env; use std::collections::HashMap; -const VERSTR : &str = "v0.2.6"; +const VERSTR : &str = "v0.2.7"; const DEF_WIDTH : u16 = 80; pub enum XResult { @@ -227,7 +230,10 @@ fn try_read_dir( path : &Path ) -> Option { fn try_bytes_from_path( path : &Path, usage_flag : bool ) -> u64 { match path.symlink_metadata() { + #[cfg(target_os = "linux")] Ok(metadata) => if usage_flag { metadata.st_blocks()*512 } else { metadata.st_size() }, + #[cfg(target_os = "macos")] + Ok(metadata) => if usage_flag { metadata.blocks()*512 } else { metadata.size() }, Err(err) => { print_io_error( path, err ); 0 @@ -480,7 +486,10 @@ fn color_from_path<'a>( path : &Path, color_dict : &'a HashMap ) } let metadata = path.symlink_metadata(); if metadata.is_ok() { + #[cfg(target_os = "linux")] let mode = metadata.unwrap().st_mode(); + #[cfg(target_os = "macos")] + let mode = metadata.unwrap().mode(); if path.is_dir() { if mode & 0o002 != 0 { // dir other writable if let Some( col ) = color_dict.get( &"ow".to_string() ) {