diff options
Diffstat (limited to 'vendor/modernc.org/libc/printf.go')
-rw-r--r-- | vendor/modernc.org/libc/printf.go | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/vendor/modernc.org/libc/printf.go b/vendor/modernc.org/libc/printf.go index ce580daf..b8200add 100644 --- a/vendor/modernc.org/libc/printf.go +++ b/vendor/modernc.org/libc/printf.go @@ -18,6 +18,7 @@ const ( modH modL modLL + modLD modQ modCapitalL modJ @@ -167,7 +168,9 @@ more: format++ var arg uint64 switch mod { - case modNone, modL, modLL, mod64: + case modNone: + arg = uint64(VaUint32(args)) + case modL, modLL, mod64: arg = VaUint64(args) case modH: arg = uint64(uint16(VaInt32(args))) @@ -198,7 +201,9 @@ more: format++ var arg uint64 switch mod { - case modNone, modL, modLL, mod64: + case modNone: + arg = uint64(VaUint32(args)) + case modL, modLL, mod64: arg = VaUint64(args) case modH: arg = uint64(uint16(VaInt32(args))) @@ -280,7 +285,9 @@ more: format++ var arg uint64 switch mod { - case modNone, modL, modLL, mod64: + case modNone: + arg = uint64(VaUint32(args)) + case modL, modLL, mod64: arg = VaUint64(args) case modH: arg = uint64(uint16(VaInt32(args))) @@ -335,7 +342,7 @@ more: prec = 6 } f := fmt.Sprintf("%s.%d%c", spec, prec, c) - str = fmt.Sprintf(f, arg) + str = fixNanInf(fmt.Sprintf(f, arg)) case 'G': fallthrough case 'g': @@ -356,7 +363,7 @@ more: } f := fmt.Sprintf("%s.%d%c", spec, prec, c) - str = fmt.Sprintf(f, arg) + str = fixNanInf(fmt.Sprintf(f, arg)) case 's': // If no l modifier is present: the const char * argument is expected to be a // pointer to an array of character type (pointer to a string). Characters @@ -577,7 +584,9 @@ func parseLengthModifier(format uintptr) (_ uintptr, n int) { case 'q': panic(todo("")) case 'L': - panic(todo("")) + format++ + n = modLD + return format, n case 'j': panic(todo("")) case 'z': @@ -590,3 +599,14 @@ func parseLengthModifier(format uintptr) (_ uintptr, n int) { return format, 0 } } + +func fixNanInf(s string) string { + switch s { + case "NaN": + return "nan" + case "+Inf", "-Inf": + return "inf" + default: + return s + } +} |