Răsfoiți Sursa

Fix bug where xattr '@' characters weren't shown

The `--long` flag should show the '@' character in the permissions list if that feature has been compiled in, but only the `--extended` flag should actually show their keys, rather than just their presence.
Benjamin Sago 10 ani în urmă
părinte
comite
4c3266310d
1 a modificat fișierele cu 12 adăugiri și 15 ștergeri
  1. 12 15
      src/output/details.rs

+ 12 - 15
src/output/details.rs

@@ -214,6 +214,7 @@ impl Details {
         use num_cpus;
         use scoped_threadpool::Pool;
         use std::sync::{Arc, Mutex};
+        use feature::xattr;
 
         let mut pool = Pool::new(num_cpus::get() as u32);
         let mut file_eggs = Vec::new();
@@ -236,25 +237,21 @@ impl Details {
 
                 scoped.execute(move || {
                     let mut errors = Vec::new();
-
                     let mut xattrs = Vec::new();
-                    match file.path.attributes() {
-                        Ok(xs) => {
-                            if self.xattr {
-                                for xattr in xs {
-                                    xattrs.push(xattr);
-                                }
-                            }
-                        },
-                        Err(e) => {
-                            if self.xattr {
-                                errors.push((e, None));
-                            }
-                        },
-                    };
+
+                    if xattr::ENABLED {
+                        match file.path.attributes() {
+                            Ok(xs) => xattrs.extend(xs),
+                            Err(e) => errors.push((e, None)),
+                        };
+                    }
 
                     let cells = table.cells_for_file(&file, !xattrs.is_empty());
 
+                    if !table.opts.xattr {
+                        xattrs.clear();
+                    }
+
                     let mut dir = None;
 
                     if let Some(r) = self.recurse {