diff options
author | stijn <stinos@zoho.com> | 2014-05-05 12:18:27 +0200 |
---|---|---|
committer | stijn <stinos@zoho.com> | 2014-05-08 10:06:43 +0200 |
commit | 01d6be4d512118d39ef52f79ca9ddddd2bba3f32 (patch) | |
tree | e409a3f5397df34518027a2ce5f62065196f82d7 /windows/msvc/snprintf.c | |
parent | c1c32d65af038ba1b2a2a8dd69e3f7e63eac5f3e (diff) | |
download | micropython-01d6be4d512118d39ef52f79ca9ddddd2bba3f32.tar.gz micropython-01d6be4d512118d39ef52f79ca9ddddd2bba3f32.zip |
Windows MSVC port
Extend the windows port so it compiles with the toolchain from Visual Studio 2013
Diffstat (limited to 'windows/msvc/snprintf.c')
-rw-r--r-- | windows/msvc/snprintf.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/windows/msvc/snprintf.c b/windows/msvc/snprintf.c new file mode 100644 index 0000000000..d200a4cbc8 --- /dev/null +++ b/windows/msvc/snprintf.c @@ -0,0 +1,44 @@ +/* +* This file is part of the Micro Python project, http://micropython.org/ +* +* The MIT License (MIT) +* +* Copyright (c) 2013, 2014 Damien P. George +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +*/ + +#include <stdarg.h> +#include <stdio.h> +#include <malloc.h> + +// _snprintf/vsnprintf are fine, except the 'F' specifier is not handled +int snprintf(char *dest, size_t count, const char *format, ...) { + const size_t fmtLen = strlen(format) + 1; + char *fixedFmt = alloca(fmtLen); + for (size_t i = 0; i < fmtLen; ++i) + fixedFmt[i] = format[i] == 'F' ? 'f' : format[i]; + + va_list args; + va_start(args, format); + const int ret = vsnprintf(dest, count, fixedFmt, args); + va_end(args); + + return ret; +} |