Files
bongo/import/log4c/sd/error.h
T
2007-01-22 23:37:12 +00:00

51 lines
1.3 KiB
C

/* $Id: error.h,v 1.5 2005/12/15 22:05:09 rbyrne Exp $
*
* Copyright 2001-2003, Meiosys (www.meiosys.com). All rights reserved.
* See the COPYING file for the terms of usage and distribution.
*/
#ifndef __sd_error_h
#define __sd_error_h
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#ifndef _WIN32
#ifdef __SD_DEBUG__
# define sd_debug(a_format, ...) \
(getenv("SD_DEBUG") ? fprintf(stderr, "[DEBUG] %s() at %s:%d "a_format"\n", __FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__ ) : 0)
# define sd_error(a_format, ...) \
(getenv("SD_ERROR") ? fprintf(stderr, "[ERROR] %s() at %s:%d "a_format"\n", __FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__ ) : 0)
# define sd_oserror(afunc, aparam) \
(sd_error("%s(%s): #%d %s", afunc, aparam, errno, strerror(errno)), -1)
#else
# define sd_debug(...)
# define sd_error(...)
# define sd_oserror(...) -1
#endif /* __SD_DEBUG__ */
#else
/* On windows the functions are always there, but the body will be
null. All because no variable arg macros.
Could go for the define sd_debug to always take 5 args for example....
but implies extensive code changes.
*/
# define sd_debug sd_debug_fn
# define sd_error sd_error_fn
# define sd_oserror sd_oserror_fn
#endif
/* backward compatibility */
#define os_error sd_oserror
#endif /* __sd_error_h */