mirror of
https://github.com/rwinkhart/go-winio.git
synced 2026-09-05 16:47:31 -04:00
pkg/guid: Improve error messages
Signed-off-by: Kevin Parsons <kevpar@microsoft.com>
This commit is contained in:
+6
-7
@@ -13,7 +13,6 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
|
||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -115,36 +114,36 @@ func (g GUID) String() string {
|
|||||||
// format.
|
// format.
|
||||||
func FromString(s string) (GUID, error) {
|
func FromString(s string) (GUID, error) {
|
||||||
if len(s) != 36 {
|
if len(s) != 36 {
|
||||||
return GUID{}, errors.New("invalid GUID format (length)")
|
return GUID{}, fmt.Errorf("invalid GUID %q", s)
|
||||||
}
|
}
|
||||||
if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' {
|
if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' {
|
||||||
return GUID{}, errors.New("invalid GUID format (dashes)")
|
return GUID{}, fmt.Errorf("invalid GUID %q", s)
|
||||||
}
|
}
|
||||||
|
|
||||||
var g GUID
|
var g GUID
|
||||||
|
|
||||||
data1, err := strconv.ParseUint(s[0:8], 16, 32)
|
data1, err := strconv.ParseUint(s[0:8], 16, 32)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return GUID{}, errors.Wrap(err, "invalid GUID format (Data1)")
|
return GUID{}, fmt.Errorf("invalid GUID %q", s)
|
||||||
}
|
}
|
||||||
g.Data1 = uint32(data1)
|
g.Data1 = uint32(data1)
|
||||||
|
|
||||||
data2, err := strconv.ParseUint(s[9:13], 16, 16)
|
data2, err := strconv.ParseUint(s[9:13], 16, 16)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return GUID{}, errors.Wrap(err, "invalid GUID format (Data2)")
|
return GUID{}, fmt.Errorf("invalid GUID %q", s)
|
||||||
}
|
}
|
||||||
g.Data2 = uint16(data2)
|
g.Data2 = uint16(data2)
|
||||||
|
|
||||||
data3, err := strconv.ParseUint(s[14:18], 16, 16)
|
data3, err := strconv.ParseUint(s[14:18], 16, 16)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return GUID{}, errors.Wrap(err, "invalid GUID format (Data3)")
|
return GUID{}, fmt.Errorf("invalid GUID %q", s)
|
||||||
}
|
}
|
||||||
g.Data3 = uint16(data3)
|
g.Data3 = uint16(data3)
|
||||||
|
|
||||||
for i, x := range []int{19, 21, 24, 26, 28, 30, 32, 34} {
|
for i, x := range []int{19, 21, 24, 26, 28, 30, 32, 34} {
|
||||||
v, err := strconv.ParseUint(s[x:x+2], 16, 8)
|
v, err := strconv.ParseUint(s[x:x+2], 16, 8)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return GUID{}, errors.Wrap(err, "invalid GUID format (Data4)")
|
return GUID{}, fmt.Errorf("invalid GUID %q", s)
|
||||||
}
|
}
|
||||||
g.Data4[i] = uint8(v)
|
g.Data4[i] = uint8(v)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user