This file is indexed.

/usr/share/gocode/src/gopkg.in/gcfg.v1/types/int.go is in golang-gopkg-gcfg.v1-dev 0.0~git20150907.0.0ef1a85-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package types

import (
	"fmt"
	"strings"
)

// An IntMode is a mode for parsing integer values, representing a set of
// accepted bases.
type IntMode uint8

// IntMode values for ParseInt; can be combined using binary or.
const (
	Dec IntMode = 1 << iota
	Hex
	Oct
)

// String returns a string representation of IntMode; e.g. `IntMode(Dec|Hex)`.
func (m IntMode) String() string {
	var modes []string
	if m&Dec != 0 {
		modes = append(modes, "Dec")
	}
	if m&Hex != 0 {
		modes = append(modes, "Hex")
	}
	if m&Oct != 0 {
		modes = append(modes, "Oct")
	}
	return "IntMode(" + strings.Join(modes, "|") + ")"
}

var errIntAmbig = fmt.Errorf("ambiguous integer value; must include '0' prefix")

func prefix0(val string) bool {
	return strings.HasPrefix(val, "0") || strings.HasPrefix(val, "-0")
}

func prefix0x(val string) bool {
	return strings.HasPrefix(val, "0x") || strings.HasPrefix(val, "-0x")
}

// ParseInt parses val using mode into intptr, which must be a pointer to an
// integer kind type. Non-decimal value require prefix `0` or `0x` in the cases
// when mode permits ambiguity of base; otherwise the prefix can be omitted.
func ParseInt(intptr interface{}, val string, mode IntMode) error {
	val = strings.TrimSpace(val)
	verb := byte(0)
	switch mode {
	case Dec:
		verb = 'd'
	case Dec + Hex:
		if prefix0x(val) {
			verb = 'v'
		} else {
			verb = 'd'
		}
	case Dec + Oct:
		if prefix0(val) && !prefix0x(val) {
			verb = 'v'
		} else {
			verb = 'd'
		}
	case Dec + Hex + Oct:
		verb = 'v'
	case Hex:
		if prefix0x(val) {
			verb = 'v'
		} else {
			verb = 'x'
		}
	case Oct:
		verb = 'o'
	case Hex + Oct:
		if prefix0(val) {
			verb = 'v'
		} else {
			return errIntAmbig
		}
	}
	if verb == 0 {
		panic("unsupported mode")
	}
	return ScanFully(intptr, val, verb)
}