From 1346cbbc38976ea49076755969710bfea75dbf55 Mon Sep 17 00:00:00 2001 From: funshine Date: Tue, 27 Jan 2015 21:48:44 +0800 Subject: [PATCH] fix string.format, maybe partialy --- app/libc/c_stdio.c | 16 ++++++++++++++-- pre_build/latest/nodemcu_latest.bin | Bin 395684 -> 395836 bytes 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/libc/c_stdio.c b/app/libc/c_stdio.c index de9954cd..43d7bd24 100644 --- a/app/libc/c_stdio.c +++ b/app/libc/c_stdio.c @@ -407,7 +407,18 @@ void c_format(void *putp, putcf putf, char *fmt, va_list va) putchw(putp, putf, w, lz, bf); break; } - case 'd' : + case 'o' : + { +#ifdef PRINTF_LONG_SUPPORT + if (lng) + uli2a(va_arg(va, unsigned long int), 8, 0, bf); + else +#endif + ui2a(va_arg(va, unsigned int), 8, 0, bf); + putchw(putp, putf, w, lz, bf); + break; + } + case 'd' : case 'i': { #ifdef PRINTF_LONG_SUPPORT if (lng) @@ -427,7 +438,8 @@ void c_format(void *putp, putcf putf, char *fmt, va_list va) ui2a(va_arg(va, unsigned int), 16, (ch == 'X'), bf); putchw(putp, putf, w, lz, bf); break; - case 'g' : + case 'e': case 'E': case 'f': + case 'g': case 'G': { d2a(va_arg(va, double), bf); putchw(putp, putf, w, lz, bf); diff --git a/pre_build/latest/nodemcu_latest.bin b/pre_build/latest/nodemcu_latest.bin index 59def8c84f70dff3fb16cb05515a9a3e39269223..17112015cb94e60c14243e9112894477ca4cccf6 100644 GIT binary patch delta 9966 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 HKk52kVDd!u delta 9939 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