- rename xmalloc/... functions to sat_malloc, as we're a
[platform/upstream/libsolv.git] / src / util.c
1 /*
2  * Copyright (c) 2007, Novell Inc.
3  *
4  * This program is licensed under the BSD license, read LICENSE.BSD
5  * for further information
6  */
7
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include <unistd.h>
11 #include <string.h>
12
13 #include "util.h"
14
15 void *
16 sat_malloc(size_t len)
17 {
18   void *r = malloc(len ? len : 1);
19   if (r)
20     return r;
21   fprintf(stderr, "Out of memory allocating %zu bytes!\n", len);
22   exit(1);
23 }
24
25 void *
26 sat_malloc2(size_t num, size_t len)
27 {
28   if (len && (num * len) / len != num)
29     {
30       fprintf(stderr, "Out of memory allocating %zu*%zu bytes!\n", num, len);
31       exit(1);
32     }
33   return sat_malloc(num * len);
34 }
35
36 void *
37 sat_realloc(void *old, size_t len)
38 {
39   if (old == 0)
40     old = malloc(len ? len : 1);
41   else
42     old = realloc(old, len ? len : 1);
43   if (old)
44     return old;
45   fprintf(stderr, "Out of memory reallocating %zu bytes!\n", len);
46   exit(1);
47 }
48
49 void *
50 sat_realloc2(void *old, size_t num, size_t len)
51 {
52   if (len && (num * len) / len != num)
53     {
54       fprintf(stderr, "Out of memory allocating %zu*%zu bytes!\n", num, len);
55       exit(1);
56     }
57   return sat_realloc(old, num * len);
58 }
59
60 void *
61 sat_calloc(size_t num, size_t len)
62 {
63   void *r;
64   if (num == 0 || len == 0)
65     r = malloc(1);
66   else
67     r = calloc(num, len);
68   if (r)
69     return r;
70   fprintf(stderr, "Out of memory allocating %zu bytes!\n", num * len);
71   exit(1);
72 }
73
74 void *
75 sat_free(void *mem)
76 {
77   if (mem)
78     free(mem);
79   return 0;
80 }
81