changes to infotojson for storing dependencies from get_deps()
[ccan] / tools / _infotojson / utils.c
1 #define _GNU_SOURCE
2 #include <stdio.h>
3 #include "utils.h"
4 #include <string.h>
5 #include <limits.h>
6 #include <stdint.h>
7 #include <stdlib.h>
8 #include <unistd.h>
9 #include <errno.h>
10 #include <err.h>
11 #include <assert.h>
12 #include "utils.h"
13
14 void * palloc(int size)
15 {
16         void *p;
17         p = malloc(size);
18         if(p == NULL) {
19                 printf("Error Malloc does not allocate\n");
20                 exit(1);
21         }
22         return p;
23 }
24
25 char *aprintf(const char *fmt, ...)
26 {
27         char *ret;
28         va_list arglist;
29
30         va_start(arglist, fmt);
31         vasprintf(&ret, fmt, arglist);
32         va_end(arglist);
33         return ret;
34 }
35
36 void strreplace(char * str, char src, char dest)
37 {
38         int i;
39         for(i = 0; str[i]; i++)
40                 if(str[i] == src)
41                         str[i] = dest;
42 }
43
44 void *_realloc_array(void *ptr, size_t size, size_t num)
45 {
46         if (num >= SIZE_MAX/size)
47                 return NULL;
48         return realloc_nofail(ptr, size * num);
49 }
50
51 void *realloc_nofail(void *ptr, size_t size)
52 {
53         ptr = realloc(ptr, size);
54         if (ptr)
55                 return ptr;
56         err(1, "realloc of %zu failed", size);
57 }