2009-01-19 Marek Habersack <mhabersack@novell.com>
[mono.git] / mcs / class / System / System.Net / IPv6Address.cs
index 494ea66dca765b05b05fa29e39efd89df7df8b0d..7e2e4ddcc36946232bd5f33e2dd978f26f60c96d 100644 (file)
@@ -34,6 +34,7 @@
 \r
 \r
 using System;\r
+using System.Globalization;\r
 using System.Net.Sockets;\r
 using System.Runtime.InteropServices;\r
 using System.Text;\r
@@ -132,6 +133,22 @@ namespace System.Net {
 \r
                        return slot;\r
                }\r
+\r
+               static bool TryParse (string prefix, out int res)\r
+               {\r
+#if NET_2_0\r
+                       return Int32.TryParse (prefix, NumberStyles.Integer, CultureInfo.InvariantCulture, out res);\r
+#else\r
+                       try {\r
+                               res = Int32.Parse (prefix, NumberStyles.Integer, CultureInfo.InvariantCulture);\r
+                       } catch (Exception) {\r
+                               res = -1;\r
+                               return false;\r
+                       }\r
+\r
+                       return true;\r
+#endif\r
+               }\r
                \r
                public static bool TryParse (string ipString, out IPv6Address result)\r
                {\r
@@ -152,11 +169,8 @@ namespace System.Net {
                        int pos = ipString.LastIndexOf ('/');\r
                        if (pos != -1) {\r
                                string prefix = ipString.Substring (pos + 1);\r
-                               try {\r
-                                       prefixLen = Int32.Parse (prefix);\r
-                               } catch (Exception) {\r
+                               if (!TryParse (prefix , out prefixLen))\r
                                        prefixLen = -1;\r
-                               }\r
                                if (prefixLen < 0 || prefixLen > 128)\r
                                        return false;\r
                                ipString = ipString.Substring (0, pos);\r
@@ -164,12 +178,8 @@ namespace System.Net {
                                pos = ipString.LastIndexOf ('%');\r
                                if (pos != -1) {\r
                                        string prefix = ipString.Substring (pos + 1);\r
-                                       try  {\r
-                                               scopeId = Int32.Parse (prefix);\r
-                                       } \r
-                                       catch (Exception) {\r
+                                       if (!TryParse (prefix, out scopeId))\r
                                                scopeId = 0;\r
-                                       }\r
                                        ipString = ipString.Substring (0, pos);\r
                                }                       \r
                        }\r
@@ -184,7 +194,7 @@ namespace System.Net {
                        // Is there an ipv4 address at the end?\r
                        //\r
                        bool ipv4 = false;\r
-                       int pos2 = ipString.LastIndexOf (":");\r
+                       int pos2 = ipString.LastIndexOf (':');\r
                        if (pos2 == -1)\r
                                return false;\r
 \r