]> git.lizzy.rs Git - rust.git/commitdiff
Improve Debug impl for File on Windows
authorPeter Atashian <retep998@gmail.com>
Mon, 20 Jul 2015 17:24:34 +0000 (13:24 -0400)
committerPeter Atashian <retep998@gmail.com>
Mon, 20 Jul 2015 17:24:34 +0000 (13:24 -0400)
Adds a path field if a path could be obtained

Signed-off-by: Peter Atashian <retep998@gmail.com>
src/libstd/sys/windows/fs.rs

index 890cc455d5df2a2816e3b2eeb9531e337b4a392e..424d24ea620dfcefc0d047f2958d6bbf0b03e2a8 100644 (file)
@@ -369,10 +369,13 @@ fn from_inner(handle: libc::HANDLE) -> File {
 
 impl fmt::Debug for File {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        // FIXME(#24570): add more info here (e.g. path, mode)
-        f.debug_struct("File")
-            .field("handle", &self.handle.raw())
-            .finish()
+        // FIXME(#24570): add more info here (e.g. mode)
+        let mut b = f.debug_struct("File");
+        b.field("handle", &self.handle.raw());
+        if let Ok(path) = get_path(&self) {
+            b.field("path", &path);
+        }
+        b.finish()
     }
 }
 
@@ -582,11 +585,7 @@ pub fn utimes(p: &Path, atime: u64, mtime: u64) -> io::Result<()> {
     Ok(())
 }
 
-pub fn canonicalize(p: &Path) -> io::Result<PathBuf> {
-
-    let mut opts = OpenOptions::new();
-    opts.read(true);
-    let f = try!(File::open(p, &opts));
+fn get_path(f: &File) -> io::Result<PathBuf> {
     super::fill_utf16_buf(|buf, sz| unsafe {
         c::GetFinalPathNameByHandleW(f.handle.raw(), buf, sz,
                                      libc::VOLUME_NAME_DOS)
@@ -595,6 +594,13 @@ pub fn canonicalize(p: &Path) -> io::Result<PathBuf> {
     })
 }
 
+pub fn canonicalize(p: &Path) -> io::Result<PathBuf> {
+    let mut opts = OpenOptions::new();
+    opts.read(true);
+    let f = try!(File::open(p, &opts));
+    get_path(&f)
+}
+
 pub fn copy(from: &Path, to: &Path) -> io::Result<u64> {
     unsafe extern "system" fn callback(
         _TotalFileSize: libc::LARGE_INTEGER,