tests fixes
[tedtools.git] / tmalloc.c
1 /*
2  * Copyright (c) 2004 Teodor Sigaev <teodor@sigaev.ru>
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *        notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *        notice, this list of conditions and the following disclaimer in the
12  *        documentation and/or other materials provided with the distribution.
13  * 3. Neither the name of the author nor the names of any co-contributors
14  *        may be used to endorse or promote products derived from this software
15  *        without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
18  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
23  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29
30 #include <stdlib.h>
31 #include <string.h>
32 #include <ctype.h>
33
34 #include "tlog.h"
35 #include "tmalloc.h"
36
37 void *
38 tmalloc(size_t size) {
39         void *ptr = malloc(size);
40         if (!ptr)
41                 tlog(TL_CRIT|TL_EXIT, "Can't allocate %d bytes", size);
42         return ptr;
43 }
44
45 void *
46 t0malloc(size_t size) {
47         void *ptr = tmalloc(size);
48         memset(ptr,0,size);
49         return ptr;
50 }
51
52 void *
53 trealloc(void * ptr, size_t size) {
54         if (ptr) {
55                 ptr = realloc(ptr,size);
56                 if (!ptr)
57                         tlog(TL_CRIT|TL_EXIT, "Can't reallocate to %d bytes", size);
58         } else
59                 ptr = tmalloc(size);    
60         return ptr;
61 }
62
63 void
64 tfree(void * ptr) {
65         free(ptr);
66 }
67
68 char * 
69 tstrdup(char * src) {
70         char * dest = strdup(src);
71         if (!dest) 
72                 tlog(TL_CRIT|TL_EXIT, "Can't strdup %d bytes", strlen(src)+1);
73         return dest;
74 }
75
76 char *
77 tnstrdup(char *src, int len) {
78         char *dest=(char*)tmalloc(len+1);
79         memcpy(dest, src, len);
80         dest[len]='\0';
81         return dest;
82 }
83
84 char *
85 strlower(char * src) {
86         char *ptr = src;
87         if (!src) return src;
88         while(*ptr) {
89                 *ptr = tolower(*(unsigned char *) ptr);
90                 ptr++; 
91         }
92         return src;
93 }
94
95 char *
96 strupper(char * src) {
97         char *ptr = src;
98         if (!src) return src;
99         while(*ptr) {
100                 *ptr = toupper(*(unsigned char *) ptr);
101                 ptr++; 
102         }
103         return src;
104 }
105
106 int
107 clrspace(char *buf) {
108         char *ptr=buf, *ptrc=buf;
109         while(*ptr) {
110                 if (!isspace(*ptr)) {
111                         *ptrc=*ptr;
112                         ptrc++;
113                 }
114                 ptr++;
115         }
116         *ptrc='\0';
117         return ptrc - buf;
118 }
119