diff options
author | Simon Ser <contact@emersion.fr> | 2019-12-03 11:54:43 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2019-12-03 11:54:43 +0100 |
commit | 33b8679f1c6b2055196536b3e3ae808195202377 (patch) | |
tree | 9717704abcc6d986e144e843a3f9652211b80d70 /strconv.go | |
parent | ed50cef3cf806c09762e75cf10fb022ce19d3a1b (diff) | |
download | alps-33b8679f1c6b2055196536b3e3ae808195202377.tar.gz alps-33b8679f1c6b2055196536b3e3ae808195202377.zip |
Extract string conversion functions
Diffstat (limited to 'strconv.go')
-rw-r--r-- | strconv.go | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/strconv.go b/strconv.go new file mode 100644 index 0000000..2fb9d73 --- /dev/null +++ b/strconv.go @@ -0,0 +1,35 @@ +package koushin + +import ( + "fmt" + "strconv" + "strings" +) + +func parseUid(s string) (uint32, error) { + uid, err := strconv.ParseUint(s, 10, 32) + if err != nil { + return 0, err + } + if uid == 0 { + return 0, fmt.Errorf("UID must be non-zero") + } + return uint32(uid), nil +} + +func parsePartPath(s string) ([]int, error) { + l := strings.Split(s, ".") + path := make([]int, len(l)) + for i, s := range l { + var err error + path[i], err = strconv.Atoi(s) + if err != nil { + return nil, err + } + + if path[i] <= 0 { + return nil, fmt.Errorf("part num must be strictly positive") + } + } + return path, nil +} |