stdvarargs.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 #ifndef SQUID_COMPAT_STDVARARGS_H
10 #define SQUID_COMPAT_STDVARARGS_H
11 
12 /*
13  * va_* variables come from various places on different platforms.
14  * We provide a clean set of wrappers for the various operations
15  * Depending on what is available and needed.
16  */
17 #if defined(__cplusplus)
18 #include <cstdarg>
19 
20 #else
21 #if HAVE_STDARG_H
22 #include <stdarg.h>
23 #define HAVE_STDARGS /* let's hope that works everywhere (mj) */
24 #define VA_LOCAL_DECL va_list ap;
25 #define VA_START(f) va_start(ap, f)
26 #define VA_SHIFT(v,t) ; /* no-op for ANSI */
27 #define VA_END va_end(ap)
28 
29 #else /* !HAVE_STDARG_H */
30 #if HAVE_VARARGS_H
31 #include <varargs.h>
32 #undef HAVE_STDARGS
33 #define VA_LOCAL_DECL va_list ap;
34 #define VA_START(f) va_start(ap) /* f is ignored! */
35 #define VA_SHIFT(v,t) v = va_arg(ap,t)
36 #define VA_END va_end(ap)
37 
38 #else /* !HAVE_VARARGS_H*/
39 #error XX **NO VARARGS ** XX
40 #endif /* HAVE_VARARGS_H */
41 #endif /* HAVE_STDARG_H */
42 #endif /* HAVE_CSTDARG */
43 
44 /* Make sure syslog goes after stdarg/varargs */
45 #if HAVE_SYSLOG_H
46 #include <syslog.h>
47 #endif
48 
49 #endif /* SQUID_COMPAT_STDVARARGS_H */
50 

 

Introduction

Documentation

Support

Miscellaneous