2 * FCRON - periodic command scheduler
4 * Copyright 2000-2013 Thibault Godouet <fcron@free.fr>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 * The GNU General Public License can also be found in the file
21 * `LICENSE' that comes with the fcron source distribution.
24 /* mem: manage memory (de)allocation.
25 * Mostly wrappers around standard functions to check for errors.
26 * We also always set variable to NULL after free()ing them, and check
27 * if a variable is NULL before attempting to free it. */
33 #define Alloc(PTR, TYPE) \
35 if ( ( (PTR)=calloc(1, sizeof(TYPE)) ) == NULL ) { \
36 die_e("Could not calloc."); \
40 #define Free_safe(PTR) \
42 if ((PTR) != NULL) { \
48 #define Set(VAR, VALUE) \
51 (VAR) = strdup2((VALUE)); \
55 /* functions prototypes */
57 extern char *strndup (const char *s, size_t n); /* Solaris 10 has no strndup() */
59 extern char *strdup2(const char *);
60 extern char *strndup2(const char *, size_t n);
61 extern void *alloc_safe(size_t len, const char *desc);
62 extern void *realloc_safe(void *ptr, size_t len, const char *desc);
64 #endif /* __MEM_H__ */