- add pool_set_installed() function, remove no longer needed "installed"
[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", len);
22   abort();
23   exit(1);
24 }
25
26 void *
27 sat_malloc(size_t len)
28 {
29   void *r = malloc(len ? len : 1);
30   if (!r)
31     sat_oom(0, len);
32   return r;
33 }
34
35 void *
36 sat_malloc2(size_t num, size_t len)
37 {
38   if (len && (num * len) / len != num)
39     sat_oom(num, len);
40   return sat_malloc(num * len);
41 }
42
43 void *
44 sat_realloc(void *old, size_t len)
45 {
46   if (old == 0)
47     old = malloc(len ? len : 1);
48   else
49     old = realloc(old, len ? len : 1);
50   if (!old)
51     sat_oom(0, len);
52   return old;
53 }
54
55 void *
56 sat_realloc2(void *old, size_t num, size_t len)
57 {
58   if (len && (num * len) / len != num)
59     sat_oom(num, len);
60   return sat_realloc(old, num * len);
61 }
62
63 void *
64 sat_calloc(size_t num, size_t len)
65 {
66   void *r;
67   if (num == 0 || len == 0)
68     r = malloc(1);
69   else
70     r = calloc(num, len);
71   if (!r)
72     sat_oom(num, len);
73   return r;
74 }
75
76 void *
77 sat_free(void *mem)
78 {
79   if (mem)
80     free(mem);
81   return 0;
82 }
83