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