about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorMarijn Haverbeke <marijnh@gmail.com>2012-02-23 13:41:10 +0100
committerMarijn Haverbeke <marijnh@gmail.com>2012-02-23 17:00:19 +0100
commitd802c1fbd2b3a9d1b16977379b93c5f3095d6f38 (patch)
tree331274f2a0310ea8a73acbb8a6499d94b45e754a /src/libstd
parent35e9192762f30ec893e4e72f49abffe7f77c4615 (diff)
downloadrust-d802c1fbd2b3a9d1b16977379b93c5f3095d6f38.tar.gz
rust-d802c1fbd2b3a9d1b16977379b93c5f3095d6f38.zip
Various cleanups and optimizations in core::str
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/fs.rs18
-rw-r--r--src/libstd/net.rs2
2 files changed, 6 insertions, 14 deletions
diff --git a/src/libstd/fs.rs b/src/libstd/fs.rs
index 3ba2f8b105a..8e835bad7f6 100644
--- a/src/libstd/fs.rs
+++ b/src/libstd/fs.rs
@@ -254,16 +254,9 @@ the first element of the returned vector will be the drive letter
 followed by a colon.
 */
 fn split(p: path) -> [path] {
-    // FIXME: use UTF-8 safe str, and/or various other string formats
-    let split1 = str::split_byte(p, os_fs::path_sep as u8);
-    let split2 = [];
-    for s in split1 {
-        split2 += str::split_byte(s, os_fs::alt_path_sep as u8);
-    }
-
-    // filter out ""
-    let split3 = vec::filter(split2, {|seg| "" != seg});
-    ret split3;
+    str::split_nonempty(p, {|c|
+        c == os_fs::path_sep || c == os_fs::alt_path_sep
+    })
 }
 
 /*
@@ -276,13 +269,12 @@ path includes directory components then they are included in the filename part
 of the result pair.
 */
 fn splitext(p: path) -> (str, str) {
-    // FIXME: use UTF-8 safe str, and/or various other string formats
     if str::is_empty(p) { ("", "") }
     else {
-        let parts = str::split_byte(p, '.' as u8);
+        let parts = str::split_char(p, '.');
         if vec::len(parts) > 1u {
             let base = str::connect(vec::init(parts), ".");
-            let ext = "." + option::get(vec::last(parts));
+            let ext = "." + vec::last_total(parts);
 
             fn is_dotfile(base: str) -> bool {
                 str::is_empty(base)
diff --git a/src/libstd/net.rs b/src/libstd/net.rs
index 2325598a2d3..06db7f7d7c8 100644
--- a/src/libstd/net.rs
+++ b/src/libstd/net.rs
@@ -49,7 +49,7 @@ Failure:
 String must be a valid IPv4 address
 */
 fn parse_addr(ip: str) -> ip_addr {
-    let parts = vec::map(str::split_byte(ip, "."[0]), {|s|
+    let parts = vec::map(str::split_char(ip, '.'), {|s|
         alt uint::from_str(s) {
           some(n) if n <= 255u { n }
           _ { fail "Invalid IP Address part." }