1
/***********************************************************************
4
(c) 1994, 1995 Innobase Oy
6
Created 5/30/1994 Heikki Tuuri
7
************************************************************************/
16
/* The total amount of memory currently allocated from the OS with malloc */
17
extern ulint ut_total_allocated_memory;
21
ut_memcpy(void* dest, const void* sour, ulint n);
25
ut_memmove(void* dest, const void* sour, ulint n);
29
ut_memcmp(const void* str1, const void* str2, ulint n);
32
/**************************************************************************
33
Allocates memory. Sets it also to zero if UNIV_SET_MEM_TO_ZERO is
34
defined and set_to_zero is TRUE. */
39
/* out, own: allocated memory */
40
ulint n, /* in: number of bytes to allocate */
41
ibool set_to_zero, /* in: TRUE if allocated memory
42
should be set to zero if
43
UNIV_SET_MEM_TO_ZERO is defined */
44
ibool assert_on_error); /* in: if TRUE, we crash mysqld if
45
the memory cannot be allocated */
46
/**************************************************************************
47
Allocates memory. Sets it also to zero if UNIV_SET_MEM_TO_ZERO is
53
/* out, own: allocated memory */
54
ulint n); /* in: number of bytes to allocate */
55
/**************************************************************************
56
Tests if malloc of n bytes would succeed. ut_malloc() asserts if memory runs
57
out. It cannot be used if we want to return an error message. Prints to
58
stderr a message if fails. */
63
/* out: TRUE if succeeded */
64
ulint n); /* in: try to allocate this many bytes */
65
/**************************************************************************
66
Frees a memory block allocated with ut_malloc. */
71
void* ptr); /* in, own: memory block */
72
/**************************************************************************
73
Implements realloc. This is needed by /pars/lexyy.c. Otherwise, you should not
74
use this function because the allocation functions in mem0mem.h are the
75
recommended ones in InnoDB.
77
man realloc in Linux, 2004:
79
realloc() changes the size of the memory block pointed to
80
by ptr to size bytes. The contents will be unchanged to
81
the minimum of the old and new sizes; newly allocated mem�
82
ory will be uninitialized. If ptr is NULL, the call is
83
equivalent to malloc(size); if size is equal to zero, the
84
call is equivalent to free(ptr). Unless ptr is NULL, it
85
must have been returned by an earlier call to malloc(),
86
calloc() or realloc().
89
realloc() returns a pointer to the newly allocated memory,
90
which is suitably aligned for any kind of variable and may
91
be different from ptr, or NULL if the request fails. If
92
size was equal to 0, either NULL or a pointer suitable to
93
be passed to free() is returned. If realloc() fails the
94
original block is left untouched - it is not freed or
100
/* out, own: pointer to new mem block or NULL */
101
void* ptr, /* in: pointer to old block or NULL */
102
ulint size); /* in: desired size */
103
/**************************************************************************
104
Frees in shutdown all allocated memory not freed yet. */
107
ut_free_all_mem(void);
108
/*=================*/
112
ut_strcpy(char* dest, const char* sour);
116
ut_strlen(const char* str);
120
ut_strcmp(const char* str1, const char* str2);
122
/**************************************************************************
123
Copies up to size - 1 characters from the NUL-terminated string src to
124
dst, NUL-terminating the result. Returns strlen(src), so truncation
125
occurred if the return value >= size. */
130
/* out: strlen(src) */
131
char* dst, /* in: destination buffer */
132
const char* src, /* in: source buffer */
133
ulint size); /* in: size of destination buffer */
135
/**************************************************************************
136
Like ut_strlcpy, but if src doesn't fit in dst completely, copies the last
137
(size - 1) bytes of src, not the first. */
142
/* out: strlen(src) */
143
char* dst, /* in: destination buffer */
144
const char* src, /* in: source buffer */
145
ulint size); /* in: size of destination buffer */
147
/**************************************************************************
148
Compute strlen(ut_strcpyq(str, q)). */
153
/* out: length of the string when quoted */
154
const char* str, /* in: null-terminated string */
155
char q); /* in: the quote character */
157
/**************************************************************************
158
Make a quoted copy of a NUL-terminated string. Leading and trailing
159
quotes will not be included; only embedded quotes will be escaped.
160
See also ut_strlenq() and ut_memcpyq(). */
165
/* out: pointer to end of dest */
166
char* dest, /* in: output buffer */
167
char q, /* in: the quote character */
168
const char* src); /* in: null-terminated string */
170
/**************************************************************************
171
Make a quoted copy of a fixed-length string. Leading and trailing
172
quotes will not be included; only embedded quotes will be escaped.
173
See also ut_strlenq() and ut_strcpyq(). */
178
/* out: pointer to end of dest */
179
char* dest, /* in: output buffer */
180
char q, /* in: the quote character */
181
const char* src, /* in: string to be quoted */
182
ulint len); /* in: length of src */
184
/**************************************************************************
185
Return the number of times s2 occurs in s1. Overlapping instances of s2
186
are only counted once. */
191
/* out: the number of times s2 occurs in s1 */
192
const char* s1, /* in: string to search in */
193
const char* s2); /* in: string to search for */
195
/**************************************************************************
196
Replace every occurrence of s1 in str with s2. Overlapping instances of s1
197
are only replaced once. */
202
/* out, own: modified string, must be
203
freed with mem_free() */
204
const char* str, /* in: string to operate on */
205
const char* s1, /* in: string to replace */
206
const char* s2); /* in: string to replace s1 with */
208
/**************************************************************************
209
Converts a raw binary data to a '\0'-terminated hex string. The output is
210
truncated if there is not enough space in "hex", make sure "hex_size" is at
211
least (2 * raw_size + 1) if you do not want this to happen. Returns the
212
actual number of characters written to "hex" (including the '\0'). */
217
/* out: number of chars written */
218
const void* raw, /* in: raw data */
219
ulint raw_size, /* in: "raw" length in bytes */
220
char* hex, /* out: hex string */
221
ulint hex_size); /* in: "hex" size in bytes */
223
/***********************************************************************
224
Adds single quotes to the start and end of string and escapes any quotes
225
by doubling them. Returns the number of bytes that were written to "buf"
226
(including the terminating '\0'). If buf_size is too small then the
227
trailing bytes from "str" are discarded. */
232
/* out: number of bytes
234
const char* str, /* in: string */
235
ulint str_len, /* in: string length in bytes */
236
char* buf, /* out: output buffer */
237
ulint buf_size); /* in: output buffer size