Commit 4c772cda authored by Brad Fitzpatrick's avatar Brad Fitzpatrick

all: use strings.IndexByte instead of Index where possible

R=golang-dev, khr
CC=golang-dev
https://golang.org/cl/12486043
parent dd6f49dd
...@@ -115,7 +115,7 @@ func DecryptPEMBlock(b *pem.Block, password []byte) ([]byte, error) { ...@@ -115,7 +115,7 @@ func DecryptPEMBlock(b *pem.Block, password []byte) ([]byte, error) {
return nil, errors.New("x509: no DEK-Info header in block") return nil, errors.New("x509: no DEK-Info header in block")
} }
idx := strings.Index(dek, ",") idx := strings.IndexByte(dek, ',')
if idx == -1 { if idx == -1 {
return nil, errors.New("x509: malformed DEK-Info header") return nil, errors.New("x509: malformed DEK-Info header")
} }
......
...@@ -40,7 +40,7 @@ func (s *Sym) Static() bool { return s.Type >= 'a' } ...@@ -40,7 +40,7 @@ func (s *Sym) Static() bool { return s.Type >= 'a' }
// PackageName returns the package part of the symbol name, // PackageName returns the package part of the symbol name,
// or the empty string if there is none. // or the empty string if there is none.
func (s *Sym) PackageName() string { func (s *Sym) PackageName() string {
if i := strings.Index(s.Name, "."); i != -1 { if i := strings.IndexByte(s.Name, '.'); i != -1 {
return s.Name[0:i] return s.Name[0:i]
} }
return "" return ""
...@@ -49,7 +49,7 @@ func (s *Sym) PackageName() string { ...@@ -49,7 +49,7 @@ func (s *Sym) PackageName() string {
// ReceiverName returns the receiver type name of this symbol, // ReceiverName returns the receiver type name of this symbol,
// or the empty string if there is none. // or the empty string if there is none.
func (s *Sym) ReceiverName() string { func (s *Sym) ReceiverName() string {
l := strings.Index(s.Name, ".") l := strings.IndexByte(s.Name, '.')
r := strings.LastIndex(s.Name, ".") r := strings.LastIndex(s.Name, ".")
if l == -1 || r == -1 || l == r { if l == -1 || r == -1 || l == r {
return "" return ""
......
...@@ -15,7 +15,7 @@ type tagOptions string ...@@ -15,7 +15,7 @@ type tagOptions string
// parseTag splits a struct field's json tag into its name and // parseTag splits a struct field's json tag into its name and
// comma-separated options. // comma-separated options.
func parseTag(tag string) (string, tagOptions) { func parseTag(tag string) (string, tagOptions) {
if idx := strings.Index(tag, ","); idx != -1 { if idx := strings.IndexByte(tag, ','); idx != -1 {
return tag[:idx], tagOptions(tag[idx+1:]) return tag[:idx], tagOptions(tag[idx+1:])
} }
return tag, tagOptions("") return tag, tagOptions("")
...@@ -31,7 +31,7 @@ func (o tagOptions) Contains(optionName string) bool { ...@@ -31,7 +31,7 @@ func (o tagOptions) Contains(optionName string) bool {
s := string(o) s := string(o)
for s != "" { for s != "" {
var next string var next string
i := strings.Index(s, ",") i := strings.IndexByte(s, ',')
if i >= 0 { if i >= 0 {
s, next = s[:i], s[i+1:] s, next = s[:i], s[i+1:]
} }
......
...@@ -113,7 +113,7 @@ func structFieldInfo(typ reflect.Type, f *reflect.StructField) (*fieldInfo, erro ...@@ -113,7 +113,7 @@ func structFieldInfo(typ reflect.Type, f *reflect.StructField) (*fieldInfo, erro
// Split the tag from the xml namespace if necessary. // Split the tag from the xml namespace if necessary.
tag := f.Tag.Get("xml") tag := f.Tag.Get("xml")
if i := strings.Index(tag, " "); i >= 0 { if i := strings.IndexByte(tag, ' '); i >= 0 {
finfo.xmlns, tag = tag[:i], tag[i+1:] finfo.xmlns, tag = tag[:i], tag[i+1:]
} }
......
...@@ -1026,7 +1026,7 @@ func (d *Decoder) nsname() (name Name, ok bool) { ...@@ -1026,7 +1026,7 @@ func (d *Decoder) nsname() (name Name, ok bool) {
if !ok { if !ok {
return return
} }
i := strings.Index(s, ":") i := strings.IndexByte(s, ':')
if i < 0 { if i < 0 {
name.Local = s name.Local = s
} else { } else {
......
...@@ -877,7 +877,7 @@ func (ctxt *Context) saveCgo(filename string, di *Package, cg *ast.CommentGroup) ...@@ -877,7 +877,7 @@ func (ctxt *Context) saveCgo(filename string, di *Package, cg *ast.CommentGroup)
// Split at colon. // Split at colon.
line = strings.TrimSpace(line[4:]) line = strings.TrimSpace(line[4:])
i := strings.Index(line, ":") i := strings.IndexByte(line, ':')
if i < 0 { if i < 0 {
return fmt.Errorf("%s: invalid #cgo line: %s", filename, orig) return fmt.Errorf("%s: invalid #cgo line: %s", filename, orig)
} }
...@@ -1022,7 +1022,7 @@ func (ctxt *Context) match(name string) bool { ...@@ -1022,7 +1022,7 @@ func (ctxt *Context) match(name string) bool {
if name == "" { if name == "" {
return false return false
} }
if i := strings.Index(name, ","); i >= 0 { if i := strings.IndexByte(name, ','); i >= 0 {
// comma-separated list // comma-separated list
return ctxt.match(name[:i]) && ctxt.match(name[i+1:]) return ctxt.match(name[:i]) && ctxt.match(name[i+1:])
} }
...@@ -1076,7 +1076,7 @@ func (ctxt *Context) match(name string) bool { ...@@ -1076,7 +1076,7 @@ func (ctxt *Context) match(name string) bool {
// name_$(GOOS)_$(GOARCH)_test.* // name_$(GOOS)_$(GOARCH)_test.*
// //
func (ctxt *Context) goodOSArchFile(name string) bool { func (ctxt *Context) goodOSArchFile(name string) bool {
if dot := strings.Index(name, "."); dot != -1 { if dot := strings.IndexByte(name, '.'); dot != -1 {
name = name[:dot] name = name[:dot]
} }
l := strings.Split(name, "_") l := strings.Split(name, "_")
......
...@@ -474,7 +474,7 @@ func stripCommonPrefix(lines []string) { ...@@ -474,7 +474,7 @@ func stripCommonPrefix(lines []string) {
* Check for vertical "line of stars" and correct prefix accordingly. * Check for vertical "line of stars" and correct prefix accordingly.
*/ */
lineOfStars := false lineOfStars := false
if i := strings.Index(prefix, "*"); i >= 0 { if i := strings.IndexByte(prefix, '*'); i >= 0 {
// Line of stars present. // Line of stars present.
if i > 0 && prefix[i-1] == ' ' { if i > 0 && prefix[i-1] == ' ' {
i-- // remove trailing blank from prefix so stars remain aligned i-- // remove trailing blank from prefix so stars remain aligned
......
...@@ -429,7 +429,7 @@ func (z *Rat) SetString(s string) (*Rat, bool) { ...@@ -429,7 +429,7 @@ func (z *Rat) SetString(s string) (*Rat, bool) {
} }
// check for a quotient // check for a quotient
sep := strings.Index(s, "/") sep := strings.IndexByte(s, '/')
if sep >= 0 { if sep >= 0 {
if _, ok := z.a.SetString(s[0:sep], 10); !ok { if _, ok := z.a.SetString(s[0:sep], 10); !ok {
return nil, false return nil, false
...@@ -443,7 +443,7 @@ func (z *Rat) SetString(s string) (*Rat, bool) { ...@@ -443,7 +443,7 @@ func (z *Rat) SetString(s string) (*Rat, bool) {
} }
// check for a decimal point // check for a decimal point
sep = strings.Index(s, ".") sep = strings.IndexByte(s, '.')
// check for an exponent // check for an exponent
e := strings.IndexAny(s, "eE") e := strings.IndexAny(s, "eE")
var exp Int var exp Int
......
...@@ -18,7 +18,7 @@ import ( ...@@ -18,7 +18,7 @@ import (
// When any of the arguments result in a standard violation then // When any of the arguments result in a standard violation then
// FormatMediaType returns the empty string. // FormatMediaType returns the empty string.
func FormatMediaType(t string, param map[string]string) string { func FormatMediaType(t string, param map[string]string) string {
slash := strings.Index(t, "/") slash := strings.IndexByte(t, '/')
if slash == -1 { if slash == -1 {
return "" return ""
} }
...@@ -91,7 +91,7 @@ func checkMediaTypeDisposition(s string) error { ...@@ -91,7 +91,7 @@ func checkMediaTypeDisposition(s string) error {
// The returned map, params, maps from the lowercase // The returned map, params, maps from the lowercase
// attribute to the attribute value with its case preserved. // attribute to the attribute value with its case preserved.
func ParseMediaType(v string) (mediatype string, params map[string]string, err error) { func ParseMediaType(v string) (mediatype string, params map[string]string, err error) {
i := strings.Index(v, ";") i := strings.IndexByte(v, ';')
if i == -1 { if i == -1 {
i = len(v) i = len(v)
} }
...@@ -127,7 +127,7 @@ func ParseMediaType(v string) (mediatype string, params map[string]string, err e ...@@ -127,7 +127,7 @@ func ParseMediaType(v string) (mediatype string, params map[string]string, err e
} }
pmap := params pmap := params
if idx := strings.Index(key, "*"); idx != -1 { if idx := strings.IndexByte(key, '*'); idx != -1 {
baseName := key[:idx] baseName := key[:idx]
if continuation == nil { if continuation == nil {
continuation = make(map[string]map[string]string) continuation = make(map[string]map[string]string)
......
...@@ -40,7 +40,7 @@ func Request() (*http.Request, error) { ...@@ -40,7 +40,7 @@ func Request() (*http.Request, error) {
func envMap(env []string) map[string]string { func envMap(env []string) map[string]string {
m := make(map[string]string) m := make(map[string]string)
for _, kv := range env { for _, kv := range env {
if idx := strings.Index(kv, "="); idx != -1 { if idx := strings.IndexByte(kv, '='); idx != -1 {
m[kv[:idx]] = kv[idx+1:] m[kv[:idx]] = kv[idx+1:]
} }
} }
......
...@@ -47,7 +47,7 @@ func readSetCookies(h Header) []*Cookie { ...@@ -47,7 +47,7 @@ func readSetCookies(h Header) []*Cookie {
continue continue
} }
parts[0] = strings.TrimSpace(parts[0]) parts[0] = strings.TrimSpace(parts[0])
j := strings.Index(parts[0], "=") j := strings.IndexByte(parts[0], '=')
if j < 0 { if j < 0 {
continue continue
} }
...@@ -71,7 +71,7 @@ func readSetCookies(h Header) []*Cookie { ...@@ -71,7 +71,7 @@ func readSetCookies(h Header) []*Cookie {
} }
attr, val := parts[i], "" attr, val := parts[i], ""
if j := strings.Index(attr, "="); j >= 0 { if j := strings.IndexByte(attr, '='); j >= 0 {
attr, val = attr[:j], attr[j+1:] attr, val = attr[:j], attr[j+1:]
} }
lowerAttr := strings.ToLower(attr) lowerAttr := strings.ToLower(attr)
...@@ -188,7 +188,7 @@ func readCookies(h Header, filter string) []*Cookie { ...@@ -188,7 +188,7 @@ func readCookies(h Header, filter string) []*Cookie {
continue continue
} }
name, val := parts[i], "" name, val := parts[i], ""
if j := strings.Index(name, "="); j >= 0 { if j := strings.IndexByte(name, '='); j >= 0 {
name, val = name[:j], name[j+1:] name, val = name[:j], name[j+1:]
} }
if !isCookieNameValid(name) { if !isCookieNameValid(name) {
......
...@@ -467,7 +467,7 @@ func parseRange(s string, size int64) ([]httpRange, error) { ...@@ -467,7 +467,7 @@ func parseRange(s string, size int64) ([]httpRange, error) {
if ra == "" { if ra == "" {
continue continue
} }
i := strings.Index(ra, "-") i := strings.IndexByte(ra, '-')
if i < 0 { if i < 0 {
return nil, errors.New("invalid range") return nil, errors.New("invalid range")
} }
......
...@@ -408,7 +408,7 @@ func ParseHTTPVersion(vers string) (major, minor int, ok bool) { ...@@ -408,7 +408,7 @@ func ParseHTTPVersion(vers string) (major, minor int, ok bool) {
if !strings.HasPrefix(vers, "HTTP/") { if !strings.HasPrefix(vers, "HTTP/") {
return 0, 0, false return 0, 0, false
} }
dot := strings.Index(vers, ".") dot := strings.IndexByte(vers, '.')
if dot < 0 { if dot < 0 {
return 0, 0, false return 0, 0, false
} }
...@@ -473,8 +473,8 @@ func (r *Request) SetBasicAuth(username, password string) { ...@@ -473,8 +473,8 @@ func (r *Request) SetBasicAuth(username, password string) {
// parseRequestLine parses "GET /foo HTTP/1.1" into its three parts. // parseRequestLine parses "GET /foo HTTP/1.1" into its three parts.
func parseRequestLine(line string) (method, requestURI, proto string, ok bool) { func parseRequestLine(line string) (method, requestURI, proto string, ok bool) {
s1 := strings.Index(line, " ") s1 := strings.IndexByte(line, ' ')
s2 := strings.Index(line[s1+1:], " ") s2 := strings.IndexByte(line[s1+1:], ' ')
if s1 < 0 || s2 < 0 { if s1 < 0 || s2 < 0 {
return return
} }
......
...@@ -1262,7 +1262,7 @@ func Redirect(w ResponseWriter, r *Request, urlStr string, code int) { ...@@ -1262,7 +1262,7 @@ func Redirect(w ResponseWriter, r *Request, urlStr string, code int) {
} }
var query string var query string
if i := strings.Index(urlStr, "?"); i != -1 { if i := strings.IndexByte(urlStr, '?'); i != -1 {
urlStr, query = urlStr[:i], urlStr[i:] urlStr, query = urlStr[:i], urlStr[i:]
} }
...@@ -1494,7 +1494,7 @@ func (mux *ServeMux) Handle(pattern string, handler Handler) { ...@@ -1494,7 +1494,7 @@ func (mux *ServeMux) Handle(pattern string, handler Handler) {
if pattern[0] != '/' { if pattern[0] != '/' {
// In pattern, at least the last character is a '/', so // In pattern, at least the last character is a '/', so
// strings.Index can't be -1. // strings.Index can't be -1.
path = pattern[strings.Index(pattern, "/"):] path = pattern[strings.IndexByte(pattern, '/'):]
} }
mux.m[pattern[0:n-1]] = muxEntry{h: RedirectHandler(path, StatusMovedPermanently), pattern: pattern} mux.m[pattern[0:n-1]] = muxEntry{h: RedirectHandler(path, StatusMovedPermanently), pattern: pattern}
} }
......
...@@ -421,7 +421,7 @@ func parseAuthority(authority string) (user *Userinfo, host string, err error) { ...@@ -421,7 +421,7 @@ func parseAuthority(authority string) (user *Userinfo, host string, err error) {
return return
} }
userinfo, host := authority[:i], authority[i+1:] userinfo, host := authority[:i], authority[i+1:]
if strings.Index(userinfo, ":") < 0 { if strings.IndexByte(userinfo, ':') < 0 {
if userinfo, err = unescape(userinfo, encodeUserPassword); err != nil { if userinfo, err = unescape(userinfo, encodeUserPassword); err != nil {
return return
} }
...@@ -536,7 +536,7 @@ func parseQuery(m Values, query string) (err error) { ...@@ -536,7 +536,7 @@ func parseQuery(m Values, query string) (err error) {
continue continue
} }
value := "" value := ""
if i := strings.Index(key, "="); i >= 0 { if i := strings.IndexByte(key, '='); i >= 0 {
key, value = key[:i], key[i+1:] key, value = key[:i], key[i+1:]
} }
key, err1 := QueryUnescape(key) key, err1 := QueryUnescape(key)
......
...@@ -890,7 +890,7 @@ func TestHostname(t *testing.T) { ...@@ -890,7 +890,7 @@ func TestHostname(t *testing.T) {
} }
want := run(t, []string{"/bin/hostname"}) want := run(t, []string{"/bin/hostname"})
if hostname != want { if hostname != want {
i := strings.Index(hostname, ".") i := strings.IndexByte(hostname, '.')
if i < 0 || hostname[0:i] != want { if i < 0 || hostname[0:i] != want {
t.Errorf("Hostname() = %q, want %q", hostname, want) t.Errorf("Hostname() = %q, want %q", hostname, want)
} }
......
...@@ -105,7 +105,7 @@ func lookupUnix(uid int, username string, lookupByName bool) (*User, error) { ...@@ -105,7 +105,7 @@ func lookupUnix(uid int, username string, lookupByName bool) (*User, error) {
// say: "It is expected to be a comma separated list of // say: "It is expected to be a comma separated list of
// personal data where the first item is the full name of the // personal data where the first item is the full name of the
// user." // user."
if i := strings.Index(u.Name, ","); i >= 0 { if i := strings.IndexByte(u.Name, ','); i >= 0 {
u.Name = u.Name[:i] u.Name = u.Name[:i]
} }
return u, nil return u, nil
......
...@@ -43,7 +43,7 @@ Pattern: ...@@ -43,7 +43,7 @@ Pattern:
star, chunk, pattern = scanChunk(pattern) star, chunk, pattern = scanChunk(pattern)
if star && chunk == "" { if star && chunk == "" {
// Trailing * matches rest of string unless it has a /. // Trailing * matches rest of string unless it has a /.
return strings.Index(name, "/") < 0, nil return strings.IndexByte(name, '/') < 0, nil
} }
// Look for match at current position. // Look for match at current position.
t, ok, err := matchChunk(chunk, name) t, ok, err := matchChunk(chunk, name)
......
...@@ -293,7 +293,7 @@ func parseResult(t *testing.T, file string, lineno int, res string) []int { ...@@ -293,7 +293,7 @@ func parseResult(t *testing.T, file string, lineno int, res string) []int {
out[n] = -1 out[n] = -1
out[n+1] = -1 out[n+1] = -1
} else { } else {
k := strings.Index(pair, "-") k := strings.IndexByte(pair, '-')
if k < 0 { if k < 0 {
t.Fatalf("%s:%d: invalid pair %s", file, lineno, pair) t.Fatalf("%s:%d: invalid pair %s", file, lineno, pair)
} }
...@@ -456,7 +456,7 @@ Reading: ...@@ -456,7 +456,7 @@ Reading:
continue Reading continue Reading
} }
case ':': case ':':
i := strings.Index(flag[1:], ":") i := strings.IndexByte(flag[1:], ':')
if i < 0 { if i < 0 {
t.Logf("skip: %s", line) t.Logf("skip: %s", line)
continue Reading continue Reading
......
...@@ -429,7 +429,7 @@ func Match(pattern string, b []byte) (matched bool, err error) { ...@@ -429,7 +429,7 @@ func Match(pattern string, b []byte) (matched bool, err error) {
// in Expand, so for instance $1 represents the text of the first submatch. // in Expand, so for instance $1 represents the text of the first submatch.
func (re *Regexp) ReplaceAllString(src, repl string) string { func (re *Regexp) ReplaceAllString(src, repl string) string {
n := 2 n := 2
if strings.Index(repl, "$") >= 0 { if strings.IndexByte(repl, '$') >= 0 {
n = 2 * (re.numSubexp + 1) n = 2 * (re.numSubexp + 1)
} }
b := re.replaceAll(nil, src, n, func(dst []byte, match []int) []byte { b := re.replaceAll(nil, src, n, func(dst []byte, match []int) []byte {
...@@ -753,7 +753,7 @@ func (re *Regexp) ExpandString(dst []byte, template string, src string, match [] ...@@ -753,7 +753,7 @@ func (re *Regexp) ExpandString(dst []byte, template string, src string, match []
func (re *Regexp) expand(dst []byte, template string, bsrc []byte, src string, match []int) []byte { func (re *Regexp) expand(dst []byte, template string, bsrc []byte, src string, match []int) []byte {
for len(template) > 0 { for len(template) > 0 {
i := strings.Index(template, "$") i := strings.IndexByte(template, '$')
if i < 0 { if i < 0 {
break break
} }
......
...@@ -616,7 +616,7 @@ func verifyRange(name string, inCategory Op, table *unicode.RangeTable) { ...@@ -616,7 +616,7 @@ func verifyRange(name string, inCategory Op, table *unicode.RangeTable) {
} }
func parseScript(line string, scripts map[string][]Script) { func parseScript(line string, scripts map[string][]Script) {
comment := strings.Index(line, "#") comment := strings.IndexByte(line, '#')
if comment >= 0 { if comment >= 0 {
line = line[0:comment] line = line[0:comment]
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment