summaryrefslogtreecommitdiff
path: root/include/ntp_malloc.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/ntp_malloc.h')
-rw-r--r--include/ntp_malloc.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/include/ntp_malloc.h b/include/ntp_malloc.h
new file mode 100644
index 0000000..4cde62e
--- /dev/null
+++ b/include/ntp_malloc.h
@@ -0,0 +1,61 @@
+/*
+ * Define malloc and friends.
+ */
+#ifndef NTP_MALLOC_H
+#define NTP_MALLOC_H
+
+#ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+#else
+# ifdef HAVE_MALLOC_H
+# include <malloc.h>
+# endif
+#endif
+
+/*
+ * Deal with platform differences declaring alloca()
+ * This comes nearly verbatim from:
+ *
+ * http://www.gnu.org/software/autoconf/manual/autoconf.html#Particular-Functions
+ *
+ * The only modifications were to remove C++ support and guard against
+ * redefining alloca.
+ */
+#ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+#elif defined __GNUC__
+# ifndef alloca
+# define alloca __builtin_alloca
+# endif
+#elif defined _AIX
+# ifndef alloca
+# define alloca __alloca
+# endif
+#elif defined _MSC_VER
+# include <malloc.h>
+# ifndef alloca
+# define alloca _alloca
+# endif
+#else
+# include <stddef.h>
+void * alloca(size_t);
+#endif
+
+#ifdef EREALLOC_IMPL
+# define EREALLOC_CALLSITE /* preserve __FILE__ and __LINE__ */
+#else
+# define EREALLOC_IMPL(ptr, newsz, filenm, loc) \
+ realloc(ptr, (newsz))
+#endif
+
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+# define zero_mem(p, s) bzero(p, s)
+#endif
+
+#ifndef zero_mem
+# define zero_mem(p, s) memset(p, 0, s)
+#endif
+#define ZERO(var) zero_mem(&(var), sizeof(var))
+
+#endif /* NTP_MALLOC_H */