18
18
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
#ifndef DRIZZLED_INTERNAL_MY_SYS_H
22
#define DRIZZLED_INTERNAL_MY_SYS_H
32
#include "drizzled/internal/my_pthread.h"
34
#include "drizzled/charset_info.h" /* for CHARSET_INFO */
25
#define my_errno (errno)
27
#include <mysys/my_pthread.h>
29
#include <mystrings/m_ctype.h> /* for CHARSET_INFO */
35
30
#include <stdarg.h>
36
#include "drizzled/typelib.h"
37
#include "drizzled/internal/aio_result.h"
39
#include "drizzled/memory/root.h"
40
#include "drizzled/error.h"
42
#ifndef errno /* did we already get it? */
43
#ifdef HAVE_ERRNO_AS_DEFINE
44
#include <errno.h> /* errno is a define */
46
extern int errno; /* declare errno */
48
#endif /* #ifndef errno */
50
#include <drizzled/dynamic_array.h>
52
#ifdef HAVE_SYS_MMAN_H
56
#include "drizzled/qsort_cmp.h"
67
#define MAP_NORESERVE 0 /* For irix and AIX */
71
EDQUOT is used only in 3 C files only in mysys/. If it does not exist on
72
system, we set it to some value which can never happen.
31
#include <mysys/typelib.h>
32
#include <mysys/aio_result.h>
34
#include <mysys/my_alloc.h>
78
36
/* Sun Studio does not inject this into main namespace yet */
79
37
#if defined(__cplusplus)
83
#define MY_INIT(name); { ::drizzled::internal::my_progname= name; ::drizzled::internal::my_init(); }
41
#define MY_INIT(name); { my_progname= name; my_init(); }
43
/* Max width of screen (for error messages) */
44
#define SC_MAXWIDTH 256
45
#define ERRMSGSIZE (SC_MAXWIDTH) /* Max length of a error message */
46
#define NRERRBUFFS (2) /* Buffers for parameters */
47
#define MY_FILE_ERROR ((size_t) -1)
86
49
/* General bitmaps for my_func's */
87
50
#define MY_FFNF 1 /* Fatal if file not found */
97
60
#define MY_LINK_WARNING 32 /* my_redel() gives warning if links */
98
61
#define MY_COPYTIME 64 /* my_redel() copys time */
99
62
#define MY_DELETE_OLD 256 /* my_create_with_symlink() */
63
#define MY_RESOLVE_LINK 128 /* my_realpath(); Only resolve links */
100
64
#define MY_HOLD_ORIGINAL_MODES 128 /* my_copy() holds to file modes */
101
65
#define MY_REDEL_MAKE_BACKUP 256
102
66
#define MY_DONT_WAIT 64 /* my_lock() don't wait if can't lock */
67
#define MY_ZEROFILL 32 /* my_multi_malloc(), fill array with zero */
103
68
#define MY_DONT_OVERWRITE_FILE 1024 /* my_copy: Don't overwrite file */
104
69
#define MY_THREADSAFE 2048 /* my_seek(): lock fd mutex */
71
#define MY_CHECK_ERROR 1 /* Params to my_end; Check open-close */
72
#define MY_GIVE_INFO 2 /* Give time info about process*/
74
#define ME_HIGHBYTE 8 /* Shift for colours */
75
#define ME_NOCUR 1 /* Don't use curses message */
106
76
#define ME_OLDWIN 2 /* Use old window */
107
77
#define ME_BELL 4 /* Ring bell then printing message */
108
78
#define ME_HOLDTANG 8 /* Don't delete last keys */
79
#define ME_WAITTOT 16 /* Wait for errtime secs of for a action */
109
80
#define ME_WAITTANG 32 /* Wait for a user action */
110
81
#define ME_NOREFRESH 64 /* Dont refresh screen */
111
82
#define ME_NOINPUT 128 /* Dont use the input libary */
83
#define ME_COLOUR1 ((1 << ME_HIGHBYTE)) /* Possibly error-colours */
84
#define ME_COLOUR2 ((2 << ME_HIGHBYTE))
85
#define ME_COLOUR3 ((3 << ME_HIGHBYTE))
86
#define ME_FATALERROR 1024 /* Fatal statement error */
113
88
/* Bits in last argument to fn_format */
114
89
#define MY_REPLACE_DIR 1 /* replace dir in name with 'dir' */
115
90
#define MY_REPLACE_EXT 2 /* replace extension with 'ext' */
116
91
#define MY_UNPACK_FILENAME 4 /* Unpack name (~ -> home) */
92
#define MY_PACK_FILENAME 8 /* Pack name (home -> ~) */
117
93
#define MY_RESOLVE_SYMLINKS 16 /* Resolve all symbolic links */
118
94
#define MY_RETURN_REAL_PATH 32 /* return full path for file */
119
95
#define MY_SAFE_PATH 64 /* Return NULL if too long path */
137
117
#define GETDATE_GMT 8
138
118
#define GETDATE_FIXEDLENGTH 16
141
typedef uint64_t my_off_t;
120
/* defines when allocating data */
121
#define my_checkmalloc()
123
#define TERMINATE(A,B) {}
129
typedef int (*qsort_cmp)(const void *,const void *);
130
typedef int (*qsort_cmp2)(void*, const void *,const void *);
143
132
#define TRASH(A,B) /* nothing */
134
#ifndef errno /* did we already get it? */
135
#ifdef HAVE_ERRNO_AS_DEFINE
136
#include <errno.h> /* errno is a define */
138
extern int errno; /* declare errno */
140
#endif /* #ifndef errno */
145
141
extern char *home_dir; /* Home directory for user */
146
142
extern const char *my_progname; /* program-name (printed in errors) */
143
typedef void (*error_handler_func)(uint32_t my_err, const char *str,myf MyFlags);
144
extern error_handler_func error_handler_hook;
147
145
extern uint32_t my_file_limit;
148
extern const CHARSET_INFO *default_charset_info;
149
extern CHARSET_INFO *all_charsets[256];
150
extern CHARSET_INFO compiled_charsets[];
153
extern uint32_t my_file_opened,my_stream_opened, my_tmp_file_created;
154
extern uint32_t my_file_total_opened;
150
155
extern uint mysys_usage_id;
151
156
extern bool my_init_done;
158
typedef void (*void_ptr_func)(void);
159
typedef void (*void_ptr_int_func)(int);
161
/* Point to current my_message() */
162
extern void_ptr_func my_sigtstp_cleanup,
163
/* Executed before jump to shell */
153
165
/* Executed when comming from shell */
154
166
extern int my_umask, /* Default creation mask */
172
184
extern bool timed_mutexes;
174
typedef class wild_file_pack /* Struct to hold info when selecting files */
186
typedef struct wild_file_pack /* Struct to hold info when selecting files */
177
188
uint wilds; /* How many wildcards */
178
189
uint not_pos; /* Start of not-theese-files */
179
190
char * *wild; /* Pointer to wildcards */
201
TYPE_NOT_SET= 0, READ_CACHE, WRITE_CACHE,
202
SEQ_READ_APPEND /* sequential read or append */,
203
READ_FIFO, READ_NET,WRITE_NET};
199
typedef struct record_cache /* Used when cacheing records */
205
typedef struct st_record_cache /* Used when cacheing records */
203
208
int rc_seek,error,inited;
204
209
uint rc_length,read_length,reclength;
205
210
my_off_t rc_record_pos,end_of_file;
254
243
((info)->read_pos++, (int) (unsigned char) (info)->read_pos[-1]) :\
246
/* my_b_write_byte dosn't have any err-check */
247
#define my_b_write_byte(info,chr) \
248
(((info)->write_pos < (info)->write_end) ?\
249
((*(info)->write_pos++)=(chr)) :\
250
(_my_b_write(info,0,0) , ((*(info)->write_pos++)=(chr))))
252
#define my_b_fill_cache(info) \
253
(((info)->read_end=(info)->read_pos),(*(info)->read_function)(info,0,0))
257
255
#define my_b_tell(info) ((info)->pos_in_file + \
258
256
(size_t) (*(info)->current_pos - (info)->request_pos))
258
#define my_b_get_buffer_start(info) (info)->request_pos
259
#define my_b_get_bytes_in_buffer(info) (char*) (info)->read_end - \
260
(char*) my_b_get_buffer_start(info)
261
#define my_b_get_pos_in_file(info) (info)->pos_in_file
260
264
#define my_b_bytes_in_cache(info) (size_t) (*(info)->current_end - \
261
265
*(info)->current_pos)
269
273
int handle_default_option(void *in_ctx, const char *group_name,
270
274
const char *option);
276
#include <mysys/my_alloc.h>
274
279
/* Prototypes for mysys and my_func functions */
276
281
extern int my_copy(const char *from,const char *to,myf MyFlags);
277
282
extern int my_delete(const char *name,myf MyFlags);
278
extern int my_open(const char *FileName,int Flags,myf MyFlags);
279
extern int my_register_filename(int fd, const char *FileName,
283
extern File my_open(const char *FileName,int Flags,myf MyFlags);
284
extern File my_register_filename(File fd, const char *FileName,
280
285
uint32_t error_message_number, myf MyFlags);
281
extern int my_create(const char *FileName,int CreateFlags,
286
extern File my_create(const char *FileName,int CreateFlags,
282
287
int AccessFlags, myf MyFlags);
283
extern int my_close(int Filedes,myf MyFlags);
288
extern int my_close(File Filedes,myf MyFlags);
289
extern File my_dup(File file, myf MyFlags);
284
290
extern int my_mkdir(const char *dir, int Flags, myf MyFlags);
285
291
extern int my_realpath(char *to, const char *filename, myf MyFlags);
286
extern int my_create_with_symlink(const char *linkname, const char *filename,
292
extern File my_create_with_symlink(const char *linkname, const char *filename,
287
293
int createflags, int access_flags,
289
295
extern int my_delete_with_symlink(const char *name, myf MyFlags);
290
296
extern int my_rename_with_symlink(const char *from,const char *to,myf MyFlags);
291
extern size_t my_read(int Filedes,unsigned char *Buffer,size_t Count,myf MyFlags);
297
extern size_t my_read(File Filedes,unsigned char *Buffer,size_t Count,myf MyFlags);
292
298
extern int my_rename(const char *from,const char *to,myf MyFlags);
293
extern size_t my_write(int Filedes,const unsigned char *Buffer,size_t Count,
299
extern size_t my_write(File Filedes,const unsigned char *Buffer,size_t Count,
301
extern void * my_multi_malloc (myf MyFlags, ...);
295
302
extern int _sanity(const char *sFile, uint32_t uLine);
304
#define my_access access
297
305
extern int check_if_legal_filename(const char *path);
298
306
extern int check_if_legal_tablename(const char *path);
300
308
#define my_delete_allow_opened(fname,flags) my_delete((fname),(flags))
302
extern int my_sync(int fd, myf my_flags);
311
extern void TERMINATE(FILE *file, uint32_t flag);
313
extern void init_glob_errs(void);
314
extern int my_sync(File fd, myf my_flags);
303
315
extern int my_sync_dir(const char *dir_name, myf my_flags);
304
316
extern int my_sync_dir_by_file(const char *file_name, myf my_flags);
317
extern void my_error(int nr,myf MyFlags, ...);
318
extern void my_printf_error(uint32_t my_err, const char *format,
320
__attribute__((format(printf, 2, 4)));
321
extern int my_error_register(const char **errmsgs, int first, int last);
322
extern const char **my_error_unregister(int first, int last);
323
extern void my_message(uint32_t my_err, const char *str,myf MyFlags);
324
extern void my_message_no_curses(uint32_t my_err, const char *str,myf MyFlags);
305
325
extern bool my_init(void);
306
extern void my_end(void);
326
extern void my_end(int infoflag);
307
327
extern int my_redel(const char *from, const char *to, int MyFlags);
308
328
extern int my_copystat(const char *from, const char *to, int MyFlags);
309
extern char * my_filename(int fd);
329
extern char * my_filename(File fd);
332
void my_print_open_files(void);
334
#define my_print_open_files()
311
337
extern void my_remember_signal(int signal_number,void (*func)(int));
312
338
extern size_t dirname_part(char * to,const char *name, size_t *to_res_length);
321
347
const char *form, uint32_t flag);
322
348
extern size_t strlength(const char *str);
323
349
extern size_t unpack_dirname(char * to,const char *from);
350
extern size_t cleanup_dirname(char * to,const char *from);
351
extern size_t system_filename(char * to,const char *from);
324
352
extern size_t unpack_filename(char * to,const char *from);
325
353
extern char * intern_filename(char * to,const char *from);
354
extern char * directory_file_name(char * dst, const char *src);
326
355
extern int pack_filename(char * to, const char *name, size_t max_length);
327
356
extern char * my_load_path(char * to, const char *path,
328
357
const char *own_path_prefix);
329
358
extern int wild_compare(const char *str,const char *wildstr,
330
359
bool str_is_pattern);
331
360
extern WF_PACK *wf_comp(char * str);
332
extern int wf_test(wild_file_pack *wf_pack,const char *name);
333
extern void wf_end(wild_file_pack *buffer);
361
extern int wf_test(struct wild_file_pack *wf_pack,const char *name);
362
extern void wf_end(struct wild_file_pack *buffer);
334
363
extern bool array_append_string_unique(const char *str,
335
364
const char **array, size_t size);
336
365
extern void get_date(char * to,int timeflag,time_t use_time);
337
extern int init_record_cache(RECORD_CACHE *info,size_t cachesize,int file,
366
extern int init_record_cache(RECORD_CACHE *info,size_t cachesize,File file,
338
367
size_t reclength,enum cache_type type,
339
368
bool use_async_io);
340
369
extern int read_cache_record(RECORD_CACHE *info,unsigned char *to);
356
385
extern qsort2_cmp get_ptr_compare(size_t);
357
386
void my_store_ptr(unsigned char *buff, size_t pack_length, my_off_t pos);
358
387
my_off_t my_get_ptr(unsigned char *ptr, size_t pack_length);
359
int create_temp_file(char *to, const char *dir, const char *pfx, myf MyFlags);
388
File create_temp_file(char *to, const char *dir, const char *pfx, myf MyFlags);
390
#include <mysys/dynamic_array.h>
392
#define alloc_root_inited(A) ((A)->min_malloc != 0)
393
#define ALLOC_ROOT_MIN_BLOCK_SIZE (MALLOC_OVERHEAD + sizeof(USED_MEM) + 8)
394
#define clear_alloc_root(A) do { (A)->free= (A)->used= (A)->pre_alloc= 0; (A)->min_malloc=0;} while(0)
361
395
extern int get_defaults_options(int argc, char **argv,
362
396
char **defaults, char **extra_defaults,
363
397
char **group_suffix);
372
406
extern ha_checksum my_checksum(ha_checksum crc, const unsigned char *mem,
374
408
extern void my_sleep(uint32_t m_seconds);
409
void my_free_open_file_info(void);
411
extern uint64_t my_getsystime(void);
412
extern uint64_t my_micro_time(void);
413
extern uint64_t my_micro_time_and_time(time_t *time_arg);
414
time_t my_time_possible_from_micro(uint64_t microtime);
416
#ifdef HAVE_SYS_MMAN_H
417
#include <sys/mman.h>
422
#ifndef MAP_NORESERVE
423
#define MAP_NORESERVE 0 /* For irix and AIX */
427
#define my_mmap(a,b,c,d,e,f) mmap64(a,b,c,d,e,f)
429
#define my_mmap(a,b,c,d,e,f) mmap(a,b,c,d,e,f)
431
#define my_munmap(a,b) munmap((a),(b))
434
/* not a complete set of mmap() flags, but only those that nesessary */
437
#define MAP_NORESERVE 0
438
#define MAP_SHARED 0x0001
439
#define MAP_PRIVATE 0x0002
440
#define MAP_NOSYNC 0x0800
441
#define MAP_FAILED ((void *)-1)
442
#define MS_SYNC 0x0000
445
void *my_mmap(void *, size_t, int, int, int, my_off_t);
446
int my_munmap(void *, size_t);
450
void *cs_alloc(size_t size);
452
extern uint32_t get_charset_number(const char *cs_name, uint32_t cs_flags);
453
extern uint32_t get_collation_number(const char *name);
454
extern const char *get_charset_name(uint32_t cs_number);
456
extern const CHARSET_INFO *get_charset(uint32_t cs_number);
457
extern const CHARSET_INFO *get_charset_by_name(const char *cs_name);
458
extern const CHARSET_INFO *get_charset_by_csname(const char *cs_name, uint32_t cs_flags);
460
extern bool resolve_charset(const char *cs_name,
461
const CHARSET_INFO *default_cs,
462
const CHARSET_INFO **cs);
463
extern bool resolve_collation(const char *cl_name,
464
const CHARSET_INFO *default_cl,
465
const CHARSET_INFO **cl);
467
extern void free_charsets(void);
468
extern char *get_charsets_dir(char *buf);
469
extern bool my_charset_same(const CHARSET_INFO *cs1, const CHARSET_INFO *cs2);
470
extern bool init_compiled_charsets(myf flags);
471
extern void add_compiled_collation(CHARSET_INFO *cs);
472
extern size_t escape_string_for_drizzle(const CHARSET_INFO *charset_info,
473
char *to, size_t to_length,
474
const char *from, size_t length);
475
extern size_t escape_quotes_for_drizzle(const CHARSET_INFO *charset_info,
476
char *to, size_t to_length,
477
const char *from, size_t length);
378
479
extern void thd_increment_bytes_sent(uint32_t length);
379
480
extern void thd_increment_bytes_received(uint32_t length);
380
481
extern void thd_increment_net_big_packet_count(uint32_t length);
382
} /* namespace internal */
383
} /* namespace drizzled */
385
#endif /* DRIZZLED_INTERNAL_MY_SYS_H */
487
#endif /* _my_sys_h */