74
79
/* Prototypes for string functions */
77
extern void bmove512(uchar *dst,const uchar *src,size_t len);
81
extern void bmove512(unsigned char *dst,const unsigned char *src,size_t len);
80
extern void bmove_upp(uchar *dst,const uchar *src,size_t len);
81
extern void bchange(uchar *dst,size_t old_len,const uchar *src,
84
extern void bmove_upp(unsigned char *dst,const unsigned char *src,size_t len);
86
extern void bchange(unsigned char *dst,size_t old_len,const unsigned char *src,
82
87
size_t new_len,size_t tot_len);
83
88
extern void strappend(char *s,size_t len,char fill);
84
89
extern char *strend(const char *s);
98
103
extern char *strnmov(char *dst,const char *src,size_t n);
99
104
extern char *strsuff(const char *src,const char *suffix);
100
105
extern char *strcont(const char *src,const char *set);
101
extern char *strxcat _VARARGS((char *dst,const char *src, ...));
102
extern char *strxmov _VARARGS((char *dst,const char *src, ...));
103
extern char *strxcpy _VARARGS((char *dst,const char *src, ...));
104
extern char *strxncat _VARARGS((char *dst,size_t len, const char *src, ...));
105
extern char *strxnmov _VARARGS((char *dst,size_t len, const char *src, ...));
106
extern char *strxncpy _VARARGS((char *dst,size_t len, const char *src, ...));
106
extern char *strxcat(char *dst,const char *src, ...);
107
extern char *strxmov(char *dst,const char *src, ...);
108
extern char *strxcpy(char *dst,const char *src, ...);
109
extern char *strxncat(char *dst,size_t len, const char *src, ...);
110
extern char *strxnmov(char *dst,size_t len, const char *src, ...);
111
extern char *strxncpy(char *dst,size_t len, const char *src, ...);
108
113
/* Prototypes of normal stringfunctions (with may ours) */
140
145
double my_strtod(const char *str, char **end, int *error);
141
146
double my_atof(const char *nptr);
142
size_t my_fcvt(double x, int precision, char *to, my_bool *error);
147
size_t my_fcvt(double x, int precision, char *to, bool *error);
143
148
size_t my_gcvt(double x, my_gcvt_arg_type type, int width, char *to,
146
151
#define NOT_FIXED_DEC 31
174
179
extern char *ullstr(int64_t value,char *buff);
175
180
#ifndef HAVE_STRTOUL
176
181
extern long strtol(const char *str, char **ptr, int base);
177
extern ulong strtoul(const char *str, char **ptr, int base);
182
extern unsigned long strtoul(const char *str, char **ptr, int base);
180
185
extern char *int2str(long val, char *dst, int radix, int upcase);
223
228
typedef struct st_mysql_lex_string LEX_STRING;
225
230
#define STRING_WITH_LEN(X) (X), ((size_t) (sizeof(X) - 1))
226
#define USTRING_WITH_LEN(X) ((uchar*) X), ((size_t) (sizeof(X) - 1))
231
#define USTRING_WITH_LEN(X) ((unsigned char*) X), ((size_t) (sizeof(X) - 1))
227
232
#define C_STRING_WITH_LEN(X) ((char *) (X)), ((size_t) (sizeof(X) - 1))
229
234
/* SPACE_INT is a word that contains only spaces */
269
274
@return the last non-space character
272
static inline const uchar *skip_trailing_space(const uchar *ptr,size_t len)
277
static inline const unsigned char *skip_trailing_space(const unsigned char *ptr,size_t len)
274
const uchar *end= ptr + len;
279
const unsigned char *end= ptr + len;
278
const uchar *end_words= (const uchar *)(intptr_t)
283
const unsigned char *end_words= (const unsigned char *)(intptr_t)
279
284
(((uint64_t)(intptr_t)end) / SIZEOF_INT * SIZEOF_INT);
280
const uchar *start_words= (const uchar *)(intptr_t)
285
const unsigned char *start_words= (const unsigned char *)(intptr_t)
281
286
((((uint64_t)(intptr_t)ptr) + SIZEOF_INT - 1) / SIZEOF_INT * SIZEOF_INT);
283
288
assert(((uint64_t)(intptr_t)ptr) >= SIZEOF_INT);