diff --git a/conf/lex.go b/conf/lex.go index b2357702..9358c9b3 100644 --- a/conf/lex.go +++ b/conf/lex.go @@ -995,7 +995,7 @@ func lexNumberOrDateOrStringOrIP(lx *lexer) stateFn { func lexConvenientNumber(lx *lexer) stateFn { r := lx.next() switch { - case r == 'b' || r == 'B': + case r == 'b' || r == 'B' || r == 'i' || r == 'I': return lexConvenientNumber } lx.backup() diff --git a/conf/parse.go b/conf/parse.go index a22b3e3d..afb6f6e8 100644 --- a/conf/parse.go +++ b/conf/parse.go @@ -253,27 +253,27 @@ func (p *parser) processItem(it item, fp string) error { setValue(it, num) case "k": setValue(it, num*1000) - case "kb": + case "kb", "ki", "kib": setValue(it, num*1024) case "m": setValue(it, num*1000*1000) - case "mb": + case "mb", "mi", "mib": setValue(it, num*1024*1024) case "g": setValue(it, num*1000*1000*1000) - case "gb": + case "gb", "gi", "gib": setValue(it, num*1024*1024*1024) case "t": setValue(it, num*1000*1000*1000*1000) - case "tb": + case "tb", "ti", "tib": setValue(it, num*1024*1024*1024*1024) case "p": setValue(it, num*1000*1000*1000*1000*1000) - case "pb": + case "pb", "pi", "pib": setValue(it, num*1024*1024*1024*1024*1024) case "e": setValue(it, num*1000*1000*1000*1000*1000*1000) - case "eb": + case "eb", "ei", "eib": setValue(it, num*1024*1024*1024*1024*1024*1024) } case itemFloat: diff --git a/conf/parse_test.go b/conf/parse_test.go index 68cba37a..72c5d8e9 100644 --- a/conf/parse_test.go +++ b/conf/parse_test.go @@ -142,20 +142,44 @@ func TestBcryptVariable(t *testing.T) { var easynum = ` k = 8k kb = 4kb +ki = 3ki +kib = 4ki m = 1m mb = 2MB +mi = 2Mi +mib = 64MiB g = 2g gb = 22GB +gi = 22Gi +gib = 22GiB +tb = 22TB +ti = 22Ti +tib = 22TiB +pb = 22PB +pi = 22Pi +pib = 22PiB ` func TestConvenientNumbers(t *testing.T) { ex := map[string]interface{}{ "k": int64(8 * 1000), "kb": int64(4 * 1024), + "ki": int64(3 * 1024), + "kib": int64(4 * 1024), "m": int64(1000 * 1000), "mb": int64(2 * 1024 * 1024), + "mi": int64(2 * 1024 * 1024), + "mib": int64(64 * 1024 * 1024), "g": int64(2 * 1000 * 1000 * 1000), "gb": int64(22 * 1024 * 1024 * 1024), + "gi": int64(22 * 1024 * 1024 * 1024), + "gib": int64(22 * 1024 * 1024 * 1024), + "tb": int64(22 * 1024 * 1024 * 1024 * 1024), + "ti": int64(22 * 1024 * 1024 * 1024 * 1024), + "tib": int64(22 * 1024 * 1024 * 1024 * 1024), + "pb": int64(22 * 1024 * 1024 * 1024 * 1024 * 1024), + "pi": int64(22 * 1024 * 1024 * 1024 * 1024 * 1024), + "pib": int64(22 * 1024 * 1024 * 1024 * 1024 * 1024), } test(t, easynum, ex) }