summaryrefslogtreecommitdiff
path: root/pkgtools/pkglint/files/pkgver
diff options
context:
space:
mode:
authorrillig <rillig@pkgsrc.org>2018-12-17 00:15:39 +0000
committerrillig <rillig@pkgsrc.org>2018-12-17 00:15:39 +0000
commite6556331ee09765fb6455f21118582024d11052d (patch)
tree4fc4a1037677a7ced6b069b69c5e6dd5c44afe43 /pkgtools/pkglint/files/pkgver
parent36b175ee4c46e94c1ec95d91a022c222fb2d9f7b (diff)
downloadpkgsrc-e6556331ee09765fb6455f21118582024d11052d.tar.gz
pkgtools/pkglint: update to 5.6.9
Changes since 5.6.8: * In addition to the pkglint binary, the whole pkglint code is installed as a library, so that other packages can use the code for doing their own checks on pkgsrc packages, Makefiles, shell programs, or the other file types from pkgsrc. * BUILDLINK_*.* may be used in all files. * Lots of refactorings
Diffstat (limited to 'pkgtools/pkglint/files/pkgver')
-rw-r--r--pkgtools/pkglint/files/pkgver/vercmp.go56
1 files changed, 21 insertions, 35 deletions
diff --git a/pkgtools/pkglint/files/pkgver/vercmp.go b/pkgtools/pkglint/files/pkgver/vercmp.go
index 5b6cd8edcd0..2cc7a05be0f 100644
--- a/pkgtools/pkglint/files/pkgver/vercmp.go
+++ b/pkgtools/pkglint/files/pkgver/vercmp.go
@@ -3,6 +3,8 @@ package pkgver
// See pkgtools/pkg_install/files/lib/dewey.c
import (
+ "netbsd.org/pkglint/textproc"
+ "strconv"
"strings"
)
@@ -42,50 +44,34 @@ type version struct {
func newVersion(vstr string) *version {
v := new(version)
- rest := strings.ToLower(vstr)
- for rest != "" {
+ lex := textproc.NewLexer(strings.ToLower(vstr))
+ for !lex.EOF() {
+
switch {
- case isdigit(rest[0]):
- n := 0
- i := 0
- for i < len(rest) && isdigit(rest[i]) {
- n = 10*n + int(rest[i]-'0')
- i++
- }
- rest = rest[i:]
+ case lex.TestByteSet(textproc.Digit):
+ num := lex.NextBytesSet(textproc.Digit)
+ n, _ := strconv.Atoi(num)
v.Add(n)
- case rest[0] == '_' || rest[0] == '.':
+ case lex.SkipByte('_') || lex.SkipByte('.'):
v.Add(0)
- rest = rest[1:]
- case strings.HasPrefix(rest, "alpha"):
+ case lex.SkipString("alpha"):
v.Add(-3)
- rest = rest[5:]
- case strings.HasPrefix(rest, "beta"):
+ case lex.SkipString("beta"):
v.Add(-2)
- rest = rest[4:]
- case strings.HasPrefix(rest, "pre"):
+ case lex.SkipString("pre"):
v.Add(-1)
- rest = rest[3:]
- case strings.HasPrefix(rest, "rc"):
+ case lex.SkipString("rc"):
v.Add(-1)
- rest = rest[2:]
- case strings.HasPrefix(rest, "pl"):
+ case lex.SkipString("pl"):
v.Add(0)
- rest = rest[2:]
- case strings.HasPrefix(rest, "nb"):
- i := 2
- n := 0
- for i < len(rest) && isdigit(rest[i]) {
- n = 10*n + int(rest[i]-'0')
- i++
- }
- v.nb = n
- rest = rest[i:]
- case rest[0]-'a' <= 'z'-'a':
- v.Add(int(rest[0] - 'a' + 1))
- rest = rest[1:]
+ case lex.SkipString("nb"):
+ num := lex.NextBytesSet(textproc.Digit)
+ v.nb, _ = strconv.Atoi(num)
+ case lex.TestByteSet(textproc.Lower):
+ v.Add(int(lex.Rest()[0] - 'a' + 1))
+ lex.Skip(1)
default:
- rest = rest[1:]
+ lex.Skip(1)
}
}
return v