X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=inline;f=include%2Fstdarg.h;h=adf73483ce8bbfd397e92d69a4c08ec8713bc1f5;hb=5bf8523dcd61f140e7ed5921e529a1b75c9b471b;hp=591048039958e66c7aad9c1ed6b8dcd0a4b34f6a;hpb=53dd513176425872128ef26031d00952ef7a0628;p=cc65 diff --git a/include/stdarg.h b/include/stdarg.h index 591048039..adf73483c 100644 --- a/include/stdarg.h +++ b/include/stdarg.h @@ -1,9 +1,35 @@ -/* - * stdarg.h - * - * Ullrich von Bassewitz, 31.05.1998 - * - */ +/*****************************************************************************/ +/* */ +/* stdarg.h */ +/* */ +/* Variable arguments */ +/* */ +/* */ +/* */ +/* (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 */ +/* 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. */ +/* */ +/*****************************************************************************/ @@ -14,15 +40,13 @@ 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_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 */