xref: /minix3/external/bsd/bind/dist/lib/lwres/print_p.h (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek /*	$NetBSD: print_p.h,v 1.4 2014/12/10 04:38:02 christos Exp $	*/
2*00b67f09SDavid van Moolenbroek 
3*00b67f09SDavid van Moolenbroek /*
4*00b67f09SDavid van Moolenbroek  * Copyright (C) 2004, 2007, 2010  Internet Systems Consortium, Inc. ("ISC")
5*00b67f09SDavid van Moolenbroek  * Copyright (C) 1999-2001, 2003  Internet Software Consortium.
6*00b67f09SDavid van Moolenbroek  *
7*00b67f09SDavid van Moolenbroek  * Permission to use, copy, modify, and/or distribute this software for any
8*00b67f09SDavid van Moolenbroek  * purpose with or without fee is hereby granted, provided that the above
9*00b67f09SDavid van Moolenbroek  * copyright notice and this permission notice appear in all copies.
10*00b67f09SDavid van Moolenbroek  *
11*00b67f09SDavid van Moolenbroek  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
12*00b67f09SDavid van Moolenbroek  * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13*00b67f09SDavid van Moolenbroek  * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
14*00b67f09SDavid van Moolenbroek  * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15*00b67f09SDavid van Moolenbroek  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
16*00b67f09SDavid van Moolenbroek  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*00b67f09SDavid van Moolenbroek  * PERFORMANCE OF THIS SOFTWARE.
18*00b67f09SDavid van Moolenbroek  */
19*00b67f09SDavid van Moolenbroek 
20*00b67f09SDavid van Moolenbroek /* Id: print_p.h,v 1.6 2010/08/16 23:46:52 tbox Exp  */
21*00b67f09SDavid van Moolenbroek 
22*00b67f09SDavid van Moolenbroek #ifndef LWRES_PRINT_P_H
23*00b67f09SDavid van Moolenbroek #define LWRES_PRINT_P_H 1
24*00b67f09SDavid van Moolenbroek 
25*00b67f09SDavid van Moolenbroek /***
26*00b67f09SDavid van Moolenbroek  *** Imports
27*00b67f09SDavid van Moolenbroek  ***/
28*00b67f09SDavid van Moolenbroek 
29*00b67f09SDavid van Moolenbroek #include <lwres/lang.h>
30*00b67f09SDavid van Moolenbroek #include <lwres/platform.h>
31*00b67f09SDavid van Moolenbroek 
32*00b67f09SDavid van Moolenbroek /*
33*00b67f09SDavid van Moolenbroek  * This block allows lib/lwres/print.c to be cleanly compiled even if
34*00b67f09SDavid van Moolenbroek  * the platform does not need it.  The standard Makefile will still
35*00b67f09SDavid van Moolenbroek  * not compile print.c or archive print.o, so this is just to make test
36*00b67f09SDavid van Moolenbroek  * compilation ("make print.o") easier.
37*00b67f09SDavid van Moolenbroek  */
38*00b67f09SDavid van Moolenbroek #if !defined(LWRES_PLATFORM_NEEDVSNPRINTF) && defined(LWRES__PRINT_SOURCE)
39*00b67f09SDavid van Moolenbroek #define LWRES_PLATFORM_NEEDVSNPRINTF
40*00b67f09SDavid van Moolenbroek #endif
41*00b67f09SDavid van Moolenbroek 
42*00b67f09SDavid van Moolenbroek #if !defined(LWRES_PLATFORM_NEEDSPRINTF) && defined(LWRES__PRINT_SOURCE)
43*00b67f09SDavid van Moolenbroek #define LWRES_PLATFORM_NEEDSPRINTF
44*00b67f09SDavid van Moolenbroek #endif
45*00b67f09SDavid van Moolenbroek 
46*00b67f09SDavid van Moolenbroek /***
47*00b67f09SDavid van Moolenbroek  *** Macros.
48*00b67f09SDavid van Moolenbroek  ***/
49*00b67f09SDavid van Moolenbroek 
50*00b67f09SDavid van Moolenbroek #ifdef __GNUC__
51*00b67f09SDavid van Moolenbroek #define LWRES_FORMAT_PRINTF(fmt, args) \
52*00b67f09SDavid van Moolenbroek 	__attribute__((__format__(__printf__, fmt, args)))
53*00b67f09SDavid van Moolenbroek #else
54*00b67f09SDavid van Moolenbroek #define LWRES_FORMAT_PRINTF(fmt, args)
55*00b67f09SDavid van Moolenbroek #endif
56*00b67f09SDavid van Moolenbroek 
57*00b67f09SDavid van Moolenbroek /***
58*00b67f09SDavid van Moolenbroek  *** Functions
59*00b67f09SDavid van Moolenbroek  ***/
60*00b67f09SDavid van Moolenbroek 
61*00b67f09SDavid van Moolenbroek #ifdef LWRES_PLATFORM_NEEDVSNPRINTF
62*00b67f09SDavid van Moolenbroek #include <stdarg.h>
63*00b67f09SDavid van Moolenbroek #include <stddef.h>
64*00b67f09SDavid van Moolenbroek #endif
65*00b67f09SDavid van Moolenbroek 
66*00b67f09SDavid van Moolenbroek LWRES_LANG_BEGINDECLS
67*00b67f09SDavid van Moolenbroek 
68*00b67f09SDavid van Moolenbroek #ifdef LWRES_PLATFORM_NEEDVSNPRINTF
69*00b67f09SDavid van Moolenbroek int
70*00b67f09SDavid van Moolenbroek lwres__print_vsnprintf(char *str, size_t size, const char *format, va_list ap)
71*00b67f09SDavid van Moolenbroek      LWRES_FORMAT_PRINTF(3, 0);
72*00b67f09SDavid van Moolenbroek #ifdef vsnprintf
73*00b67f09SDavid van Moolenbroek #undef vsnprintf
74*00b67f09SDavid van Moolenbroek #endif
75*00b67f09SDavid van Moolenbroek #define vsnprintf lwres__print_vsnprintf
76*00b67f09SDavid van Moolenbroek 
77*00b67f09SDavid van Moolenbroek int
78*00b67f09SDavid van Moolenbroek lwres__print_snprintf(char *str, size_t size, const char *format, ...)
79*00b67f09SDavid van Moolenbroek      LWRES_FORMAT_PRINTF(3, 4);
80*00b67f09SDavid van Moolenbroek #ifdef snprintf
81*00b67f09SDavid van Moolenbroek #undef snprintf
82*00b67f09SDavid van Moolenbroek #endif
83*00b67f09SDavid van Moolenbroek #define snprintf lwres__print_snprintf
84*00b67f09SDavid van Moolenbroek #endif /* LWRES_PLATFORM_NEEDVSNPRINTF */
85*00b67f09SDavid van Moolenbroek 
86*00b67f09SDavid van Moolenbroek #ifdef LWRES_PLATFORM_NEEDSPRINTF
87*00b67f09SDavid van Moolenbroek int
88*00b67f09SDavid van Moolenbroek lwres__print_sprintf(char *str, const char *format, ...) LWRES_FORMAT_PRINTF(2, 3);
89*00b67f09SDavid van Moolenbroek #ifdef sprintf
90*00b67f09SDavid van Moolenbroek #undef sprintf
91*00b67f09SDavid van Moolenbroek #endif
92*00b67f09SDavid van Moolenbroek #define sprintf lwres__print_sprintf
93*00b67f09SDavid van Moolenbroek #endif
94*00b67f09SDavid van Moolenbroek 
95*00b67f09SDavid van Moolenbroek LWRES_LANG_ENDDECLS
96*00b67f09SDavid van Moolenbroek 
97*00b67f09SDavid van Moolenbroek #endif /* LWRES_PRINT_P_H */
98