summaryrefslogtreecommitdiffstats
path: root/src/pathutil.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/pathutil.rs')
-rw-r--r--src/pathutil.rs78
1 files changed, 1 insertions, 77 deletions
diff --git a/src/pathutil.rs b/src/pathutil.rs
index 073010be..085c9dbc 100644
--- a/src/pathutil.rs
+++ b/src/pathutil.rs
@@ -8,7 +8,6 @@ with the raw bytes directly.
On large repositories (like chromium), this can have a ~25% performance
improvement on just listing the files to search (!).
*/
-use std::ffi::OsStr;
use std::path::Path;
/// Strip `prefix` from the `path` and return the remainder.
@@ -19,6 +18,7 @@ pub fn strip_prefix<'a, P: AsRef<Path> + ?Sized>(
prefix: &'a P,
path: &'a Path,
) -> Option<&'a Path> {
+ use std::ffi::OsStr;
use std::os::unix::ffi::OsStrExt;
let prefix = prefix.as_ref().as_os_str().as_bytes();
@@ -40,79 +40,3 @@ pub fn strip_prefix<'a, P: AsRef<Path> + ?Sized>(
) -> Option<&'a Path> {
path.strip_prefix(prefix).ok()
}
-
-/// The final component of the path, if it is a normal file.
-///
-/// If the path terminates in ., .., or consists solely of a root of prefix,
-/// file_name will return None.
-#[cfg(unix)]
-pub fn file_name<'a, P: AsRef<Path> + ?Sized>(
- path: &'a P,
-) -> Option<&'a OsStr> {
- use std::os::unix::ffi::OsStrExt;
- use memchr::memrchr;
-
- let path = path.as_ref().as_os_str().as_bytes();
- if path.is_empty() {
- return None;
- } else if path.len() == 1 && path[0] == b'.' {
- return None;
- } else if path.last() == Some(&b'.') {
- return None;
- } else if path.len() >= 2 && &path[path.len() - 2..] == &b".."[..] {
- return None;
- }
- let last_slash = memrchr(b'/', path).map(|i| i + 1).unwrap_or(0);
- Some(OsStr::from_bytes(&path[last_slash..]))
-}
-
-/// The final component of the path, if it is a normal file.
-///
-/// If the path terminates in ., .., or consists solely of a root of prefix,
-/// file_name will return None.
-#[cfg(not(unix))]
-pub fn file_name<'a, P: AsRef<Path> + ?Sized>(
- path: &'a P,
-) -> Option<&'a OsStr> {
- path.as_ref().file_name()
-}
-
-/// Returns true if and only if this file path is considered to be hidden.
-#[cfg(unix)]
-pub fn is_hidden<P: AsRef<Path>>(path: P) -> bool {
- use std::os::unix::ffi::OsStrExt;
-
- if let Some(name) = file_name(path.as_ref()) {
- name.as_bytes().get(0) == Some(&b'.')
- } else {
- false
- }
-}
-
-/// Returns true if and only if this file path is considered to be hidden.
-#[cfg(not(unix))]
-pub fn is_hidden<P: AsRef<Path>>(path: P) -> bool {
- if let Some(name) = file_name(path.as_ref()) {
- name.to_str().map(|s| s.starts_with(".")).unwrap_or(false)
- } else {
- false
- }
-}
-
-/// Returns true if this file path is just a file name. i.e., Its parent is
-/// the empty string.
-#[cfg(unix)]
-pub fn is_file_name<P: AsRef<Path>>(path: P) -> bool {
- use std::os::unix::ffi::OsStrExt;
- use memchr::memchr;
-
- let path = path.as_ref().as_os_str().as_bytes();
- memchr(b'/', path).is_none()
-}
-
-/// Returns true if this file path is just a file name. i.e., Its parent is
-/// the empty string.
-#[cfg(not(unix))]
-pub fn is_file_name<P: AsRef<Path>>(path: P) -> bool {
- path.as_ref().parent().map(|p| p.as_os_str().is_empty()).unwrap_or(false)
-}