view common/logging.h @ 320:1628615d904e

Replaced snprintf and static buffers with xasprintf.
author Sascha Wilde <wilde@intevation.de>
date Fri, 04 Apr 2014 18:00:40 +0200
parents b033b16dd290
children b1059360a0c7
line wrap: on
line source
#ifndef COMMON_LOGGING_H
#define COMMON_LOGGING_H

#ifdef __cplusplus
extern "C" {
#endif

/*
 * @file
 * @brief Logging and debugging functions
 */

#ifdef WIN32

#include <windows.h>

/** @brief Gets the localized error message for the last error
 * returned by GetLastError
 *
 * @returns utf8 error message that needs to be freed by the caller.
 **/

char *getLastErrorMsg();

#endif

/**
 * @def DEBUGOUTPUT
 * @brief If defined code for extra debugging output will be generated.
 *
 * Will be defined if current build is not an RELEASE_BUILD.
 */
#ifndef RELEASE_BUILD
#define DEBUGOUTPUT
#endif

/**
 * @def DEBUGPREFIX
 * @brief A string prepended to debug output.
 *
 * Should be defined to indicate which module created the output.
 */
#ifndef DEBUGPREFIX
#define DEBUGPREFIX ""
#endif

/**
 * @def DEBUGPRINTF(fmt, ...)
 * @brief Debug printf
 *
 * Prints to stderr if DEBUGOUTPUT is defined.
 */
#ifdef DEBUGOUTPUT
#define DEBUGPRINTF(fmt, ...) fprintf(stderr, DEBUGPREFIX "DEBUG: " fmt, ##__VA_ARGS__);
#else
#define DEBUGPRINTF(fmt, ...)
#endif

/**
 * @def DEBUGMSG(msg)
 * @brief Prints a static debug message
 *
 * If DEBUGOUTPUT is defined this. Prints a debug message
 * to stdout on Unix systems. On Windows OutputDebugString is used.
 */
#ifdef DEBUGOUTPUT
# ifdef WIN32
#  define DEBUGMSG(msg) OutputDebugString (msg);
# else
#  define DEBUGMSG(msg) printf (DEBUGPREFIX "DEBUG: " msg "\n");
# endif
#else
# define DEBUGPRINTF(fmt, ...)
#endif


/**
 * @def ERRORPRINTF(fmt, ...)
 * @brief Debug printf
 *
 * Prints an error to stderr
 */
#define ERRORPRINTF(fmt, ...) fprintf(stderr, DEBUGPREFIX "ERROR: " fmt, ##__VA_ARGS__);



#ifdef __cplusplus
}
#endif

#endif /* COMMON_LOGGING_H */

http://wald.intevation.org/projects/trustbridge/