- clean up a bit
[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_oom(size_t num, size_t len)
17 {
18   if (num)
19     fprintf(stderr, "Out of memory allocating %zu*%zu bytes!\n", num, len);
20   else
21     fprintf(stderr, "Out of memory allocating %zu bytes!\n", num);
22   exit(1);
23 }
24
25 void *
26 sat_malloc(size_t len)
27 {
28   void *r = malloc(len ? len : 1);
29   if (!r)
30     sat_oom(0, len);
31   return r;
32 }
33
34 void *
35 sat_malloc2(size_t num, size_t len)
36 {
37   if (len && (num * len) / len != num)
38     sat_oom(num, len);
39   return sat_malloc(num * len);
40 }
41
42 void *
43 sat_realloc(void *old, size_t len)
44 {
45   if (old == 0)
46     old = malloc(len ? len : 1);
47   else
48     old = realloc(old, len ? len : 1);
49   if (!old)
50     sat_oom(0, len);
51   return old;
52 }
53
54 void *
55 sat_realloc2(void *old, size_t num, size_t len)
56 {
57   if (len && (num * len) / len != num)
58    sat_oom(num, len);
59   return sat_realloc(old, num * len);
60 }
61
62 void *
63 sat_calloc(size_t num, size_t len)
64 {
65   void *r;
66   if (num == 0 || len == 0)
67     r = malloc(1);
68   else
69     r = calloc(num, len);
70   if (!r)
71     sat_oom(num, len);
72   return r;
73 }
74
75 void *
76 sat_free(void *mem)
77 {
78   if (mem)
79     free(mem);
80   return 0;
81 }
82