From a561fc35bb83e7d091d598d2ef369edd5d3f4b9f Mon Sep 17 00:00:00 2001 From: cuz Date: Thu, 1 Jun 2000 16:22:30 +0000 Subject: [PATCH] Added portability sprintf function git-svn-id: svn://svn.cc65.org/cc65/trunk@19 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- src/common/make/gcc.mak | 3 +- src/common/xsprintf.c | 79 +++++++++++++++++++++++++++++++++++++++++ src/common/xsprintf.h | 65 +++++++++++++++++++++++++++++++++ 3 files changed, 146 insertions(+), 1 deletion(-) create mode 100644 src/common/xsprintf.c create mode 100644 src/common/xsprintf.h diff --git a/src/common/make/gcc.mak b/src/common/make/gcc.mak index 4fd29a1d6..d6df03ead 100644 --- a/src/common/make/gcc.mak +++ b/src/common/make/gcc.mak @@ -10,7 +10,8 @@ LIB = common.a OBJS = bitops.o \ - hashstr.o + hashstr.o \ + xsprintf.o # ------------------------------------------------------------------------------ diff --git a/src/common/xsprintf.c b/src/common/xsprintf.c new file mode 100644 index 000000000..e95eef4ca --- /dev/null +++ b/src/common/xsprintf.c @@ -0,0 +1,79 @@ +/*****************************************************************************/ +/* */ +/* xsprintf.c */ +/* */ +/* Replacement sprintf function */ +/* */ +/* */ +/* */ +/* (C) 1998 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#include +#include + +#include "xsprintf.h" + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +int xsprintf (char* Buf, size_t BufSize, const char* Format, ...) +/* Replacement function for sprintf */ +{ + int Res; + va_list ap; + + va_start (ap, Format); + Res = xvsprintf (Buf, BufSize, Format, ap); + va_end (ap); + + return Res; +} + + + +int xvsprintf (char* Buf, size_t BufSize, const char* Format, va_list ap) +/* Replacement function for sprintf */ +{ +#if defined(__WATCOMC__) + return _vbprintf (Buf, BufSize, Format, ap); +#elsif defined(__GNUC__) + return vsnprintf (Buf, BufSize, Format, ap); +#else + int Res = vsprintf (Buf, Format, ap); + assert ((unsigned) Res < BufSize); + return Res; +#endif +} + + + diff --git a/src/common/xsprintf.h b/src/common/xsprintf.h new file mode 100644 index 000000000..59847a526 --- /dev/null +++ b/src/common/xsprintf.h @@ -0,0 +1,65 @@ +/*****************************************************************************/ +/* */ +/* xsprintf.h */ +/* */ +/* Replacement sprintf function */ +/* */ +/* */ +/* */ +/* (C) 1998 Ullrich von Bassewitz */ +/* Wacholderweg 14 */ +/* D-70597 Stuttgart */ +/* EMail: uz@musoftware.de */ +/* */ +/* */ +/* This software is provided 'as-is', without any expressed or implied */ +/* warranty. In no event will the authors be held liable for any damages */ +/* arising from the use of this software. */ +/* */ +/* Permission is granted to anyone to use this software for any purpose, */ +/* including commercial applications, and to alter it and redistribute it */ +/* freely, subject to the following restrictions: */ +/* */ +/* 1. The origin of this software must not be misrepresented; you must not */ +/* claim that you wrote the original software. If you use this software */ +/* in a product, an acknowledgment in the product documentation would be */ +/* appreciated but is not required. */ +/* 2. Altered source versions must be plainly marked as such, and must not */ +/* be misrepresented as being the original software. */ +/* 3. This notice may not be removed or altered from any source */ +/* distribution. */ +/* */ +/*****************************************************************************/ + + + +#ifndef XSPRINTF_H +#define XSPRINTF_H + + + +#include + + + +/*****************************************************************************/ +/* Code */ +/*****************************************************************************/ + + + +int xsprintf (char* Buf, size_t BufSize, const char* Format, ...); +/* Replacement function for sprintf */ + +int xvsprintf (char* Buf, size_t BufSize, const char* Format, va_list ap); +/* Replacement function for sprintf */ + + + +/* End of xsprintf.h */ + +#endif + + + +