summary refs log tree commit diff
path: root/src/libstd/fs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-03-13 01:00:02 +0000
committerbors <bors@rust-lang.org>2015-03-13 01:00:02 +0000
commit79dd393a4f144fa5e6f81c720c782de3175810d7 (patch)
tree06bfba9dd93f962fec59a068dcc218dfbc07db76 /src/libstd/fs
parentc9b03c24ec346e6405883032094f47805ef9c43e (diff)
parent42c4e481cd98bd392839144c9ac83e55e445a12a (diff)
downloadrust-79dd393a4f144fa5e6f81c720c782de3175810d7.tar.gz
rust-79dd393a4f144fa5e6f81c720c782de3175810d7.zip
Auto merge of #23229 - aturon:stab-path, r=alexcrichton
This commit stabilizes essentially all of the new `std::path` API. The
API itself is changed in a couple of ways (which brings it in closer
alignment with the RFC):

* `.` components are now normalized away, unless they appear at the
  start of a path. This in turn effects the semantics of e.g. asking for
  the file name of `foo/` or `foo/.`, both of which yield `Some("foo")`
  now. This semantics is what the original RFC specified, and is also
  desirable given early experience rolling out the new API.

* The `parent` method is now `without_file` and succeeds if, and only
  if, `file_name` is `Some(_)`. That means, in particular, that it fails
  for a path like `foo/../`. This change affects `pop` as well.

In addition, the `old_path` module is now deprecated.

[breaking-change]

r? @alexcrichton 
Diffstat (limited to 'src/libstd/fs')
-rw-r--r--src/libstd/fs/mod.rs14
1 files changed, 2 insertions, 12 deletions
diff --git a/src/libstd/fs/mod.rs b/src/libstd/fs/mod.rs
index 0faae7015a6..ac1f5993aa1 100644
--- a/src/libstd/fs/mod.rs
+++ b/src/libstd/fs/mod.rs
@@ -571,18 +571,8 @@ pub fn create_dir<P: AsPath + ?Sized>(path: &P) -> io::Result<()> {
 pub fn create_dir_all<P: AsPath + ?Sized>(path: &P) -> io::Result<()> {
     let path = path.as_path();
     if path.is_dir() { return Ok(()) }
-    match path.parent() {
-        Some(p) if p != path => try!(create_dir_all(p)),
-        _ => {}
-    }
-    // If the file name of the given `path` is blank then the creation of the
-    // parent directory will have taken care of the whole path for us, so we're
-    // good to go.
-    if path.file_name().is_none() {
-        Ok(())
-    } else {
-        create_dir(path)
-    }
+    if let Some(p) = path.parent() { try!(create_dir_all(p)) }
+    create_dir(path)
 }
 
 /// Remove an existing, empty directory