my_print_defaults.c
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
  2.    
  3.    This library is free software; you can redistribute it and/or
  4.    modify it under the terms of the GNU Library General Public
  5.    License as published by the Free Software Foundation; either
  6.    version 2 of the License, or (at your option) any later version.
  7.    
  8.    This library 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 GNU
  11.    Library General Public License for more details.
  12.    
  13.    You should have received a copy of the GNU Library General Public
  14.    License along with this library; if not, write to the Free
  15.    Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  16.    MA 02111-1307, USA */
  17. /*
  18. **  print_default.c:
  19. **  Print all parameters in a default file that will be given to some program.
  20. **
  21. **  Written by Monty
  22. */
  23. #include <global.h>
  24. #include <my_sys.h>
  25. #include <getopt.h>
  26. const char *config_file="my"; /* Default config file */
  27. static struct option long_options[] =
  28. {
  29.   {"config-file", required_argument, 0, 'c'},
  30.   {"defaults-file", required_argument, 0, 'c'},
  31.   {"defaults-extra-file", required_argument, 0, 'e'},
  32.   {"extra-file",  required_argument, 0, 'e'},
  33.   {"no-defaults", no_argument,    0, 'n'},
  34.   {"help", no_argument,    0, '?'},
  35.   {"version", no_argument,    0, 'V'},
  36.   {0, 0, 0, 0}
  37. };
  38. static void usage(my_bool version)
  39. {
  40.   printf("%s  Ver 1.3 for %s at %sn",my_progname,SYSTEM_TYPE,
  41.  MACHINE_TYPE);
  42.   if (version)
  43.     return;
  44.   puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,nand you are welcome to modify and redistribute it under the GPL licensen");
  45.   puts("Prints all arguments that is give to some program using the default files");
  46.   printf("Usage: %s [OPTIONS] groupsn",my_progname);
  47.   printf("n
  48.   -c, --config-file=#, --defaults-file=#n
  49.                 The config file to use (default '%s')n
  50.   -e, --extra-file=#, --defaults-extra-file=#n
  51. Read this file after the global /etc config file andn
  52. before the config file in the users home directory.n
  53.   -n, --no-defaults Return an empty string (useful for scripts)n
  54.   -?, --help Display this help message and exit.n
  55.   -V, --version Output version information and exit.n",
  56.  config_file);
  57.   printf("nExample usage: %s --config-file=my client mysqln",my_progname);
  58. }
  59. static int get_options(int *argc,char ***argv)
  60. {
  61.   int c,option_index;
  62.   while ((c=getopt_long(*argc,*argv,"nc:e:V?I",
  63. long_options, &option_index)) != EOF)
  64.   {
  65.     switch (c) {
  66.     case 'c':
  67.       config_file=optarg;
  68.       break;
  69.     case 'e':
  70.       defaults_extra_file=optarg; /* Used by the load_defaults */
  71.       break;
  72.     case 'n':
  73.       exit(0);
  74.     case 'I':
  75.     case '?':
  76.       usage(0);
  77.       exit(0);
  78.     case 'V':
  79.       usage(1);
  80.       exit(0);
  81.     }
  82.   }
  83.   (*argc)-=optind;
  84.   (*argv)+=optind;
  85.   if (*argc < 1)
  86.   {
  87.     usage(0);
  88.     return 1;
  89.   }
  90.   return 0;
  91. }
  92. int main(int argc, char **argv)
  93. {
  94.   int count;
  95.   char **load_default_groups, *tmp_arguments[2],
  96.        **argument, **arguments;
  97.   MY_INIT(argv[0]);
  98.   /*
  99.   ** Check out the args
  100.   */
  101.   if (get_options(&argc,&argv))
  102.     exit(1);
  103.   if (!(load_default_groups=(char**) my_malloc((argc+2)*sizeof(char*),
  104.        MYF(MY_WME))))
  105.     exit(1);
  106.   for (count=0; *argv ; argv++,count++)
  107.     load_default_groups[count]= *argv;
  108.   load_default_groups[count]=0;
  109.   count=1;
  110.   arguments=tmp_arguments;
  111.   arguments[0]=my_progname;
  112.   arguments[1]=0;
  113.   load_defaults(config_file, (const char **) load_default_groups,
  114. &count, &arguments);
  115.   for (argument= arguments+1 ; *argument ; argument++)
  116.     puts(*argument);
  117.   my_free((char*) load_default_groups,MYF(0));
  118.   free_defaults(arguments);
  119.   exit(0);
  120. }