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
32 #define GET_STR_ALLOC 10
33 #define GET_DISABLED 11
38 #define GET_ASK_ADDR 128
39 #define GET_TYPE_MASK 127
41 enum get_opt_arg_type
{ NO_ARG
, OPT_ARG
, REQUIRED_ARG
};
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);
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
*,
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
,
90 longlong
getopt_ll_limit_value(longlong
, const struct my_option
*,
92 my_bool
getopt_compare_strings(const char *s
, const char *t
, uint length
);
96 #endif /* _my_getopt_h */