100
53
#define MY_LINK_WARNING 32 /* my_redel() gives warning if links */
101
54
#define MY_COPYTIME 64 /* my_redel() copys time */
102
55
#define MY_DELETE_OLD 256 /* my_create_with_symlink() */
56
#define MY_RESOLVE_LINK 128 /* my_realpath(); Only resolve links */
103
57
#define MY_HOLD_ORIGINAL_MODES 128 /* my_copy() holds to file modes */
104
58
#define MY_REDEL_MAKE_BACKUP 256
59
#define MY_SEEK_NOT_DONE 32 /* my_lock may have to do a seek */
105
60
#define MY_DONT_WAIT 64 /* my_lock() don't wait if can't lock */
61
#define MY_ZEROFILL 32 /* my_malloc(), fill array with zero */
62
#define MY_ALLOW_ZERO_PTR 64 /* my_realloc() ; zero ptr -> malloc */
63
#define MY_FREE_ON_ERROR 128 /* my_realloc() ; Free old ptr on error */
64
#define MY_HOLD_ON_ERROR 256 /* my_realloc() ; Return old ptr on error */
106
65
#define MY_DONT_OVERWRITE_FILE 1024 /* my_copy: Don't overwrite file */
107
66
#define MY_THREADSAFE 2048 /* my_seek(): lock fd mutex */
68
#define MY_CHECK_ERROR 1 /* Params to my_end; Check open-close */
69
#define MY_GIVE_INFO 2 /* Give time info about process*/
71
#define MY_REMOVE_NONE 0 /* Params for modify_defaults_file */
72
#define MY_REMOVE_OPTION 1
73
#define MY_REMOVE_SECTION 2
75
#define ME_HIGHBYTE 8 /* Shift for colours */
76
#define ME_NOCUR 1 /* Don't use curses message */
109
77
#define ME_OLDWIN 2 /* Use old window */
110
78
#define ME_BELL 4 /* Ring bell then printing message */
111
79
#define ME_HOLDTANG 8 /* Don't delete last keys */
80
#define ME_WAITTOT 16 /* Wait for errtime secs of for a action */
112
81
#define ME_WAITTANG 32 /* Wait for a user action */
113
82
#define ME_NOREFRESH 64 /* Dont refresh screen */
114
83
#define ME_NOINPUT 128 /* Dont use the input libary */
84
#define ME_COLOUR1 ((1 << ME_HIGHBYTE)) /* Possibly error-colours */
85
#define ME_COLOUR2 ((2 << ME_HIGHBYTE))
86
#define ME_COLOUR3 ((3 << ME_HIGHBYTE))
87
#define ME_FATALERROR 1024 /* Fatal statement error */
116
89
/* Bits in last argument to fn_format */
117
90
#define MY_REPLACE_DIR 1 /* replace dir in name with 'dir' */
118
91
#define MY_REPLACE_EXT 2 /* replace extension with 'ext' */
119
92
#define MY_UNPACK_FILENAME 4 /* Unpack name (~ -> home) */
93
#define MY_PACK_FILENAME 8 /* Pack name (home -> ~) */
120
94
#define MY_RESOLVE_SYMLINKS 16 /* Resolve all symbolic links */
121
95
#define MY_RETURN_REAL_PATH 32 /* return full path for file */
122
96
#define MY_SAFE_PATH 64 /* Return NULL if too long path */
140
123
#define GETDATE_GMT 8
141
124
#define GETDATE_FIXEDLENGTH 16
144
typedef uint64_t my_off_t;
126
/* defines when allocating data */
127
#define my_checkmalloc()
129
#define TERMINATE(A,B) {}
135
typedef int (*qsort_cmp)(const void *,const void *);
136
typedef int (*qsort_cmp2)(void*, const void *,const void *);
138
extern void *my_malloc(size_t Size,myf MyFlags);
139
#define my_malloc_ci(SZ,FLAG) my_malloc( SZ, FLAG )
140
extern void *my_realloc(void *oldpoint, size_t Size, myf MyFlags);
141
extern void my_no_flags_free(void *ptr);
142
extern void *my_memdup(const void *from,size_t length,myf MyFlags);
143
extern char *my_strdup(const char *from,myf MyFlags);
144
extern char *my_strndup(const char *from, size_t length,
146
#define CALLER_INFO_PROTO /* nothing */
147
#define CALLER_INFO /* nothing */
148
#define ORIG_CALLER_INFO /* nothing */
146
149
#define TRASH(A,B) /* nothing */
152
#if defined(__GNUC__) && !defined(HAVE_ALLOCA_H) && ! defined(alloca)
153
#define alloca __builtin_alloca
155
#define my_alloca(SZ) malloc((size_t) (SZ))
156
#define my_afree(PTR) free((PTR))
158
#define my_alloca(SZ) malloc((SZ))
159
#define my_afree(PTR) free((PTR))
160
#endif /* HAVE_ALLOCA */
162
#ifndef errno /* did we already get it? */
163
#ifdef HAVE_ERRNO_AS_DEFINE
164
#include <errno.h> /* errno is a define */
166
extern int errno; /* declare errno */
168
#endif /* #ifndef errno */
169
extern char errbuff[NRERRBUFFS][ERRMSGSIZE];
148
170
extern char *home_dir; /* Home directory for user */
149
171
extern const char *my_progname; /* program-name (printed in errors) */
172
extern void (*error_handler_hook)(uint32_t my_err, const char *str,myf MyFlags);
173
extern void (*fatal_error_handler_hook)(uint32_t my_err, const char *str,
150
175
extern uint32_t my_file_limit;
176
extern uint32_t my_thread_stack_size;
179
extern const CHARSET_INFO *default_charset_info;
180
extern CHARSET_INFO *all_charsets[256];
181
extern CHARSET_INFO compiled_charsets[];
184
extern uint32_t my_file_opened,my_stream_opened, my_tmp_file_created;
185
extern uint32_t my_file_total_opened;
153
186
extern uint mysys_usage_id;
154
187
extern bool my_init_done;
189
/* Point to current my_message() */
190
extern void (*my_sigtstp_cleanup)(void),
191
/* Executed before jump to shell */
192
(*my_sigtstp_restart)(void),
193
(*my_abort_hook)(int);
156
194
/* Executed when comming from shell */
157
extern DRIZZLED_API int my_umask, /* Default creation mask */
195
extern int my_umask, /* Default creation mask */
159
197
my_recived_signals, /* Signals we have got */
160
198
my_safe_to_handle_signal, /* Set when allowed to SIGTSTP */
269
332
typedef int (*Process_option_func)(void *ctx, const char *group_name,
270
333
const char *option);
272
/* Prototypes for mysys and my_func functions */
335
#include <mysys/my_alloc.h>
338
/* Prototypes for mysys and my_func functions */
274
340
extern int my_copy(const char *from,const char *to,myf MyFlags);
275
DRIZZLED_API int my_delete(const char *name,myf MyFlags);
276
DRIZZLED_API int my_open(const char *FileName,int Flags,myf MyFlags);
277
extern int my_register_filename(int fd, const char *FileName,
278
uint32_t error_message_number, myf MyFlags);
279
DRIZZLED_API int my_create(const char *FileName,int CreateFlags,
280
int AccessFlags, myf MyFlags);
281
DRIZZLED_API int my_close(int Filedes,myf MyFlags);
341
extern int my_delete(const char *name,myf MyFlags);
342
extern int my_getwd(char * buf,size_t size,myf MyFlags);
343
extern int my_setwd(const char *dir,myf MyFlags);
344
extern void *my_once_alloc(size_t Size,myf MyFlags);
345
extern void my_once_free(void);
346
extern char *my_once_strdup(const char *src,myf myflags);
347
extern void *my_once_memdup(const void *src, size_t len, myf myflags);
348
extern File my_open(const char *FileName,int Flags,myf MyFlags);
349
extern File my_register_filename(File fd, const char *FileName,
350
enum file_type type_of_file,
351
uint32_t error_message_number, myf MyFlags);
352
extern File my_create(const char *FileName,int CreateFlags,
353
int AccessFlags, myf MyFlags);
354
extern int my_close(File Filedes,myf MyFlags);
355
extern File my_dup(File file, myf MyFlags);
282
356
extern int my_mkdir(const char *dir, int Flags, myf MyFlags);
357
extern int my_readlink(char *to, const char *filename, myf MyFlags);
283
358
extern int my_realpath(char *to, const char *filename, myf MyFlags);
284
extern int my_create_with_symlink(const char *linkname, const char *filename,
285
int createflags, int access_flags,
287
DRIZZLED_API int my_delete_with_symlink(const char *name, myf MyFlags);
359
extern File my_create_with_symlink(const char *linkname, const char *filename,
360
int createflags, int access_flags,
362
extern int my_delete_with_symlink(const char *name, myf MyFlags);
288
363
extern int my_rename_with_symlink(const char *from,const char *to,myf MyFlags);
289
DRIZZLED_API size_t my_read(int Filedes,unsigned char *Buffer,size_t Count,myf MyFlags);
290
DRIZZLED_API int my_rename(const char *from, const char *to,myf MyFlags);
291
DRIZZLED_API size_t my_write(int Filedes, const unsigned char *Buffer,
292
size_t Count, myf MyFlags);
364
extern int my_symlink(const char *content, const char *linkname, myf MyFlags);
365
extern size_t my_read(File Filedes,unsigned char *Buffer,size_t Count,myf MyFlags);
366
extern int my_rename(const char *from,const char *to,myf MyFlags);
367
extern my_off_t my_seek(File fd,my_off_t pos,int whence,myf MyFlags);
368
extern my_off_t my_tell(File fd,myf MyFlags);
369
extern size_t my_write(File Filedes,const unsigned char *Buffer,size_t Count,
371
extern size_t my_fwrite(FILE *stream,const unsigned char *Buffer,size_t Count,
373
extern my_off_t my_fseek(FILE *stream,my_off_t pos,int whence,myf MyFlags);
374
extern void *_mymalloc(size_t uSize,const char *sFile,
375
uint32_t uLine, myf MyFlag);
376
extern void *_myrealloc(void *pPtr,size_t uSize,const char *sFile,
377
uint32_t uLine, myf MyFlag);
378
extern void * my_multi_malloc (myf MyFlags, ...);
379
extern void _myfree(void *pPtr, const char *sFile, uint32_t uLine, myf MyFlag);
293
380
extern int _sanity(const char *sFile, uint32_t uLine);
381
extern void *_my_memdup(const void *from, size_t length,
382
const char *sFile, uint32_t uLine,myf MyFlag);
383
extern char * _my_strdup(const char *from, const char *sFile, uint32_t uLine,
385
extern char *_my_strndup(const char *from, size_t length,
386
const char *sFile, uint32_t uLine,
389
#define my_access access
295
390
extern int check_if_legal_filename(const char *path);
296
391
extern int check_if_legal_tablename(const char *path);
298
DRIZZLED_API int my_sync(int fd, myf my_flags);
393
#define my_delete_allow_opened(fname,flags) my_delete((fname),(flags))
396
extern void TERMINATE(FILE *file, uint32_t flag);
398
extern void init_glob_errs(void);
399
extern FILE *my_fopen(const char *FileName,int Flags,myf MyFlags);
400
extern int my_fclose(FILE *fd,myf MyFlags);
401
extern int my_sync(File fd, myf my_flags);
299
402
extern int my_sync_dir(const char *dir_name, myf my_flags);
300
403
extern int my_sync_dir_by_file(const char *file_name, myf my_flags);
404
extern void my_error(int nr,myf MyFlags, ...);
405
extern void my_printf_error(uint32_t my_err, const char *format,
407
__attribute__((format(printf, 2, 4)));
408
extern int my_error_register(const char **errmsgs, int first, int last);
409
extern const char **my_error_unregister(int first, int last);
410
extern void my_message(uint32_t my_err, const char *str,myf MyFlags);
411
extern void my_message_no_curses(uint32_t my_err, const char *str,myf MyFlags);
301
412
extern bool my_init(void);
302
extern void my_end(void);
413
extern void my_end(int infoflag);
303
414
extern int my_redel(const char *from, const char *to, int MyFlags);
304
415
extern int my_copystat(const char *from, const char *to, int MyFlags);
305
extern char * my_filename(int fd);
307
extern void my_remember_signal(int signal_number,void (*func)(int));
416
extern char * my_filename(File fd);
419
void my_print_open_files(void);
421
#define my_print_open_files()
424
extern bool init_tmpdir(MY_TMPDIR *tmpdir, const char *pathlist);
425
extern char *my_tmpdir(MY_TMPDIR *tmpdir);
426
extern void free_tmpdir(MY_TMPDIR *tmpdir);
428
extern void my_remember_signal(int signal_number,RETSIGTYPE (*func)(int));
308
429
extern size_t dirname_part(char * to,const char *name, size_t *to_res_length);
309
430
extern size_t dirname_length(const char *name);
310
431
#define base_name(A) (A+dirname_length(A))
311
bool test_if_hard_path(const char *dir_name);
432
extern int test_if_hard_path(const char *dir_name);
433
extern bool has_path(const char *name);
313
434
extern char *convert_dirname(char *to, const char *from, const char *from_end);
435
extern void to_unix_path(char * name);
314
436
extern char * fn_ext(const char *name);
315
437
extern char * fn_same(char * toname,const char *name,int flag);
316
DRIZZLED_API char * fn_format(char * to,const char *name,const char *dir,
317
const char *form, uint32_t flag);
438
extern char * fn_format(char * to,const char *name,const char *dir,
439
const char *form, uint32_t flag);
318
440
extern size_t strlength(const char *str);
441
extern void pack_dirname(char * to,const char *from);
319
442
extern size_t unpack_dirname(char * to,const char *from);
443
extern size_t cleanup_dirname(char * to,const char *from);
444
extern size_t system_filename(char * to,const char *from);
320
445
extern size_t unpack_filename(char * to,const char *from);
321
446
extern char * intern_filename(char * to,const char *from);
447
extern char * directory_file_name(char * dst, const char *src);
322
448
extern int pack_filename(char * to, const char *name, size_t max_length);
449
extern char * my_path(char * to,const char *progname,
450
const char *own_pathname_part);
323
451
extern char * my_load_path(char * to, const char *path,
324
452
const char *own_path_prefix);
325
453
extern int wild_compare(const char *str,const char *wildstr,
326
454
bool str_is_pattern);
327
455
extern WF_PACK *wf_comp(char * str);
328
extern int wf_test(wild_file_pack *wf_pack,const char *name);
329
extern void wf_end(wild_file_pack *buffer);
456
extern int wf_test(struct wild_file_pack *wf_pack,const char *name);
457
extern void wf_end(struct wild_file_pack *buffer);
330
458
extern bool array_append_string_unique(const char *str,
331
459
const char **array, size_t size);
332
460
extern void get_date(char * to,int timeflag,time_t use_time);
333
extern int init_record_cache(RECORD_CACHE *info,size_t cachesize,int file,
461
extern void soundex(CHARSET_INFO *, char * out_pntr, char * in_pntr,
462
bool remove_garbage);
463
extern int init_record_cache(RECORD_CACHE *info,size_t cachesize,File file,
334
464
size_t reclength,enum cache_type type,
335
465
bool use_async_io);
336
466
extern int read_cache_record(RECORD_CACHE *info,unsigned char *to);
338
468
extern int write_cache_record(RECORD_CACHE *info,my_off_t filepos,
339
469
const unsigned char *record,size_t length);
340
470
extern int flush_write_cache(RECORD_CACHE *info);
341
extern void sigtstp_handler(int signal_number);
471
extern RETSIGTYPE sigtstp_handler(int signal_number);
342
472
extern void handle_recived_signals(void);
344
extern void my_set_alarm_variable(int signo);
474
extern RETSIGTYPE my_set_alarm_variable(int signo);
345
475
extern void my_string_ptr_sort(unsigned char *base,uint32_t items,size_t size);
346
476
extern void radixsort_for_str_ptr(unsigned char* base[], uint32_t number_of_elements,
347
477
size_t size_of_element,unsigned char *buffer[]);
348
extern void my_qsort(void *base_ptr, size_t total_elems, size_t size,
350
extern void my_qsort2(void *base_ptr, size_t total_elems, size_t size,
351
qsort2_cmp cmp, void *cmp_argument);
478
extern RETQSORTTYPE my_qsort(void *base_ptr, size_t total_elems, size_t size,
480
extern RETQSORTTYPE my_qsort2(void *base_ptr, size_t total_elems, size_t size,
481
qsort2_cmp cmp, void *cmp_argument);
352
482
extern qsort2_cmp get_ptr_compare(size_t);
353
DRIZZLED_API void my_store_ptr(unsigned char *buff, size_t pack_length, my_off_t pos);
354
DRIZZLED_API my_off_t my_get_ptr(unsigned char *ptr, size_t pack_length);
355
int create_temp_file(char *to, const char *dir, const char *pfx, myf MyFlags);
483
void my_store_ptr(unsigned char *buff, size_t pack_length, my_off_t pos);
484
my_off_t my_get_ptr(unsigned char *ptr, size_t pack_length);
485
File create_temp_file(char *to, const char *dir, const char *pfx,
486
int mode, myf MyFlags);
487
#define my_init_dynamic_array(A,B,C,D) init_dynamic_array2(A,B,NULL,C,D CALLER_INFO)
488
#define my_init_dynamic_array_ci(A,B,C,D) init_dynamic_array2(A,B,NULL,C,D ORIG_CALLER_INFO)
489
#define my_init_dynamic_array2(A,B,C,D,E) init_dynamic_array2(A,B,C,D,E CALLER_INFO)
490
#define my_init_dynamic_array2_ci(A,B,C,D,E) init_dynamic_array2(A,B,C,D,E ORIG_CALLER_INFO)
491
extern bool init_dynamic_array2(DYNAMIC_ARRAY *array,uint32_t element_size,
492
void *init_buffer, uint32_t init_alloc,
493
uint32_t alloc_increment
495
/* init_dynamic_array() function is deprecated */
496
extern bool init_dynamic_array(DYNAMIC_ARRAY *array,uint32_t element_size,
497
uint32_t init_alloc,uint32_t alloc_increment
499
extern bool insert_dynamic(DYNAMIC_ARRAY *array,unsigned char * element);
500
extern unsigned char *alloc_dynamic(DYNAMIC_ARRAY *array);
501
extern unsigned char *pop_dynamic(DYNAMIC_ARRAY*);
502
extern bool set_dynamic(DYNAMIC_ARRAY *array,unsigned char * element,uint32_t array_index);
503
extern bool allocate_dynamic(DYNAMIC_ARRAY *array, uint32_t max_elements);
504
extern void get_dynamic(DYNAMIC_ARRAY *array,unsigned char * element,uint32_t array_index);
505
extern void delete_dynamic(DYNAMIC_ARRAY *array);
506
extern void delete_dynamic_element(DYNAMIC_ARRAY *array, uint32_t array_index);
507
extern void freeze_size(DYNAMIC_ARRAY *array);
508
extern int get_index_dynamic(DYNAMIC_ARRAY *array, unsigned char * element);
509
#define dynamic_array_ptr(array,array_index) ((array)->buffer+(array_index)*(array)->size_of_element)
510
#define dynamic_element(array,array_index,type) ((type)((array)->buffer) +(array_index))
511
#define push_dynamic(A,B) insert_dynamic((A),(B))
512
#define reset_dynamic(array) ((array)->elements= 0)
513
#define sort_dynamic(A,cmp) my_qsort((A)->buffer, (A)->elements, (A)->size_of_element, (cmp))
515
#define my_malloc_lock(A,B) my_malloc((A),(B))
516
#define alloc_root_inited(A) ((A)->min_malloc != 0)
517
#define ALLOC_ROOT_MIN_BLOCK_SIZE (MALLOC_OVERHEAD + sizeof(USED_MEM) + 8)
518
#define clear_alloc_root(A) do { (A)->free= (A)->used= (A)->pre_alloc= 0; (A)->min_malloc=0;} while(0)
357
519
extern int get_defaults_options(int argc, char **argv,
358
520
char **defaults, char **extra_defaults,
359
521
char **group_suffix);
360
522
extern int load_defaults(const char *conf_file, const char **groups,
361
523
int *argc, char ***argv);
524
extern int modify_defaults_file(const char *file_location, const char *option,
525
const char *option_value,
526
const char *section_name, int remove_option);
362
527
extern int my_search_option_files(const char *conf_file, int *argc,
363
528
char ***argv, uint32_t *args_used,
364
529
Process_option_func func, void *func_ctx);
368
533
extern ha_checksum my_checksum(ha_checksum crc, const unsigned char *mem,
370
535
extern void my_sleep(uint32_t m_seconds);
536
extern uint32_t my_set_max_open_files(uint32_t files);
537
void my_free_open_file_info(void);
539
extern time_t my_time(myf flags);
540
extern uint64_t my_getsystime(void);
541
extern uint64_t my_micro_time(void);
542
extern uint64_t my_micro_time_and_time(time_t *time_arg);
543
time_t my_time_possible_from_micro(uint64_t microtime);
544
extern bool my_gethwaddr(unsigned char *to);
546
#ifdef HAVE_SYS_MMAN_H
547
#include <sys/mman.h>
552
#ifndef MAP_NORESERVE
553
#define MAP_NORESERVE 0 /* For irix and AIX */
557
#define my_mmap(a,b,c,d,e,f) mmap64(a,b,c,d,e,f)
559
#define my_mmap(a,b,c,d,e,f) mmap(a,b,c,d,e,f)
561
#define my_munmap(a,b) munmap((a),(b))
564
/* not a complete set of mmap() flags, but only those that nesessary */
567
#define MAP_NORESERVE 0
568
#define MAP_SHARED 0x0001
569
#define MAP_PRIVATE 0x0002
570
#define MAP_NOSYNC 0x0800
571
#define MAP_FAILED ((void *)-1)
572
#define MS_SYNC 0x0000
575
void *my_mmap(void *, size_t, int, int, int, my_off_t);
576
int my_munmap(void *, size_t);
580
extern uint32_t get_charset_number(const char *cs_name, uint32_t cs_flags);
581
extern uint32_t get_collation_number(const char *name);
582
extern const char *get_charset_name(uint32_t cs_number);
584
extern const CHARSET_INFO *get_charset(uint32_t cs_number, myf flags);
585
extern const CHARSET_INFO *get_charset_by_name(const char *cs_name, myf flags);
586
extern const CHARSET_INFO *get_charset_by_csname(const char *cs_name, uint32_t cs_flags, myf my_flags);
588
extern bool resolve_charset(const char *cs_name,
589
const CHARSET_INFO *default_cs,
590
const CHARSET_INFO **cs);
591
extern bool resolve_collation(const char *cl_name,
592
const CHARSET_INFO *default_cl,
593
const CHARSET_INFO **cl);
595
extern void free_charsets(void);
596
extern char *get_charsets_dir(char *buf);
597
extern bool my_charset_same(const CHARSET_INFO *cs1, const CHARSET_INFO *cs2);
598
extern bool init_compiled_charsets(myf flags);
599
extern void add_compiled_collation(CHARSET_INFO *cs);
600
extern size_t escape_string_for_drizzle(const CHARSET_INFO *charset_info,
601
char *to, size_t to_length,
602
const char *from, size_t length);
603
extern size_t escape_quotes_for_drizzle(const CHARSET_INFO *charset_info,
604
char *to, size_t to_length,
605
const char *from, size_t length);
374
607
extern void thd_increment_bytes_sent(uint32_t length);
375
608
extern void thd_increment_bytes_received(uint32_t length);
376
609
extern void thd_increment_net_big_packet_count(uint32_t length);
378
} /* namespace internal */
379
} /* namespace drizzled */
381
#endif /* DRIZZLED_INTERNAL_MY_SYS_H */
615
#endif /* _my_sys_h */