summaryrefslogtreecommitdiff
path: root/pkgtools/pkg_install/files/lib/defs.h
diff options
context:
space:
mode:
Diffstat (limited to 'pkgtools/pkg_install/files/lib/defs.h')
-rw-r--r--pkgtools/pkg_install/files/lib/defs.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/pkgtools/pkg_install/files/lib/defs.h b/pkgtools/pkg_install/files/lib/defs.h
new file mode 100644
index 00000000000..0a076049242
--- /dev/null
+++ b/pkgtools/pkg_install/files/lib/defs.h
@@ -0,0 +1,92 @@
+/* $NetBSD: defs.h,v 1.1.1.1 2002/12/20 18:13:59 schmonz Exp $ */
+
+/*
+ * Copyright (c) 1999-2000 Alistair G. Crooks. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Alistair G. Crooks.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef DEFS_H_
+#define DEFS_H_
+
+#ifdef HAVE_ERR_H
+#include <err.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+
+#define NEWARRAY(type,ptr,size,where,action) do { \
+ if ((ptr = (type *) calloc(sizeof(type), (unsigned)(size))) == NULL) { \
+ warn("%s: can't allocate %lu bytes", where, \
+ (unsigned long)(size * sizeof(type))); \
+ action; \
+ } \
+} while( /* CONSTCOND */ 0)
+
+#define RENEW(type,ptr,size,where,action) do { \
+ type *newptr; \
+ if ((newptr = (type *) realloc(ptr, sizeof(type) * (size))) == NULL) { \
+ warn("%s: can't realloc %lu bytes", where, \
+ (unsigned long)(size * sizeof(type))); \
+ action; \
+ } \
+ ptr = newptr; \
+} while( /* CONSTCOND */ 0)
+
+#define NEW(type, ptr, where, action) NEWARRAY(type, ptr, 1, where, action)
+
+#define FREE(ptr) (void) free(ptr)
+
+#define ALLOC(type, v, size, c, init, where, action) do { \
+ if (size == 0) { \
+ size = init; \
+ NEWARRAY(type, v, size, where ": new", action); \
+ } else if (c == size) { \
+ size *= 2; \
+ RENEW(type, v, size, where ": renew", action); \
+ } \
+} while( /* CONSTCOND */ 0)
+
+#ifndef MIN
+#define MIN(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+#ifndef MAX
+#define MAX(a,b) (((a) > (b)) ? (a) : (b))
+#endif
+
+#ifndef ABS
+#define ABS(a) (((a) < 0) ? -(a) : (a))
+#endif
+
+#define STRNCPY(to, from, size) do { \
+ (void) strncpy(to, from, size); \
+ to[(size) - 1] = 0; \
+} while( /* CONSTCOND */ 0)
+
+#endif /* !DEFS_H_ */