106
106
/* Prototypes for string functions */
108
108
#if !defined(bfill) && !defined(HAVE_BFILL)
109
extern void bfill(uchar *dst,size_t len,char fill);
109
extern void bfill(uchar *dst,size_t len,pchar fill);
112
112
#if !defined(bzero) && !defined(HAVE_BZERO)
136
136
extern void bmove_upp(uchar *dst,const uchar *src,size_t len);
137
137
extern void bchange(uchar *dst,size_t old_len,const uchar *src,
138
138
size_t new_len,size_t tot_len);
139
extern void strappend(char *s,size_t len,char fill);
139
extern void strappend(char *s,size_t len,pchar fill);
140
140
extern char *strend(const char *s);
141
extern char *strcend(const char *, char);
141
extern char *strcend(const char *, pchar);
142
142
extern char *strfield(char *src,int fields,int chars,int blanks,
144
extern char *strfill(char * s,size_t len,char fill);
144
extern char *strfill(char * s,size_t len,pchar fill);
145
extern size_t strinstr(const char *str,const char *search);
146
extern size_t r_strinstr(const char *str, size_t from, const char *search);
145
147
extern char *strkey(char *dst,char *head,char *tail,char *flags);
146
148
extern char *strmake(char *dst,const char *src,size_t length);
147
149
#ifndef strmake_overlapp
166
168
#ifdef WANT_STRING_PROTOTYPES
167
169
extern char *strcat(char *, const char *);
168
extern char *strchr(const char *, char);
169
extern char *strrchr(const char *, char);
170
extern char *strchr(const char *, pchar);
171
extern char *strrchr(const char *, pchar);
170
172
extern char *strcpy(char *, const char *);
171
173
extern int strcmp(const char *, const char *);
226
228
#define MY_GCVT_MAX_FIELD_WIDTH (DBL_DIG + 4 + max(5, MAX_DECPT_FOR_F_FORMAT))
229
extern char *llstr(int64_t value,char *buff);
230
extern char *ullstr(int64_t value,char *buff);
231
extern char *llstr(longlong value,char *buff);
232
extern char *ullstr(longlong value,char *buff);
231
233
#ifndef HAVE_STRTOUL
232
234
extern long strtol(const char *str, char **ptr, int base);
233
235
extern ulong strtoul(const char *str, char **ptr, int base);
237
239
extern char *int10_to_str(long val,char *dst,int radix);
238
240
extern char *str2int(const char *src,int radix,long lower,long upper,
240
int64_t my_strtoll10(const char *nptr, char **endptr, int *error);
242
longlong my_strtoll10(const char *nptr, char **endptr, int *error);
241
243
#if SIZEOF_LONG == SIZEOF_LONG_LONG
242
#define int64_t2str(A,B,C) int2str((A),(B),(C),1)
243
#define int64_t10_to_str(A,B,C) int10_to_str((A),(B),(C))
244
#define longlong2str(A,B,C) int2str((A),(B),(C),1)
245
#define longlong10_to_str(A,B,C) int10_to_str((A),(B),(C))
245
247
#define strtoll(A,B,C) strtol((A),(B),(C))
246
248
#define strtoull(A,B,C) strtoul((A),(B),(C))
251
253
#define HAVE_STRTOLL
254
extern char *int64_t2str(int64_t val,char *dst,int radix);
255
extern char *int64_t10_to_str(int64_t val,char *dst,int radix);
256
extern char *longlong2str(longlong val,char *dst,int radix);
257
extern char *longlong10_to_str(longlong val,char *dst,int radix);
256
258
#if (!defined(HAVE_STRTOULL) || defined(NO_STRTOLL_PROTO))
257
extern int64_t strtoll(const char *str, char **ptr, int base);
258
extern uint64_t strtoull(const char *str, char **ptr, int base);
259
extern longlong strtoll(const char *str, char **ptr, int base);
260
extern ulonglong strtoull(const char *str, char **ptr, int base);
334
const uchar *end_words= (const uchar *)(intptr_t)
335
(((uint64_t)(intptr_t)end) / SIZEOF_INT * SIZEOF_INT);
336
const uchar *start_words= (const uchar *)(intptr_t)
337
((((uint64_t)(intptr_t)ptr) + SIZEOF_INT - 1) / SIZEOF_INT * SIZEOF_INT);
336
const uchar *end_words= (const uchar *)(intptr)
337
(((ulonglong)(intptr)end) / SIZEOF_INT * SIZEOF_INT);
338
const uchar *start_words= (const uchar *)(intptr)
339
((((ulonglong)(intptr)ptr) + SIZEOF_INT - 1) / SIZEOF_INT * SIZEOF_INT);
339
assert(((uint64_t)(intptr_t)ptr) >= SIZEOF_INT);
341
DBUG_ASSERT(((ulonglong)(intptr)ptr) >= SIZEOF_INT);
340
342
if (end_words > ptr)
342
344
while (end > end_words && end[-1] == 0x20)