From 825f8c147ad0ff0ea44192d6f9e8db5f5f4e0603 Mon Sep 17 00:00:00 2001 From: Mikio Hara Date: Thu, 25 Aug 2011 19:22:46 -0400 Subject: [PATCH] net: move internal string manipulation routines to parse.go R=rsc CC=golang-dev https://golang.org/cl/4968044 --- src/pkg/net/interface.go | 12 ----------- src/pkg/net/ip.go | 36 +-------------------------------- src/pkg/net/parse.go | 43 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 47 deletions(-) diff --git a/src/pkg/net/interface.go b/src/pkg/net/interface.go index c69e6251b40..2696b7f4c58 100644 --- a/src/pkg/net/interface.go +++ b/src/pkg/net/interface.go @@ -83,18 +83,6 @@ error: return nil, os.NewError("invalid MAC address: " + s) } -// xtoi2 converts the next two hex digits of s into a byte. -// If s is longer than 2 bytes then the third byte must be e. -// If the first two bytes of s are not hex digits or the third byte -// does not match e, false is returned. -func xtoi2(s string, e byte) (byte, bool) { - if len(s) > 2 && s[2] != e { - return 0, false - } - n, ei, ok := xtoi(s[:2], 0) - return byte(n), ok && ei == 2 -} - // Interface represents a mapping between network interface name // and index. It also represents network interface facility // information. diff --git a/src/pkg/net/ip.go b/src/pkg/net/ip.go index 037ea083f37..474cec95a55 100644 --- a/src/pkg/net/ip.go +++ b/src/pkg/net/ip.go @@ -230,40 +230,6 @@ func (ip IP) Mask(mask IPMask) IP { return out } -// Convert i to decimal string. -func itod(i uint) string { - if i == 0 { - return "0" - } - - // Assemble decimal in reverse order. - var b [32]byte - bp := len(b) - for ; i > 0; i /= 10 { - bp-- - b[bp] = byte(i%10) + '0' - } - - return string(b[bp:]) -} - -// Convert i to hexadecimal string. -func itox(i uint) string { - if i == 0 { - return "0" - } - - // Assemble hexadecimal in reverse order. - var b [32]byte - bp := len(b) - for ; i > 0; i /= 16 { - bp-- - b[bp] = "0123456789abcdef"[byte(i%16)] - } - - return string(b[bp:]) -} - // String returns the string form of the IP address ip. // If the address is an IPv4 address, the string representation // is dotted decimal ("74.125.19.99"). Otherwise the representation @@ -317,7 +283,7 @@ func (ip IP) String() string { } else if i > 0 { s += ":" } - s += itox((uint(p[i]) << 8) | uint(p[i+1])) + s += itox((uint(p[i])<<8)|uint(p[i+1]), 1) } return s } diff --git a/src/pkg/net/parse.go b/src/pkg/net/parse.go index de46830d292..0d30a7ac609 100644 --- a/src/pkg/net/parse.go +++ b/src/pkg/net/parse.go @@ -159,6 +159,18 @@ func xtoi(s string, i0 int) (n int, i int, ok bool) { return n, i, true } +// xtoi2 converts the next two hex digits of s into a byte. +// If s is longer than 2 bytes then the third byte must be e. +// If the first two bytes of s are not hex digits or the third byte +// does not match e, false is returned. +func xtoi2(s string, e byte) (byte, bool) { + if len(s) > 2 && s[2] != e { + return 0, false + } + n, ei, ok := xtoi(s[:2], 0) + return byte(n), ok && ei == 2 +} + // Integer to decimal. func itoa(i int) string { var buf [30]byte @@ -181,6 +193,37 @@ func itoa(i int) string { return string(buf[n:]) } +// Convert i to decimal string. +func itod(i uint) string { + if i == 0 { + return "0" + } + + // Assemble decimal in reverse order. + var b [32]byte + bp := len(b) + for ; i > 0; i /= 10 { + bp-- + b[bp] = byte(i%10) + '0' + } + + return string(b[bp:]) +} + +// Convert i to hexadecimal string. +func itox(i uint, min int) string { + // Assemble hexadecimal in reverse order. + var b [32]byte + bp := len(b) + for ; i > 0 || min > 0; i /= 16 { + bp-- + b[bp] = "0123456789abcdef"[byte(i%16)] + min-- + } + + return string(b[bp:]) +} + // Number of occurrences of b in s. func count(s string, b byte) int { n := 0