mySQL 5.0.11 sources for tomato
[tomato.git] / release / src / router / mysql / include / my_getopt.h
blob5824518a08541c91926f5344edb5d254ab514bda
1 /*
2 Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; version 2 of the License.
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software
15 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 #ifndef _my_getopt_h
19 #define _my_getopt_h
21 C_MODE_START
23 #define GET_NO_ARG 1
24 #define GET_BOOL 2
25 #define GET_INT 3
26 #define GET_UINT 4
27 #define GET_LONG 5
28 #define GET_ULONG 6
29 #define GET_LL 7
30 #define GET_ULL 8
31 #define GET_STR 9
32 #define GET_STR_ALLOC 10
33 #define GET_DISABLED 11
34 #define GET_ENUM 12
35 #define GET_SET 13
36 #define GET_DOUBLE 14
38 #define GET_ASK_ADDR 128
39 #define GET_TYPE_MASK 127
41 enum get_opt_arg_type { NO_ARG, OPT_ARG, REQUIRED_ARG };
43 struct st_typelib;
45 struct my_option
47 const char *name; /* Name of the option */
48 int id; /* unique id or short option */
49 const char *comment; /* option comment, for autom. --help */
50 void *value; /* The variable value */
51 void *u_max_value; /* The user def. max variable value */
52 struct st_typelib *typelib; /* Pointer to possible values */
53 ulong var_type; /* Must match the variable type */
54 enum get_opt_arg_type arg_type;
55 longlong def_value; /* Default value */
56 longlong min_value; /* Min allowed value */
57 ulonglong max_value; /* Max allowed value */
58 longlong sub_size; /* Subtract this from given value */
59 long block_size; /* Value should be a mult. of this */
60 void *app_type; /* To be used by an application */
63 typedef my_bool (*my_get_one_option)(int, const struct my_option *, char *);
64 typedef void (*my_error_reporter)(enum loglevel level, const char *format, ...)
65 ATTRIBUTE_FORMAT_FPTR(printf, 2, 3);
67 /**
68 Used to retrieve a reference to the object (variable) that holds the value
69 for the given option. For example, if var_type is GET_UINT, the function
70 must return a pointer to a variable of type uint. A argument is stored in
71 the location pointed to by the returned pointer.
73 typedef void *(*my_getopt_value)(const char *, uint, const struct my_option *,
74 int *);
76 extern char *disabled_my_option;
77 extern my_bool my_getopt_print_errors;
78 extern my_bool my_getopt_skip_unknown;
79 extern my_error_reporter my_getopt_error_reporter;
81 extern int handle_options (int *argc, char ***argv,
82 const struct my_option *longopts, my_get_one_option);
83 extern void my_cleanup_options(const struct my_option *options);
84 extern void my_print_help(const struct my_option *options);
85 extern void my_print_variables(const struct my_option *options);
86 extern void my_getopt_register_get_addr(my_getopt_value);
88 ulonglong getopt_ull_limit_value(ulonglong num, const struct my_option *optp,
89 my_bool *fix);
90 longlong getopt_ll_limit_value(longlong, const struct my_option *,
91 my_bool *fix);
92 my_bool getopt_compare_strings(const char *s, const char *t, uint length);
94 C_MODE_END
96 #endif /* _my_getopt_h */