variable length hex

This commit is contained in:
Roy Olav Purser 2022-01-28 19:46:16 +01:00
parent 9733bb42a8
commit 02d36e3d69
Signed by: roypur
GPG Key ID: E14D26A036F21656
2 changed files with 10 additions and 6 deletions

View File

@ -22,6 +22,10 @@ func FixedHex(size uint) DataType {
return (DataType)(size<<16) | TypeHex return (DataType)(size<<16) | TypeHex
} }
func (dtype DataType) baseType() DataType {
return dtype & 0xffff
}
func (dtype DataType) typeAndSize() (DataType, uint) { func (dtype DataType) typeAndSize() (DataType, uint) {
return (dtype & 0xffff), uint(dtype >> 16) return (dtype & 0xffff), uint(dtype >> 16)
} }

View File

@ -287,7 +287,7 @@ func (c *Config) getRaw(key string, dtype DataType) (val cValue) {
if c.parsed { if c.parsed {
key = cleanKey(key) key = cleanKey(key)
entry, ok := c.env[key] entry, ok := c.env[key]
if ok && (entry.dtype == dtype) { if ok && (entry.dtype.baseType() == dtype.baseType()) {
return entry.parsed return entry.parsed
} }
} }
@ -303,7 +303,7 @@ func (c *Config) getRawMap(key string, dtype DataType) (empty map[string]cValue)
if ok { if ok {
for k, v := range entries { for k, v := range entries {
if (v.dtype == dtype) && (v.parsed.err == nil) { if (v.dtype.baseType() == dtype.baseType()) && (v.parsed.err == nil) {
retval[k] = v.parsed retval[k] = v.parsed
} else { } else {
return return
@ -324,8 +324,8 @@ func (c *Config) GetInt(key string) int64 {
// Returns the value of an environment variable. // Returns the value of an environment variable.
// If the variable is not defined as envconf.TypeHex the function will return []byte{}. // If the variable is not defined as envconf.TypeHex the function will return []byte{}.
func (c *Config) GetHex(key string, size int) []byte { func (c *Config) GetHex(key string) []byte {
val := c.getRaw(key, FixedHex(uint(size))) val := c.getRaw(key, TypeHex)
return val.binval return val.binval
} }
@ -400,9 +400,9 @@ func (c *Config) GetMapBool(key string) (retval map[string]bool) {
return return
} }
func (c *Config) GetMapHex(key string, size int) (retval map[string][]byte) { func (c *Config) GetMapHex(key string) (retval map[string][]byte) {
retval = make(map[string][]byte) retval = make(map[string][]byte)
for k, v := range c.getRawMap(key, FixedHex(uint(size))) { for k, v := range c.getRawMap(key, TypeHex) {
retval[k] = v.binval retval[k] = v.binval
} }
return return