diff options
Diffstat (limited to 'avahi-compat-howl/include/salt/debug.h')
-rw-r--r-- | avahi-compat-howl/include/salt/debug.h | 230 |
1 files changed, 230 insertions, 0 deletions
diff --git a/avahi-compat-howl/include/salt/debug.h b/avahi-compat-howl/include/salt/debug.h new file mode 100644 index 0000000..03bd453 --- /dev/null +++ b/avahi-compat-howl/include/salt/debug.h @@ -0,0 +1,230 @@ +#ifndef _salt_debug_h +#define _salt_debug_h + +/* + * Copyright 2003, 2004 Porchdog Software. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY PORCHDOG SOFTWARE ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE HOWL PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those + * of the authors and should not be interpreted as representing official policies, + * either expressed or implied, of Porchdog Software. + */ + +#include <salt/platform.h> +#include <stdarg.h> + + +#ifdef __cplusplus +extern "C" +{ +#endif + + +#define SW_LOG_WARNING 1 << 0 +#define SW_LOG_ERROR 1 << 1 +#define SW_LOG_NOTICE 1 << 2 +#define SW_LOG_VERBOSE 1 << 3 +#define SW_LOG_OFF 0x0 + + +#if (defined( __GNUC__)) + +# if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3))) + +# define __C99_VA_ARGS__ 1 + +# define __GNU_VA_ARGS__ 0 + +# else + +# define __C99_VA_ARGS__ 0 + +# define __GNU_VA_ARGS__ 1 + +# endif + +#else + +# define __C99_VA_ARGS__ 0 + +# define __GNU_VA_ARGS__ 0 + +#endif + + +# if ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 9))) + +# define __SW_FUNCTION__ __func__ + +#elif (defined( __GNUC__)) + +# define __SW_FUNCTION__ __PRETTY_FUNCTION__ + +#elif( defined(_MSC_VER ) && !defined(_WIN32_WCE)) + +# define __SW_FUNCTION__ __FUNCTION__ + +#else + +# define __SW_FUNCTION__ "" + +#endif + + +#define sw_check(expr, label, action) \ +do \ +{ \ + if (!(expr)) \ + { \ + { \ + action; \ + } \ + goto label; \ + } \ +} while (0) + + +#define sw_check_log(expr, label, action) \ +do \ +{ \ + if (!(expr)) \ + { \ + sw_print_assert(0, NULL, __FILE__, __SW_FUNCTION__, __LINE__); \ + { \ + action; \ + } \ + goto label; \ + } \ +} while (0) + + +#define sw_check_okay(code, label) \ +do \ +{ \ + if ((int) code != 0) \ + { \ + goto label; \ + } \ +} while (0) + + +#define sw_check_okay_log(code, label) \ +do \ +{ \ + if ((int) code != 0) \ + { \ + sw_print_assert((int) code, NULL, __FILE__, __SW_FUNCTION__, __LINE__); \ + goto label; \ + } \ +} while ( 0 ) + + +#define sw_translate_error(expr, errno) ((expr) ? 0 : (errno)) + + +#if defined(WIN32) + +# define sw_socket_errno() (int) WSAGetLastError() +# define sw_set_socket_errno(X) WSASetLastError(X) +# define sw_system_errno() (int) GetLastError() +# define sw_set_system_errno(X) SetLastError(X) + +#else + +# define sw_socket_errno() errno +# define sw_set_socket_errno(X) errno = X +# define sw_system_errno() errno +# define sw_set_system_errno(X) errno = X + +#endif + + +#if !defined(NDEBUG) + +# define sw_assert(X) \ + \ + do \ + { \ + if (!(X)) \ + { \ + sw_print_assert( 0, #X, __FILE__, __SW_FUNCTION__, __LINE__); \ + } \ + } while( 0 ) + +#else + +# define sw_assert(X) + +#endif + + +void HOWL_API +sw_print_assert( + int code, + sw_const_string assert_string, + sw_const_string file, + sw_const_string func, + int line); + + +#if !defined(NDEBUG) + +void HOWL_API +sw_print_debug( + int level, + sw_const_string format, + ...); + +# if (__C99_VA_ARGS__) + +# define sw_debug(...) sw_print_debug(__VA_ARGS__) + +# else + +# define sw_debug sw_print_debug + +# endif + +#else + +# if (__C99_VA_ARGS__) + +# define sw_debug(...) + +# else + +# define sw_debug while( 0 ) + +# endif + +#endif + + +#define SW_UNUSED_PARAM(X) (void) (X) + + +#if defined(__cplusplus) +} +#endif + + +#endif |