]> git.sur5r.net Git - cc65/blobdiff - src/common/xsprintf.h
Only for jumps, the lib uses named asm labels in branches
[cc65] / src / common / xsprintf.h
index 202a8b7b2db7ffa02fdeeb1eb78b2d360b0df966..a37b71914b100c80a31873106324b03c71abba30 100644 (file)
@@ -1,13 +1,13 @@
 /*****************************************************************************/
 /*                                                                           */
-/*                               xsprintf.h                                 */
+/*                                xsprintf.h                                 */
 /*                                                                           */
-/*                      Replacement sprintf function                        */
+/*                       Replacement sprintf function                        */
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (C) 2000-2004 Ullrich von Bassewitz                                       */
-/*               Römerstrasse 52                                             */
+/* (C) 2000-2008 Ullrich von Bassewitz                                       */
+/*               Roemerstrasse 52                                            */
 /*               D-70794 Filderstadt                                         */
 /* EMail:        uz@cc65.org                                                 */
 /*                                                                           */
 
 
 
+/* We need a way to output a StrBuf, but on the other side, we don't want to 
+** switch off gcc's printf format string checking. So we cheat as follows: 
+** %m (which is a gcc extension and doesn't take an argument) switches %p 
+** between outputting a pointer and a string buf. This works just one time,
+** so each StrBuf needs in fact a %m%p spec. There's no way to apply a width
+** and precision to such a StrBuf, but *not* using %p would bring up a warning
+** about a wrong argument type each time. Maybe gcc will one day allow custom
+** format specifiers and we can change this ...
+*/
+
+
+
 #ifndef XSPRINTF_H
 #define XSPRINTF_H
 
 
 
 /*****************************************************************************/
-/*                                          Code                                    */
+/*                                   Code                                    */
 /*****************************************************************************/
 
 
 
 int xvsnprintf (char* Buf, size_t Size, const char* Format, va_list ap)
-       attribute ((format (printf, 3, 0)));
+        attribute ((format (printf, 3, 0)));
 /* A basic vsnprintf implementation. Does currently only support integer
- * formats.
- */
+** formats.
+*/
 
 int xsnprintf (char* Buf, size_t Size, const char* Format, ...)
-       attribute ((format (printf, 3, 4)));
+        attribute ((format (printf, 3, 4)));
 /* A basic snprintf implementation. Does currently only support integer
- * formats.
- */
+** formats.
+*/
 
 int xsprintf (char* Buf, size_t BufSize, const char* Format, ...)
-       attribute ((format (printf, 3, 4)));
+        attribute ((format (printf, 3, 4)));
 /* Replacement function for sprintf. Will FAIL on errors. */
 
 int xvsprintf (char* Buf, size_t BufSize, const char* Format, va_list ap)
-       attribute ((format (printf, 3, 0)));
+        attribute ((format (printf, 3, 0)));
 /* Replacement function for sprintf. Will FAIL on errors. */
 
 
@@ -76,7 +88,3 @@ int xvsprintf (char* Buf, size_t BufSize, const char* Format, va_list ap)
 /* End of xsprintf.h */
 
 #endif
-
-
-
-