/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the w64 mingw-runtime package.
 * No warranty is given; refer to the file DISCLAIMER within this package.
 */
#include <stdarg.h>
#include <stdio.h>

int snprintf(char* buffer, size_t n, const char* format, ...)
{
  int retval;
  va_list argptr;
         
  va_start( argptr, format );
  retval = _vsnprintf( buffer, n, format, argptr );
  va_end( argptr );
  return retval;
}
