/*
** Splint - annotation-assisted static program checker
-** Copyright (C) 1994-2002 University of Virginia,
+** Copyright (C) 1994-2003 University of Virginia,
** Massachusetts Institute of Technology
**
** This program is free software; you can redistribute it and/or modify it
XPERCENT, XCTYPE, XPLURAL, XREPREFIX, XFILELOC, XPOINTER
} ccode;
-/* char *s, anytype v */
+/*@function void GETPRINTF (char *p_s, anytype p_v) modifies strbuf@*/
+
/*@notfunction@*/
-# define GETPRINTF(s,v) (sprintf (strbuf, s, v), mstring_copy (strbuf))
+# ifndef WIN32
+ /* ISO requires this, but not all implementations (e.g., Microsoft's) provide it */
+# define GETPRINTF(s,v) (snprintf (strbuf, 64, s, v), mstring_copy (strbuf))
+# else
+ /* MS provides _snprintf instead */
+# define GETPRINTF(s,v) (_snprintf (strbuf, 64, s, v), mstring_copy (strbuf))
+# endif
/*
** returns control code indicated by *c, and
ret = mstring_concatFree (ret, GETPRINTF ("%.2lf", va_arg (pvar, double)));
break;
case XBOOL:
- ret = mstring_concatFree1 (ret, cstring_toCharsSafe
- (bool_unparse (va_arg (pvar, bool))));
+ ret = mstring_concatFree1
+ (ret, cstring_toCharsSafe
+ (bool_unparse (bool_fromInt ((va_arg (pvar, int))))));
+ /* va_arg should not use bool type */
break;
case XUENTRY:
ret = mstring_concatFree (ret, cstring_toCharsSafe