Blame src/c99func.c

Packit bfcc33
/*
Packit bfcc33
  Copyright (C) 2011 Joseph A. Adams (joeyadams3.14159@gmail.com)
Packit bfcc33
  All rights reserved.
Packit bfcc33
Packit bfcc33
  Permission is hereby granted, free of charge, to any person obtaining a copy
Packit bfcc33
  of this software and associated documentation files (the "Software"), to deal
Packit bfcc33
  in the Software without restriction, including without limitation the rights
Packit bfcc33
  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
Packit bfcc33
  copies of the Software, and to permit persons to whom the Software is
Packit bfcc33
  furnished to do so, subject to the following conditions:
Packit bfcc33
Packit bfcc33
  The above copyright notice and this permission notice shall be included in
Packit bfcc33
  all copies or substantial portions of the Software.
Packit bfcc33
Packit bfcc33
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
Packit bfcc33
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
Packit bfcc33
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
Packit bfcc33
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
Packit bfcc33
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
Packit bfcc33
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
Packit bfcc33
  THE SOFTWARE.
Packit bfcc33
*/
Packit bfcc33
Packit bfcc33
#if defined(_MSC_VER) && _MSC_VER < 1900
Packit bfcc33
Packit bfcc33
#include <stdio.h>
Packit bfcc33
#include <stdlib.h>
Packit bfcc33
#include <stdarg.h>
Packit bfcc33
Packit bfcc33
static int c99_vsnprintf(char* str, size_t size, const char* format, va_list ap)
Packit bfcc33
{
Packit bfcc33
    int count = -1;
Packit bfcc33
Packit bfcc33
    if (size != 0)
Packit bfcc33
        count = _vsnprintf_s(str, size, _TRUNCATE, format, ap);
Packit bfcc33
    if (count == -1)
Packit bfcc33
        count = _vscprintf(format, ap);
Packit bfcc33
Packit bfcc33
    return count;
Packit bfcc33
}
Packit bfcc33
Packit bfcc33
int snprintf(char* str, size_t size, const char* format, ...)
Packit bfcc33
{
Packit bfcc33
    int count;
Packit bfcc33
    va_list ap;
Packit bfcc33
Packit bfcc33
    va_start(ap, format);
Packit bfcc33
    count = c99_vsnprintf(str, size, format, ap);
Packit bfcc33
    va_end(ap);
Packit bfcc33
Packit bfcc33
    return count;
Packit bfcc33
}
Packit bfcc33
Packit bfcc33
#endif