• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/ap/gpl/timemachine/avahi-0.6.25/avahi-compat-howl/include/salt/
1#ifndef _salt_debug_h
2#define _salt_debug_h
3
4/*
5 * Copyright 2003, 2004 Porchdog Software. All rights reserved.
6 *
7 *	Redistribution and use in source and binary forms, with or without modification,
8 *	are permitted provided that the following conditions are met:
9 *
10 *		1. Redistributions of source code must retain the above copyright notice,
11 *		   this list of conditions and the following disclaimer.
12 *		2. Redistributions in binary form must reproduce the above copyright notice,
13 *		   this list of conditions and the following disclaimer in the documentation
14 *		   and/or other materials provided with the distribution.
15 *
16 *	THIS SOFTWARE IS PROVIDED BY PORCHDOG SOFTWARE ``AS IS'' AND ANY
17 *	EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 *	WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 *	IN NO EVENT SHALL THE HOWL PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
20 *	INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21 *	BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 *	DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23 *	OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
24 *	OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25 *	OF THE POSSIBILITY OF SUCH DAMAGE.
26 *
27 *	The views and conclusions contained in the software and documentation are those
28 *	of the authors and should not be interpreted as representing official policies,
29 *	either expressed or implied, of Porchdog Software.
30 */
31
32#include <salt/platform.h>
33#include <stdarg.h>
34
35
36#ifdef __cplusplus
37extern "C"
38{
39#endif
40
41
42#define SW_LOG_WARNING     1 << 0
43#define SW_LOG_ERROR       1 << 1
44#define SW_LOG_NOTICE      1 << 2
45#define SW_LOG_VERBOSE     1 << 3
46#define SW_LOG_OFF         0x0
47
48
49#if (defined( __GNUC__))
50
51#	if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)))
52
53#		define  __C99_VA_ARGS__	1
54
55#		define  __GNU_VA_ARGS__	0
56
57#	else
58
59#		define  __C99_VA_ARGS__	0
60
61#		define  __GNU_VA_ARGS__	1
62
63#	endif
64
65#else
66
67#	define  __C99_VA_ARGS__		0
68
69#	define  __GNU_VA_ARGS__		0
70
71#endif
72
73
74# if ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 9)))
75
76#	define	__SW_FUNCTION__			__func__
77
78#elif (defined( __GNUC__))
79
80#	define	__SW_FUNCTION__			__PRETTY_FUNCTION__
81
82#elif( defined(_MSC_VER ) && !defined(_WIN32_WCE))
83
84#	define	__SW_FUNCTION__			__FUNCTION__
85
86#else
87
88#	define	__SW_FUNCTION__			""
89
90#endif
91
92
93#define sw_check(expr, label, action)			\
94do 														\
95{															\
96	if (!(expr)) 										\
97	{														\
98		{													\
99			action;										\
100		}													\
101		goto label;										\
102	}														\
103} while (0)
104
105
106#define sw_check_log(expr, label, action)		\
107do 														\
108{															\
109	if (!(expr)) 										\
110	{														\
111		sw_print_assert(0, NULL, __FILE__, __SW_FUNCTION__, __LINE__);	\
112		{													\
113			action;										\
114		}													\
115		goto label;										\
116	}														\
117} while (0)
118
119
120#define sw_check_okay(code, label)				\
121do 														\
122{															\
123	if ((int) code != 0) 							\
124	{														\
125		goto label;										\
126	}														\
127} while (0)
128
129
130#define sw_check_okay_log(code, label)			\
131do 														\
132{															\
133	if ((int) code != 0) 							\
134	{														\
135		sw_print_assert((int) code, NULL, __FILE__, __SW_FUNCTION__, __LINE__);	\
136		goto label;										\
137	}														\
138} while ( 0 )
139
140
141#define sw_translate_error(expr, errno)		((expr) ? 0 : (errno))
142
143
144#if defined(WIN32)
145
146#	define sw_socket_errno()		(int) WSAGetLastError()
147#	define sw_set_socket_errno(X)	WSASetLastError(X)
148#	define sw_system_errno()		(int) GetLastError()
149#	define sw_set_system_errno(X)	SetLastError(X)
150
151#else
152
153#	define sw_socket_errno()		errno
154#	define sw_set_socket_errno(X)	errno = X
155#	define sw_system_errno()		errno
156#	define sw_set_system_errno(X)	errno = X
157
158#endif
159
160
161#if !defined(NDEBUG)
162
163#	define sw_assert(X)		\
164									\
165	do								\
166	{								\
167		if (!(X))				\
168		{							\
169			sw_print_assert( 0, #X, __FILE__, __SW_FUNCTION__, __LINE__); \
170		}							\
171	} while( 0 )
172
173#else
174
175#	define sw_assert(X)
176
177#endif
178
179
180void HOWL_API
181sw_print_assert(
182		int					code,
183		sw_const_string	assert_string,
184		sw_const_string	file,
185		sw_const_string	func,
186		int					line);
187
188
189#if !defined(NDEBUG)
190
191void HOWL_API
192sw_print_debug(
193		int					level,
194		sw_const_string	format,
195		...);
196
197#	if (__C99_VA_ARGS__)
198
199#		define  sw_debug(...)			sw_print_debug(__VA_ARGS__)
200
201#	else
202
203#		define  sw_debug					sw_print_debug
204
205#	endif
206
207#else
208
209#	if (__C99_VA_ARGS__)
210
211#		define  sw_debug(...)
212
213#	else
214
215#		define  sw_debug					while( 0 )
216
217#	endif
218
219#endif
220
221
222#define SW_UNUSED_PARAM(X)	(void) (X)
223
224
225#if defined(__cplusplus)
226}
227#endif
228
229
230#endif
231