~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysys/my_getopt.c

  • Committer: Brian Aker
  • Date: 2008-07-11 17:17:17 UTC
  • mfrom: (77.1.79 codestyle)
  • Revision ID: brian@tangent.org-20080711171717-039qp03g93w70rlq
MergeĀ 

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
#include <my_getopt.h>
22
22
#include <errno.h>
23
23
 
24
 
typedef void (*init_func_p)(const struct my_option *option, uchar* *variable,
 
24
typedef void (*init_func_p)(const struct my_option *option, char **variable,
25
25
                            longlong value);
26
26
 
27
27
static void default_reporter(enum loglevel level, const char *format, ...);
36
36
static double getopt_double(char *arg, const struct my_option *optp, int *err);
37
37
static void init_variables(const struct my_option *options,
38
38
                           init_func_p init_one_value);
39
 
static void init_one_value(const struct my_option *option, uchar* *variable,
40
 
                           longlong value);
41
 
static void fini_one_value(const struct my_option *option, uchar* *variable,
42
 
                           longlong value);
43
 
static int setval(const struct my_option *opts, uchar* *value, char *argument,
 
39
static void init_one_value(const struct my_option *option, char **variable,
 
40
                           longlong value);
 
41
static void fini_one_value(const struct my_option *option, char **variable,
 
42
                           longlong value);
 
43
static int setval(const struct my_option *opts, char* *value, char *argument,
44
44
                  my_bool set_maximum_value);
45
45
static char *check_struct_option(char *cur_arg, char *key_name);
46
46
 
97
97
  one. Call function 'get_one_option()' once for each option.
98
98
*/
99
99
 
100
 
static uchar** (*getopt_get_addr)(const char *, uint, const struct my_option *);
 
100
static char** (*getopt_get_addr)(const char *, uint, const struct my_option *);
101
101
 
102
 
void my_getopt_register_get_addr(uchar** (*func_addr)(const char *, uint,
 
102
void my_getopt_register_get_addr(char** (*func_addr)(const char *, uint,
103
103
                                                    const struct my_option *))
104
104
{
105
105
  getopt_get_addr= func_addr;
112
112
  uint opt_found, argvpos= 0, length;
113
113
  my_bool end_of_options= 0, must_be_var, set_maximum_value,
114
114
          option_is_loose;
115
 
  char **pos, **pos_end, *optend, *prev_found,
 
115
  char **pos, **pos_end, *optend, *prev_found=NULL,
116
116
       *opt_str, key_name[FN_REFLEN];
117
117
  const struct my_option *optp;
118
 
  uchar* *value;
 
118
  char* *value;
119
119
  int error, i;
120
120
 
121
121
  /* handle_options() assumes arg0 (program name) always exists */
488
488
                  /* the other loop will break, because *optend + 1 == 0 */
489
489
                }
490
490
              }
491
 
              if ((error= setval(optp, optp->value, argument,
 
491
              if ((error= setval(optp, optp->value, argument,
492
492
                                 set_maximum_value)))
493
493
              {
494
494
                my_getopt_error_reporter(ERROR_LEVEL,
586
586
  Will set the option value to given value
587
587
*/
588
588
 
589
 
static int setval(const struct my_option *opts, uchar* *value, char *argument,
 
589
static int setval(const struct my_option *opts, char* *value, char *argument,
590
590
                  my_bool set_maximum_value)
591
591
{
592
592
  int err= 0;
593
593
 
594
594
  if (value && argument)
595
595
  {
596
 
    uchar* *result_pos= ((set_maximum_value) ?
597
 
                       opts->u_max_value : value);
 
596
    char* *result_pos= ((set_maximum_value) ?
 
597
                        opts->u_max_value : value);
598
598
 
599
599
    if (!result_pos)
600
600
      return EXIT_NO_PTR_TO_VARIABLE;
957
957
    value               Pointer to variable
958
958
*/
959
959
 
960
 
static void init_one_value(const struct my_option *option, uchar* *variable,
 
960
static void init_one_value(const struct my_option *option, char** variable,
961
961
                           longlong value)
962
962
{
963
963
  DBUG_ENTER("init_one_value");
1027
1027
    value               Pointer to variable
1028
1028
*/
1029
1029
 
1030
 
static void fini_one_value(const struct my_option *option, uchar* *variable,
 
1030
static void fini_one_value(const struct my_option *option, char **variable,
1031
1031
                           longlong value __attribute__ ((unused)))
1032
1032
{
1033
1033
  DBUG_ENTER("fini_one_value");
1068
1068
  DBUG_ENTER("init_variables");
1069
1069
  for (; options->name; options++)
1070
1070
  {
1071
 
    uchar* *variable;
 
1071
    char* *variable;
1072
1072
    DBUG_PRINT("options", ("name: '%s'", options->name));
1073
1073
    /*
1074
1074
      We must set u_max_value first as for some variables
1191
1191
  printf("--------------------------------- -----------------------------\n");
1192
1192
  for (optp= options; optp->id; optp++)
1193
1193
  {
1194
 
    uchar* *value= (optp->var_type & GET_ASK_ADDR ?
 
1194
    char* *value= (optp->var_type & GET_ASK_ADDR ?
1195
1195
                  (*getopt_get_addr)("", 0, optp) : optp->value);
1196
1196
    if (value)
1197
1197
    {