-/*
- * stdarg.h
- * Modified for use in 15-410 at CMU
- * Zachary Anderson(zra)
- */
-
-/*
- * Copyright (c) 1994 The University of Utah and the Flux Group.
- * All rights reserved.
- *
- * This file is part of the Flux OSKit. The OSKit is free software, also known
- * as "open source;" you can redistribute it and/or modify it under the terms
- * of the GNU General Public License (GPL), version 2, as published by the Free
- * Software Foundation (FSF). To explore alternate licensing terms, contact
- * the University of Utah at csl-dist@cs.utah.edu or +1-801-585-3271.
- *
- * The OSKit is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GPL for more details. You should have
- * received a copy of the GPL along with the OSKit; see the file COPYING. If
- * not, write to the FSF, 59 Temple Place #330, Boston, MA 02111-1307, USA.
- */
+#ifndef _STDARG_H_
+#define _STDARG_H_
-/*
- * Mach Operating System
- * Copyright (c) 1993 Carnegie Mellon University.
- * All Rights Reserved.
+/* stdarg.h
+ * Copyright (c) 2008, Wes Filardo.
+ *
+ * This program is free software. It comes without any warranty, to
+ * the extent permitted by applicable law. You can redistribute it
+ * and/or modify it under the terms of the Do What The Fuck You Want
+ * To Public License, Version 2, as reproduced below:
*
- * Permission to use, copy, modify and distribute this software and its
- * documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
+ * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ * Version 2, December 2004
*
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
- * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ * Copyright (C) 2004 Sam Hocevar
+ * 14 rue de Plaisance, 75014 Paris, France
+ * Everyone is permitted to copy and distribute verbatim or modified
+ * copies of this license document, and changing it is allowed as long
+ * as the name is changed.
*
- * Carnegie Mellon requests users of this software to return to
+ * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
*
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
+ * 0. You just DO WHAT THE FUCK YOU WANT TO.
*
- * any improvements or extensions that they make and grant Carnegie Mellon
- * the rights to redistribute these changes.
*/
+/* This is awful, but really these are compiler intrinsics, so we use the
+ * GNU compiler intrinsics.
+ */
-#ifndef _STDARG_H_
-#define _STDARG_H_
-
-#define __va_size(type) ((sizeof(type)+3) & ~0x3)
-
-#ifndef _VA_LIST_
-#define _VA_LIST_
-typedef char * va_list;
+#ifdef __GNUC__
+typedef __builtin_va_list va_list;
+#define va_start(v,l) __builtin_va_start(v,l)
+#define va_end(v) __builtin_va_end(v)
+#define va_arg(v,l) __builtin_va_arg(v,l)
+#define va_copy(d,s) __builtin_va_copy(d,s)
+#else
+#error "Don't know how to use varargs not on GNUC, sorry."
#endif
-#define va_start(pvar, lastarg) \
- ((pvar) = (char*)(void*)&(lastarg) + __va_size(lastarg))
-#define va_end(pvar)
-#define va_arg(pvar,type) \
- ((pvar) += __va_size(type), \
- *((type *)((pvar) - __va_size(type))))
-
-#endif /* _STDARG_H_ */
+#endif