]> git.sur5r.net Git - cc65/commitdiff
Added portability sprintf function
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 1 Jun 2000 16:22:30 +0000 (16:22 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 1 Jun 2000 16:22:30 +0000 (16:22 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@19 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/common/make/gcc.mak
src/common/xsprintf.c [new file with mode: 0644]
src/common/xsprintf.h [new file with mode: 0644]

index 4fd29a1d6c8214297570879c255d8f5475068a55..d6df03ead356c55e97db74fc8eeef349faeef162 100644 (file)
@@ -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 (file)
index 0000000..e95eef4
--- /dev/null
@@ -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 <stdio.h>
+#include <assert.h>
+
+#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 (file)
index 0000000..59847a5
--- /dev/null
@@ -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 <stdarg.h>
+
+
+
+/*****************************************************************************/
+/*                                          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
+
+
+
+