1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <syslog.h>
4 #include <string.h>
5 #include "main.h"
6
mymalloc(int size,char * what)7 void * mymalloc(int size, char *what)
8 {
9 void *dummy = malloc(size);
10 if (!dummy)
11 {
12 fprintf(stderr, "failed to allocate %d bytes for %s\n", size, what);
13 exit(1);
14 }
15
16 return dummy;
17 }
18
myrealloc(void * oldp,int newsize,char * what)19 void * myrealloc(void *oldp, int newsize, char *what)
20 {
21 void *dummy = realloc(oldp, newsize);
22 if (!dummy)
23 {
24 fprintf(stderr, "failed to reallocate to %d bytes for %s\n", newsize, what);
25 exit(1);
26 }
27
28 return dummy;
29 }
30
mystrdup(char * in)31 char * mystrdup(char *in)
32 {
33 char *dummy = strdup(in);
34 if (!dummy)
35 {
36 fprintf(stderr, "failed to copy string '%s': out of memory?\n", in);
37 exit(1);
38 }
39
40 return dummy;
41 }
42
resize(void ** pnt,int n,int * len,int size)43 int resize(void **pnt, int n, int *len, int size)
44 {
45 if (unlikely(n == *len))
46 {
47 int dummylen = (*len) == 0 ? 2 : (*len) * 2;
48 void *dummypnt = (void *)myrealloc(*pnt, dummylen * size, "resize()");
49
50 if (!dummypnt)
51 {
52 fprintf(stderr, "resize::realloct: Cannot (re-)allocate %d bytes of memory\n", dummylen * size);
53 return -1;
54 }
55
56 *len = dummylen;
57 *pnt = dummypnt;
58 }
59 else if (unlikely(n > *len || n<0 || *len<0))
60 {
61 fprintf(stderr, "resize: fatal memory corruption problem: n > len || n<0 || len<0!\n");
62 exit(1);
63 }
64
65 return 0;
66 }
67
free_array(void *** array,int * n,int * len)68 void free_array(void ***array, int *n, int *len)
69 {
70 int loop;
71
72 for(loop=0; loop<*n; loop++)
73 {
74 free((*array)[loop]);
75 }
76 free(*array);
77
78 *array = NULL;
79 *n = *len = 0;
80 }
81