/* $Id: common.h 328 2006-01-07 17:36:15Z tsaviran $
* -------------------------------------------------------
* Copyright (C) 2003-2006 Tommi Saviranta <wnd@iki.fi>
* (C) 2002 Sebastian Kienzl <zap@riot.org>
* -------------------------------------------------------
* 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.
*/
#ifndef COMMON_H_
#define COMMON_H_
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif /* ifdef HAVE_CONFIG_H */
#include <stdlib.h>
/* Error codes. */
#define ERR_CODE_HOME 2
#define ERR_CODE_CONFIG 3
#define ERR_CODE_NETWORK 4
#define ERR_CODE_LOG 5
#define ERR_CODE_MEMORY 9
/* Only if preprocessor supports __FILE__/__LINE__-stuff. */
#ifdef __FILE__
#define xstrcmp(s1, s2) _xstrcmp(s1, s2, __FILE__, __LINE__)
#define xstrncmp(s1, s2, n) _xstrncmp(s1, s2, n, __FILE__, __LINE__)
#define xstrcasecmp(s1, s2) _xstrcasecmp(s1, s2, __FILE__, __LINE__)
#define xstrncasecmp(s1, s2, n) _xstrncasecmp(s1, s2, n, __FILE__, __LINE__)
#define xstrcpy(dest, src) _xstrcpy(dest, src, __FILE__, __LINE__)
#define xstrncpy(dest, src, n) _xstrncpy(dest, src, n, __FILE__, __LINE__)
#define xstrdup(s) _xstrdup(s, __FILE__, __LINE__)
#define DEBUG_ADDPARMS , const char *file, const int line
#else /* ifdef __FILE__ */
#define xstrcmp(s1, s2) _xstrcmp(s1, s2)
#define xstrncmp(s1, s2, n) _xstrncmp(s1, s2)
#define xstrcasecmp(s1, s2) _xstrcasecmp(s1, s2)
#define xstrncasecmp(s1, s2, n) _xstrncasecmp(s1, s2, n)
#define xstrcpy(dest, src) _xstrcpy(dest, src)
#define xstrncpy(dest, src, n) _xstrncpy(dest, src, n)
#define xstrdup(s) _strdup(s)
#endif /*ifdef else __FILE__ */
int _xstrcmp(const char *s1, const char *s2 DEBUG_ADDPARMS);
int _xstrncmp(const char *s1, const char *s2, size_t n DEBUG_ADDPARMS);
int _xstrcasecmp(const char *s1, const char *s2 DEBUG_ADDPARMS);
int _xstrncasecmp(const char *s1, const char *s2, size_t n DEBUG_ADDPARMS);
char *_xstrcpy(char *dest, const char *src DEBUG_ADDPARMS);
char *_xstrncpy(char *dest, const char *src, size_t n DEBUG_ADDPARMS);
char *_xstrdup(const char *s DEBUG_ADDPARMS);
void *xmalloc(size_t size);
void *xcalloc(size_t, size_t);
void xfree(void *ptr);
/* void xnullfree(void **ptr); */
void *xrealloc(void *ptr, size_t size);
/* #define FREE(ptr) xnullfree((void *) &ptr) */
#define FREE(ptr) { xfree(ptr); ptr = NULL; }
#ifndef HAVE_VSNPRINTF
#include <stdio.h>
#include <stdarg.h>
int vsnprintf(char *str, size_t size, const char *format, va_list ap);
#endif /* ifndef HAVE_VSNPRINTF */
#ifndef HAVE_SNPRINTF
#include <stdio.h>
#include <stdarg.h>
int snprintf(char *str, size_t size, const char *format, ...);
#endif /* ifndef HAVE_SNPRINTF */
#endif /* ifndef COMMON_H_ */
syntax highlighted by Code2HTML, v. 0.9.1