initial commit
[meshfrac] / src / util.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include "util.h"
5
6 void *malloc_nf_impl(size_t sz, const char *file, int line)
7 {
8         void *p;
9         if(!(p = malloc(sz))) {
10                 fprintf(stderr, "%s:%d failed to allocate %lu bytes\n", file, line, (unsigned long)sz);
11                 abort();
12         }
13         return p;
14 }
15
16 void *calloc_nf_impl(size_t num, size_t sz, const char *file, int line)
17 {
18         void *p;
19         if(!(p = calloc(num, sz))) {
20                 fprintf(stderr, "%s:%d failed to allocate %lu bytes\n", file, line, (unsigned long)(sz * num));
21                 abort();
22         }
23         return p;
24 }
25
26 void *realloc_nf_impl(void *p, size_t sz, const char *file, int line)
27 {
28         if(!(p = realloc(p, sz))) {
29                 fprintf(stderr, "%s:%d failed to realloc %lu bytes\n", file, line, (unsigned long)sz);
30                 abort();
31         }
32         return p;
33 }
34
35 char *strdup_nf_impl(const char *s, const char *file, int line)
36 {
37         char *res;
38         if(!(res = strdup(s))) {
39                 fprintf(stderr, "%s:%d failed to duplicate string\n", file, line);
40                 abort();
41         }
42         return res;
43 }
44
45
46 int match_prefix(const char *str, const char *prefix)
47 {
48         while(*str && *prefix) {
49                 if(*str++ != *prefix++) {
50                         return 0;
51                 }
52         }
53         return *prefix ? 0 : 1;
54 }