From ffd50b9cdfa38bc80f2444d917eef5a02c38c32f Mon Sep 17 00:00:00 2001 From: Marijn Haverbeke Date: Wed, 22 Feb 2012 13:18:15 +0100 Subject: Make the various from_str functions return options So that they can be used with user input without causing task failures. Closes #1335 --- src/libstd/net.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/libstd') diff --git a/src/libstd/net.rs b/src/libstd/net.rs index 68f8f29748a..2325598a2d3 100644 --- a/src/libstd/net.rs +++ b/src/libstd/net.rs @@ -49,10 +49,13 @@ 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| uint::from_str(s) }); + let parts = vec::map(str::split_byte(ip, "."[0]), {|s| + alt uint::from_str(s) { + some(n) if n <= 255u { n } + _ { fail "Invalid IP Address part." } + } + }); if vec::len(parts) != 4u { fail "Too many dots in IP address"; } - for i in parts { if i > 255u { fail "Invalid IP Address part."; } } ipv4(parts[0] as u8, parts[1] as u8, parts[2] as u8, parts[3] as u8) } -- cgit 1.4.1-3-g733a5