170
173
extern char errbuff[NRERRBUFFS][ERRMSGSIZE];
171
174
extern char *home_dir; /* Home directory for user */
172
175
extern const char *my_progname; /* program-name (printed in errors) */
173
extern void (*error_handler_hook)(uint32_t my_err, const char *str,myf MyFlags);
174
extern void (*fatal_error_handler_hook)(uint32_t my_err, const char *str,
176
extern void (*error_handler_hook)(uint my_err, const char *str,myf MyFlags);
177
extern void (*fatal_error_handler_hook)(uint my_err, const char *str,
176
extern uint32_t my_file_limit;
177
extern uint32_t my_thread_stack_size;
179
extern uint my_file_limit;
180
extern ulong my_thread_stack_size;
180
extern const CHARSET_INFO *default_charset_info;
183
extern CHARSET_INFO *default_charset_info;
181
184
extern CHARSET_INFO *all_charsets[256];
182
185
extern CHARSET_INFO compiled_charsets[];
185
extern uint32_t my_file_opened,my_stream_opened, my_tmp_file_created;
186
extern uint32_t my_file_total_opened;
188
extern ulong my_file_opened,my_stream_opened, my_tmp_file_created;
189
extern ulong my_file_total_opened;
187
190
extern uint mysys_usage_id;
188
191
extern bool my_init_done;
475
484
#define my_b_bytes_in_cache(info) (size_t) (*(info)->current_end - \
476
485
*(info)->current_pos)
478
typedef uint32_t ha_checksum;
487
typedef uint32 ha_checksum;
480
489
/* Define the type of function to be passed to process_default_option_files */
481
490
typedef int (*Process_option_func)(void *ctx, const char *group_name,
482
491
const char *option);
484
#include <mysys/my_alloc.h>
493
#include <my_alloc.h>
487
496
/* Prototypes for mysys and my_func functions */
489
498
extern int my_copy(const char *from,const char *to,myf MyFlags);
499
extern int my_append(const char *from,const char *to,myf MyFlags);
490
500
extern int my_delete(const char *name,myf MyFlags);
491
501
extern int my_getwd(char * buf,size_t size,myf MyFlags);
492
502
extern int my_setwd(const char *dir,myf MyFlags);
503
extern int my_lock(File fd,int op,my_off_t start, my_off_t length,myf MyFlags);
493
504
extern void *my_once_alloc(size_t Size,myf MyFlags);
494
505
extern void my_once_free(void);
495
506
extern char *my_once_strdup(const char *src,myf myflags);
511
522
extern int my_delete_with_symlink(const char *name, myf MyFlags);
512
523
extern int my_rename_with_symlink(const char *from,const char *to,myf MyFlags);
513
524
extern int my_symlink(const char *content, const char *linkname, myf MyFlags);
514
extern size_t my_read(File Filedes,unsigned char *Buffer,size_t Count,myf MyFlags);
525
extern size_t my_read(File Filedes,uchar *Buffer,size_t Count,myf MyFlags);
515
526
extern int my_rename(const char *from,const char *to,myf MyFlags);
516
527
extern my_off_t my_seek(File fd,my_off_t pos,int whence,myf MyFlags);
517
528
extern my_off_t my_tell(File fd,myf MyFlags);
518
extern size_t my_write(File Filedes,const unsigned char *Buffer,size_t Count,
529
extern size_t my_write(File Filedes,const uchar *Buffer,size_t Count,
520
extern size_t my_fwrite(FILE *stream,const unsigned char *Buffer,size_t Count,
531
extern size_t my_fread(FILE *stream,uchar *Buffer,size_t Count,myf MyFlags);
532
extern size_t my_fwrite(FILE *stream,const uchar *Buffer,size_t Count,
522
534
extern my_off_t my_fseek(FILE *stream,my_off_t pos,int whence,myf MyFlags);
535
extern my_off_t my_ftell(FILE *stream,myf MyFlags);
523
536
extern void *_mymalloc(size_t uSize,const char *sFile,
524
uint32_t uLine, myf MyFlag);
537
uint uLine, myf MyFlag);
525
538
extern void *_myrealloc(void *pPtr,size_t uSize,const char *sFile,
526
uint32_t uLine, myf MyFlag);
527
extern void * my_multi_malloc (myf MyFlags, ...);
528
extern void _myfree(void *pPtr, const char *sFile, uint32_t uLine, myf MyFlag);
529
extern int _sanity(const char *sFile, uint32_t uLine);
539
uint uLine, myf MyFlag);
540
extern void * my_multi_malloc _VARARGS((myf MyFlags, ...));
541
extern void _myfree(void *pPtr,const char *sFile,uint uLine, myf MyFlag);
542
extern int _sanity(const char *sFile, uint uLine);
530
543
extern void *_my_memdup(const void *from, size_t length,
531
const char *sFile, uint32_t uLine,myf MyFlag);
532
extern char * _my_strdup(const char *from, const char *sFile, uint32_t uLine,
544
const char *sFile, uint uLine,myf MyFlag);
545
extern char * _my_strdup(const char *from, const char *sFile, uint uLine,
534
547
extern char *_my_strndup(const char *from, size_t length,
535
const char *sFile, uint32_t uLine,
548
const char *sFile, uint uLine,
551
/* implemented in my_memmem.c */
552
extern void *my_memmem(const void *haystack, size_t haystacklen,
553
const void *needle, size_t needlelen);
538
556
#define my_access access
539
557
extern int check_if_legal_filename(const char *path);
540
558
extern int check_if_legal_tablename(const char *path);
542
560
#define my_delete_allow_opened(fname,flags) my_delete((fname),(flags))
544
562
#ifndef TERMINATE
545
extern void TERMINATE(FILE *file, uint32_t flag);
563
extern void TERMINATE(FILE *file, uint flag);
547
565
extern void init_glob_errs(void);
548
566
extern FILE *my_fopen(const char *FileName,int Flags,myf MyFlags);
567
extern FILE *my_fdopen(File Filedes,const char *name, int Flags,myf MyFlags);
549
568
extern int my_fclose(FILE *fd,myf MyFlags);
550
569
extern int my_sync(File fd, myf my_flags);
551
570
extern int my_sync_dir(const char *dir_name, myf my_flags);
552
571
extern int my_sync_dir_by_file(const char *file_name, myf my_flags);
553
extern void my_error(int nr,myf MyFlags, ...);
554
extern void my_printf_error(uint32_t my_err, const char *format,
556
__attribute__((format(printf, 2, 4)));
572
extern void my_error _VARARGS((int nr,myf MyFlags, ...));
573
extern void my_printf_error _VARARGS((uint my_err, const char *format,
575
ATTRIBUTE_FORMAT(printf, 2, 4);
557
576
extern int my_error_register(const char **errmsgs, int first, int last);
558
577
extern const char **my_error_unregister(int first, int last);
559
extern void my_message(uint32_t my_err, const char *str,myf MyFlags);
560
extern void my_message_no_curses(uint32_t my_err, const char *str,myf MyFlags);
578
extern void my_message(uint my_err, const char *str,myf MyFlags);
579
extern void my_message_no_curses(uint my_err, const char *str,myf MyFlags);
561
580
extern bool my_init(void);
562
581
extern void my_end(int infoflag);
563
582
extern int my_redel(const char *from, const char *to, int MyFlags);
600
619
extern char * my_load_path(char * to, const char *path,
601
620
const char *own_path_prefix);
602
621
extern int wild_compare(const char *str,const char *wildstr,
603
bool str_is_pattern);
622
pbool str_is_pattern);
604
623
extern WF_PACK *wf_comp(char * str);
605
624
extern int wf_test(struct wild_file_pack *wf_pack,const char *name);
606
625
extern void wf_end(struct wild_file_pack *buffer);
626
extern size_t strip_sp(char * str);
607
627
extern bool array_append_string_unique(const char *str,
608
628
const char **array, size_t size);
609
629
extern void get_date(char * to,int timeflag,time_t use_time);
610
630
extern void soundex(CHARSET_INFO *, char * out_pntr, char * in_pntr,
611
bool remove_garbage);
631
pbool remove_garbage);
612
632
extern int init_record_cache(RECORD_CACHE *info,size_t cachesize,File file,
613
633
size_t reclength,enum cache_type type,
615
extern int read_cache_record(RECORD_CACHE *info,unsigned char *to);
635
extern int read_cache_record(RECORD_CACHE *info,uchar *to);
616
636
extern int end_record_cache(RECORD_CACHE *info);
617
637
extern int write_cache_record(RECORD_CACHE *info,my_off_t filepos,
618
const unsigned char *record,size_t length);
638
const uchar *record,size_t length);
619
639
extern int flush_write_cache(RECORD_CACHE *info);
620
extern RETSIGTYPE sigtstp_handler(int signal_number);
640
extern long my_clock(void);
641
extern sig_handler sigtstp_handler(int signal_number);
621
642
extern void handle_recived_signals(void);
623
extern RETSIGTYPE my_set_alarm_variable(int signo);
624
extern void my_string_ptr_sort(unsigned char *base,uint32_t items,size_t size);
625
extern void radixsort_for_str_ptr(unsigned char* base[], uint32_t number_of_elements,
626
size_t size_of_element,unsigned char *buffer[]);
627
extern RETQSORTTYPE my_qsort(void *base_ptr, size_t total_elems, size_t size,
629
extern RETQSORTTYPE my_qsort2(void *base_ptr, size_t total_elems, size_t size,
630
qsort2_cmp cmp, void *cmp_argument);
644
extern sig_handler my_set_alarm_variable(int signo);
645
extern void my_string_ptr_sort(uchar *base,uint items,size_t size);
646
extern void radixsort_for_str_ptr(uchar* base[], uint number_of_elements,
647
size_t size_of_element,uchar *buffer[]);
648
extern qsort_t my_qsort(void *base_ptr, size_t total_elems, size_t size,
650
extern qsort_t my_qsort2(void *base_ptr, size_t total_elems, size_t size,
651
qsort2_cmp cmp, void *cmp_argument);
631
652
extern qsort2_cmp get_ptr_compare(size_t);
632
void my_store_ptr(unsigned char *buff, size_t pack_length, my_off_t pos);
633
my_off_t my_get_ptr(unsigned char *ptr, size_t pack_length);
653
void my_store_ptr(uchar *buff, size_t pack_length, my_off_t pos);
654
my_off_t my_get_ptr(uchar *ptr, size_t pack_length);
634
655
extern int init_io_cache(IO_CACHE *info,File file,size_t cachesize,
635
656
enum cache_type type,my_off_t seek_offset,
636
bool use_async_io, myf cache_myflags);
657
pbool use_async_io, myf cache_myflags);
637
658
extern bool reinit_io_cache(IO_CACHE *info,enum cache_type type,
638
my_off_t seek_offset,bool use_async_io,
659
my_off_t seek_offset,pbool use_async_io,
640
661
extern void setup_io_cache(IO_CACHE* info);
641
extern int _my_b_read(IO_CACHE *info,unsigned char *Buffer,size_t Count);
642
extern int _my_b_read_r(IO_CACHE *info,unsigned char *Buffer,size_t Count);
662
extern int _my_b_read(IO_CACHE *info,uchar *Buffer,size_t Count);
663
extern int _my_b_read_r(IO_CACHE *info,uchar *Buffer,size_t Count);
643
664
extern void init_io_cache_share(IO_CACHE *read_cache, IO_CACHE_SHARE *cshare,
644
IO_CACHE *write_cache, uint32_t num_threads);
665
IO_CACHE *write_cache, uint num_threads);
645
666
extern void remove_io_thread(IO_CACHE *info);
646
extern int _my_b_seq_read(IO_CACHE *info,unsigned char *Buffer,size_t Count);
647
extern int _my_b_net_read(IO_CACHE *info,unsigned char *Buffer,size_t Count);
667
extern int _my_b_seq_read(IO_CACHE *info,uchar *Buffer,size_t Count);
668
extern int _my_b_net_read(IO_CACHE *info,uchar *Buffer,size_t Count);
648
669
extern int _my_b_get(IO_CACHE *info);
649
extern int _my_b_async_read(IO_CACHE *info,unsigned char *Buffer,size_t Count);
650
extern int _my_b_write(IO_CACHE *info,const unsigned char *Buffer,size_t Count);
651
extern int my_b_append(IO_CACHE *info,const unsigned char *Buffer,size_t Count);
652
extern int my_b_safe_write(IO_CACHE *info,const unsigned char *Buffer,size_t Count);
670
extern int _my_b_async_read(IO_CACHE *info,uchar *Buffer,size_t Count);
671
extern int _my_b_write(IO_CACHE *info,const uchar *Buffer,size_t Count);
672
extern int my_b_append(IO_CACHE *info,const uchar *Buffer,size_t Count);
673
extern int my_b_safe_write(IO_CACHE *info,const uchar *Buffer,size_t Count);
654
extern int my_block_write(IO_CACHE *info, const unsigned char *Buffer,
675
extern int my_block_write(IO_CACHE *info, const uchar *Buffer,
655
676
size_t Count, my_off_t pos);
656
677
extern int my_b_flush_io_cache(IO_CACHE *info, int need_append_buffer_lock);
675
696
#define my_init_dynamic_array_ci(A,B,C,D) init_dynamic_array2(A,B,NULL,C,D ORIG_CALLER_INFO)
676
697
#define my_init_dynamic_array2(A,B,C,D,E) init_dynamic_array2(A,B,C,D,E CALLER_INFO)
677
698
#define my_init_dynamic_array2_ci(A,B,C,D,E) init_dynamic_array2(A,B,C,D,E ORIG_CALLER_INFO)
678
extern bool init_dynamic_array2(DYNAMIC_ARRAY *array,uint32_t element_size,
679
void *init_buffer, uint32_t init_alloc,
680
uint32_t alloc_increment
699
extern bool init_dynamic_array2(DYNAMIC_ARRAY *array,uint element_size,
700
void *init_buffer, uint init_alloc,
681
702
CALLER_INFO_PROTO);
682
703
/* init_dynamic_array() function is deprecated */
683
extern bool init_dynamic_array(DYNAMIC_ARRAY *array,uint32_t element_size,
684
uint32_t init_alloc,uint32_t alloc_increment
704
extern bool init_dynamic_array(DYNAMIC_ARRAY *array,uint element_size,
705
uint init_alloc,uint alloc_increment
685
706
CALLER_INFO_PROTO);
686
extern bool insert_dynamic(DYNAMIC_ARRAY *array,unsigned char * element);
687
extern unsigned char *alloc_dynamic(DYNAMIC_ARRAY *array);
688
extern unsigned char *pop_dynamic(DYNAMIC_ARRAY*);
689
extern bool set_dynamic(DYNAMIC_ARRAY *array,unsigned char * element,uint32_t array_index);
690
extern bool allocate_dynamic(DYNAMIC_ARRAY *array, uint32_t max_elements);
691
extern void get_dynamic(DYNAMIC_ARRAY *array,unsigned char * element,uint32_t array_index);
707
extern bool insert_dynamic(DYNAMIC_ARRAY *array,uchar * element);
708
extern uchar *alloc_dynamic(DYNAMIC_ARRAY *array);
709
extern uchar *pop_dynamic(DYNAMIC_ARRAY*);
710
extern bool set_dynamic(DYNAMIC_ARRAY *array,uchar * element,uint array_index);
711
extern bool allocate_dynamic(DYNAMIC_ARRAY *array, uint max_elements);
712
extern void get_dynamic(DYNAMIC_ARRAY *array,uchar * element,uint array_index);
692
713
extern void delete_dynamic(DYNAMIC_ARRAY *array);
693
extern void delete_dynamic_element(DYNAMIC_ARRAY *array, uint32_t array_index);
714
extern void delete_dynamic_element(DYNAMIC_ARRAY *array, uint array_index);
694
715
extern void freeze_size(DYNAMIC_ARRAY *array);
695
extern int get_index_dynamic(DYNAMIC_ARRAY *array, unsigned char * element);
716
extern int get_index_dynamic(DYNAMIC_ARRAY *array, uchar * element);
696
717
#define dynamic_array_ptr(array,array_index) ((array)->buffer+(array_index)*(array)->size_of_element)
697
718
#define dynamic_element(array,array_index,type) ((type)((array)->buffer) +(array_index))
698
719
#define push_dynamic(A,B) insert_dynamic((A),(B))
699
720
#define reset_dynamic(array) ((array)->elements= 0)
700
721
#define sort_dynamic(A,cmp) my_qsort((A)->buffer, (A)->elements, (A)->size_of_element, (cmp))
723
extern bool init_dynamic_string(DYNAMIC_STRING *str, const char *init_str,
724
size_t init_alloc,size_t alloc_increment);
725
extern bool dynstr_append(DYNAMIC_STRING *str, const char *append);
726
bool dynstr_append_mem(DYNAMIC_STRING *str, const char *append,
728
extern bool dynstr_append_os_quoted(DYNAMIC_STRING *str, const char *append,
730
extern bool dynstr_set(DYNAMIC_STRING *str, const char *init_str);
731
extern bool dynstr_realloc(DYNAMIC_STRING *str, size_t additional_size);
732
extern bool dynstr_trunc(DYNAMIC_STRING *str, size_t n);
733
extern void dynstr_free(DYNAMIC_STRING *str);
735
extern void *my_malloc_lock(size_t length,myf flags);
736
extern void my_free_lock(void *ptr,myf flags);
702
738
#define my_malloc_lock(A,B) my_malloc((A),(B))
739
#define my_free_lock(A,B) my_free((A),(B))
703
741
#define alloc_root_inited(A) ((A)->min_malloc != 0)
704
742
#define ALLOC_ROOT_MIN_BLOCK_SIZE (MALLOC_OVERHEAD + sizeof(USED_MEM) + 8)
705
743
#define clear_alloc_root(A) do { (A)->free= (A)->used= (A)->pre_alloc= 0; (A)->min_malloc=0;} while(0)
723
761
const char *option_value,
724
762
const char *section_name, int remove_option);
725
763
extern int my_search_option_files(const char *conf_file, int *argc,
726
char ***argv, uint32_t *args_used,
764
char ***argv, uint *args_used,
727
765
Process_option_func func, void *func_ctx);
728
766
extern void free_defaults(char **argv);
729
767
extern void my_print_default_files(const char *conf_file);
730
768
extern void print_defaults(const char *conf_file, const char **groups);
731
extern ha_checksum my_checksum(ha_checksum crc, const unsigned char *mem,
769
extern bool my_compress(uchar *, size_t *, size_t *);
770
extern bool my_uncompress(uchar *, size_t , size_t *);
771
extern uchar *my_compress_alloc(const uchar *packet, size_t *len,
773
extern ha_checksum my_checksum(ha_checksum crc, const uchar *mem,
733
extern void my_sleep(uint32_t m_seconds);
734
extern uint32_t my_set_max_open_files(uint32_t files);
775
extern void my_sleep(ulong m_seconds);
776
extern uint my_set_max_open_files(uint files);
735
777
void my_free_open_file_info(void);
737
779
extern time_t my_time(myf flags);
768
811
#define MAP_NOSYNC 0x0800
769
812
#define MAP_FAILED ((void *)-1)
770
813
#define MS_SYNC 0x0000
771
816
#define HAVE_MMAP
773
819
void *my_mmap(void *, size_t, int, int, int, my_off_t);
774
820
int my_munmap(void *, size_t);
824
#ifdef HAVE_GETPAGESIZE
825
#define my_getpagesize() getpagesize()
827
int my_getpagesize(void);
777
830
/* character sets */
778
extern uint32_t get_charset_number(const char *cs_name, uint32_t cs_flags);
779
extern uint32_t get_collation_number(const char *name);
780
extern const char *get_charset_name(uint32_t cs_number);
831
extern uint get_charset_number(const char *cs_name, uint cs_flags);
832
extern uint get_collation_number(const char *name);
833
extern const char *get_charset_name(uint cs_number);
782
extern const CHARSET_INFO *get_charset(uint32_t cs_number, myf flags);
783
extern const CHARSET_INFO *get_charset_by_name(const char *cs_name, myf flags);
784
extern const CHARSET_INFO *get_charset_by_csname(const char *cs_name, uint32_t cs_flags, myf my_flags);
835
extern CHARSET_INFO *get_charset(uint cs_number, myf flags);
836
extern CHARSET_INFO *get_charset_by_name(const char *cs_name, myf flags);
837
extern CHARSET_INFO *get_charset_by_csname(const char *cs_name,
838
uint cs_flags, myf my_flags);
786
840
extern bool resolve_charset(const char *cs_name,
787
const CHARSET_INFO *default_cs,
788
const CHARSET_INFO **cs);
841
CHARSET_INFO *default_cs,
789
843
extern bool resolve_collation(const char *cl_name,
790
const CHARSET_INFO *default_cl,
791
const CHARSET_INFO **cl);
844
CHARSET_INFO *default_cl,
793
847
extern void free_charsets(void);
794
848
extern char *get_charsets_dir(char *buf);
795
extern bool my_charset_same(const CHARSET_INFO *cs1, const CHARSET_INFO *cs2);
849
extern bool my_charset_same(CHARSET_INFO *cs1, CHARSET_INFO *cs2);
796
850
extern bool init_compiled_charsets(myf flags);
797
851
extern void add_compiled_collation(CHARSET_INFO *cs);
798
extern size_t escape_string_for_drizzle(const CHARSET_INFO *charset_info,
799
char *to, size_t to_length,
800
const char *from, size_t length);
801
extern size_t escape_quotes_for_drizzle(const CHARSET_INFO *charset_info,
802
char *to, size_t to_length,
803
const char *from, size_t length);
805
extern void thd_increment_bytes_sent(uint32_t length);
806
extern void thd_increment_bytes_received(uint32_t length);
807
extern void thd_increment_net_big_packet_count(uint32_t length);
852
extern size_t escape_string_for_mysql(CHARSET_INFO *charset_info,
853
char *to, size_t to_length,
854
const char *from, size_t length);
855
extern size_t escape_quotes_for_mysql(CHARSET_INFO *charset_info,
856
char *to, size_t to_length,
857
const char *from, size_t length);
859
extern void thd_increment_bytes_sent(ulong length);
860
extern void thd_increment_bytes_received(ulong length);
861
extern void thd_increment_net_big_packet_count(ulong length);
813
864
#endif /* _my_sys_h */