Use Sscanf instead of regexp

Docker-DCO-1.1-Signed-off-by: Charles Lindsay <chaz@chazomatic.us> (github: chazomaticus)
This commit is contained in:
Charles Lindsay 2014-01-20 21:02:37 -08:00
parent 14b2b2b7c2
commit 5b97e00438
1 changed files with 10 additions and 16 deletions

View File

@ -609,28 +609,22 @@ func GetKernelVersion() (*KernelVersionInfo, error) {
func ParseRelease(release string) (*KernelVersionInfo, error) { func ParseRelease(release string) (*KernelVersionInfo, error) {
var ( var (
parts [3]int kernel, major, minor, parsed int
err error err error
) )
re := regexp.MustCompile(`^([0-9]+)\.([0-9]+)\.([0-9]+)`) parsed, err = fmt.Sscanf(release, "%d.%d.%d", &kernel, &major, &minor)
subs := re.FindStringSubmatch(release)
if len(subs) < 4 {
return nil, errors.New("Can't parse kernel version " + release)
}
for i := 0; i < 3; i++ {
parts[i], err = strconv.Atoi(subs[i+1])
if err != nil { if err != nil {
return nil, err return nil, err
} }
if parsed < 3 {
return nil, errors.New("Can't parse kernel version " + release)
} }
return &KernelVersionInfo{ return &KernelVersionInfo{
Kernel: parts[0], Kernel: kernel,
Major: parts[1], Major: major,
Minor: parts[2], Minor: minor,
}, nil }, nil
} }