diff --git a/device/awg/magic_header.go b/device/awg/magic_header.go index f2b8f97..aaf4e97 100644 --- a/device/awg/magic_header.go +++ b/device/awg/magic_header.go @@ -26,8 +26,8 @@ func NewMagicHeader(min, max uint32) (MagicHeader, error) { } func ParseMagicHeader(key, value string) (MagicHeader, error) { - splitLimits := strings.Split(value, "-") - if len(splitLimits) != 2 { + hyphenIdx := strings.Index(value, "-") + if hyphenIdx == -1 { // if there is no hyphen, we treat it as single magic header value magicHeader, err := strconv.ParseUint(value, 10, 32) if err != nil { @@ -35,23 +35,27 @@ func ParseMagicHeader(key, value string) (MagicHeader, error) { } return NewMagicHeader(uint32(magicHeader), uint32(magicHeader)) - } else if len(splitLimits[0]) == 0 || len(splitLimits[1]) == 0 { + } + + minStr := value[:hyphenIdx] + maxStr := value[hyphenIdx+1:] + if len(minStr) == 0 || len(maxStr) == 0 { return MagicHeader{}, fmt.Errorf("invalid value for key: %s; value: %s; expected format: min-max", key, value) } - min, err := strconv.ParseUint(splitLimits[0], 10, 32) + min, err := strconv.ParseUint(minStr, 10, 32) if err != nil { - return MagicHeader{}, fmt.Errorf("parse min key: %s; value: %s; %w", key, splitLimits[0], err) + return MagicHeader{}, fmt.Errorf("parse min key: %s; value: %s; %w", key, minStr, err) } - max, err := strconv.ParseUint(splitLimits[1], 10, 32) + max, err := strconv.ParseUint(maxStr, 10, 32) if err != nil { - return MagicHeader{}, fmt.Errorf("parse max key: %s; value: %s; %w", key, splitLimits[1], err) + return MagicHeader{}, fmt.Errorf("parse max key: %s; value: %s; %w", key, maxStr, err) } magicHeader, err := NewMagicHeader(uint32(min), uint32(max)) if err != nil { - return MagicHeader{}, fmt.Errorf("new magicHeader key: %s; value: %s-%s; %w", key, splitLimits[0], splitLimits[1], err) + return MagicHeader{}, fmt.Errorf("new magicHeader key: %s; value: %s-%s; %w", key, minStr, maxStr, err) } return magicHeader, nil