/*****************************************************************************/
/* */
-/* stdarg.h */
+/* stdarg.h */
/* */
-/* Variable arguments */
+/* Variable arguments */
/* */
/* */
/* */
-/* (C) 1998-2000 Ullrich von Bassewitz */
-/* Wacholderweg 14 */
-/* D-70597 Stuttgart */
-/* EMail: uz@musoftware.de */
+/* (C) 1998-2004 Ullrich von Bassewitz */
+/* Römerstrasse 52 */
+/* D-70794 Filderstadt */
+/* EMail: uz@cc65.org */
/* */
/* */
/* This software is provided 'as-is', without any expressed or implied */
typedef unsigned char* va_list;
-#define va_start(ap, fix) ap = (va_list)&fix + *(((va_list)&fix)-1) - __fixargs__
-#define va_arg(ap,type) ((type)*(ap -= ((sizeof (type) + 1) & ~1)))
-#define va_copy(dest, src) ((dest)=(src))
+#define va_start(ap, fix) ap = ((va_list)&(fix))
+#define va_arg(ap,type) (*(type*)(ap -= ((sizeof (type) + 1) & ~1)))
+#if __CC65_STD__ >= __CC65_STD_C99__
+#define va_copy(dest, src) ((dest)=(src))
+#endif
#define va_end(ap)
-/* This is only valid *before* the first call to va_arg. It will also work
- * only for int sized parameters.
- */
-#define va_fix(ap, offs) *(ap+(__fixargs__-2*offs))
-
/* End of stdarg.h */