diff options
author | libuv upstream <libuv@googlegroups.com> | 2016-08-30 05:32:24 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-08-31 13:01:04 (GMT) |
commit | 3a713eaaf7d289b130acf0007b197553a6528112 (patch) | |
tree | 3338363d8bd88dd9ad7ede1329b4dbef53ec2572 /src/win/snprintf.c | |
download | CMake-3a713eaaf7d289b130acf0007b197553a6528112.zip CMake-3a713eaaf7d289b130acf0007b197553a6528112.tar.gz CMake-3a713eaaf7d289b130acf0007b197553a6528112.tar.bz2 |
libuv 2016-08-30 (897738b1)
Code extracted from:
https://github.com/libuv/libuv.git
at commit 897738b160cd5950503a96c9fd5b1e9aab92b0ff (v1.x).
Diffstat (limited to 'src/win/snprintf.c')
-rw-r--r-- | src/win/snprintf.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/win/snprintf.c b/src/win/snprintf.c new file mode 100644 index 0000000..776c0e3 --- /dev/null +++ b/src/win/snprintf.c @@ -0,0 +1,42 @@ +/* Copyright the libuv project contributors. All rights reserved. + * + * 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. + */ + +#if defined(_MSC_VER) && _MSC_VER < 1900 + +#include <stdio.h> +#include <stdarg.h> + +/* Emulate snprintf() on MSVC<2015, _snprintf() doesn't zero-terminate the buffer + * on overflow... + */ +int snprintf(char* buf, size_t len, const char* fmt, ...) { + int n; + va_list ap; + va_start(ap, fmt); + + n = _vscprintf(fmt, ap); + vsnprintf_s(buf, len, _TRUNCATE, fmt, ap); + + va_end(ap); + return n; +} + +#endif |