/*
Copyright (C) 1999-2004 IC & S dbmail@ic-s.nl
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* $Id: debug.h 1550 2005-01-07 12:23:02Z paul $
*
* debug.h : headers for debug.c */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "dbmail.h"
#include <stdio.h>
#include <sys/syslog.h>
#include <stdarg.h>
#ifdef USE_GC
#define GC_DEBUG
#include <gc/gc.h>
#endif
#ifndef _DEBUG_H
#define _DEBUG_H
extern int TRACE_TO_SYSLOG;
extern int TRACE_VERBOSE;
extern int TRACE_LEVEL; /* 5: maximum debugging */
/* 2: normal operations */
typedef enum {
TRACE_FATAL = -1,
TRACE_STOP,
TRACE_MESSAGE,
TRACE_ERROR,
TRACE_WARNING,
TRACE_INFO,
TRACE_DEBUG
} trace_t;
#define memtst(tstbool) func_memtst (__FILE__,__LINE__,tstbool)
/*
#define dm_malloc(s) __debug_malloc(s, __FILE__, __LINE__)
#define dm_free(p) __debug_free(p, __FILE__, __LINE__)
#define __DEBUG_TRACE_MEMALLOC
*/
#ifdef USE_GC
#define dm_malloc(s) GC_MALLOC(s)
#define dm_free(p) GC_FREE(p)
#define dm_calloc(n,p) GC_MALLOC((n) * (p))
#define dm_realloc(n,p) GC_REALLOC((n),(p))
#else
#define dm_malloc(s) malloc(s)
#define dm_free(p) free(p)
#define dm_calloc(n,p) calloc(n,p)
#define dm_realloc(n,p) realloc(n,p)
#endif
#ifdef __DEBUG_TRACE_MEMALLOC
#undef __DEBUG_TRACE_MEMALLOC
#endif
void func_memtst(const char *filename, int line, int tst);
void trace(trace_t level, char *formatstring, ...) PRINTF_ARGS(2, 3);
void configure_debug(trace_t level, int trace_syslog, int trace_verbose);
void *__debug_malloc(unsigned long size, const char *fname, int linenr);
void __debug_free(void *ptr, const char *fname, int linenr);
void __debug_dumpallocs(void);
char * dm_strdup(const char *str);
#endif
syntax highlighted by Code2HTML, v. 0.9.1