cmdline_parse.c
上传用户:tany51
上传日期:2013-06-12
资源大小:1397k
文件大小:5k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*
  2.  * Copyright (C) 2000,2001 Onlyer (onlyer@263.net)
  3.  * Copyright (C) 2001 sousou (liupeng.cs@263.net)
  4.  *
  5.  * This program is free software; you can redistribute it and/or
  6.  * modify it under the terms of the GNU General Public License
  7.  * as published by the Free Software Foundation; either version 2
  8.  * of the License, or (at your option) any later version.
  9.  *
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to the Free Software
  17.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  18.  */
  19. #include "common/setup_before.h"
  20. #include "setup.h"
  21. #ifdef HAVE_STDDEF_H
  22. # include <stddef.h>
  23. #else
  24. # ifndef NULL
  25. #  define NULL ((void *)0)
  26. # endif
  27. #endif
  28. #include <stdio.h>
  29. #ifdef HAVE_STRING_H
  30. # include <string.h>
  31. #else
  32. # ifdef HAVE_STRINGS_H
  33. #  include <strings.h>
  34. # endif
  35. # ifdef HAVE_MEMORY_H
  36. #  include <memory.h>
  37. # endif
  38. #endif
  39. #include "version.h"
  40. #include "cmdline_parse.h"
  41. #include "d2cs/conf.h"
  42. #include "common/eventlog.h"
  43. #include "common/setup_after.h"
  44. static t_conf_table param_conf_table[]={
  45. #ifdef USE_CHECK_ALLOC
  46. { "-m",          offsetof(t_param,memlog_file),   conf_type_str, 0, DEFAULT_MEMLOG_FILE    },
  47. #endif
  48. { "-c",          offsetof(t_param,prefs_file),    conf_type_str, 0, D2DBS_DEFAULT_CONF_FILE},
  49. { "-l",          offsetof(t_param,logfile),       conf_type_str, 0, NULL                   },
  50. { "-h",          offsetof(t_param,help),          conf_type_bool,0, NULL                   },
  51. { "--help",      offsetof(t_param,help),          conf_type_bool,0, NULL                   },
  52. { "-v",          offsetof(t_param,version),       conf_type_bool,0, NULL                   },
  53. { "--version",   offsetof(t_param,version),       conf_type_bool,0, NULL                   },
  54. { "-f",          offsetof(t_param,foreground),    conf_type_bool,0, NULL                   },
  55. { "--foreground",offsetof(t_param,foreground),    conf_type_bool,0, NULL                   },
  56. { "-D",          offsetof(t_param,debugmode),     conf_type_bool,0, NULL                   },
  57. { "--debug",     offsetof(t_param,debugmode),     conf_type_bool,0, NULL                   },
  58. #ifdef WIN32
  59. { "--service",  offsetof(t_param,run_as_service),conf_type_bool,0, NULL                   },
  60. { "-s",          offsetof(t_param,make_service),  conf_type_str, 0, NULL                   },
  61. #endif
  62. { NULL,          0,                               conf_type_none,0, NULL                   }
  63. };
  64. static t_param cmdline_param;
  65. static char help_message[]="Usage: d2cs [<options>]n"
  66. " -m <FILE>: set memory debug logging file to FILEn"
  67. " -c <FILE>: set configuration file to FILEn"
  68. " -l <FILE>: set log to FILEn"
  69. " -h, --help: show this help message and exitn"
  70. " -v, --version: show version information and exitn"
  71. " -f, --foreground: start in foreground mode (don`t daemonize)n"
  72. " -D, --debug: run in debug mode (run in foreground and log to stdout)n"
  73. #ifdef WIN32
  74. "    Running as service functions:n"
  75. "  --service   run as servicen"
  76. "    -s install               install servicen"
  77. "    -s uninstall             uninstall servicen"
  78. #endif  
  79. "n"
  80. "Notes:n"
  81. " 1.You should always use absolute path here for all FILE namesn"
  82. " 2.-m option only works when compiled with USE_CHECK_ALLOC definedn";
  83. extern void d2dbs_cmdline_show_help(void)
  84. {
  85. fputs(help_message,stderr);
  86. return;
  87. }
  88. extern void d2dbs_cmdline_show_version(void)
  89. {
  90. fputs(D2DBS_VERSION,stderr);
  91. fputs("nn",stderr);
  92. return;
  93. }
  94. extern int d2dbs_cmdline_parse(int argc, char ** argv)
  95. {
  96. memset(&cmdline_param,0, sizeof(cmdline_param));
  97. if (conf_parse_param(argc, argv, param_conf_table, &cmdline_param, sizeof(cmdline_param))<0) {
  98. return -1;
  99. }
  100. return 0;
  101. }
  102. extern int d2dbs_cmdline_cleanup(void)
  103. {
  104. return conf_cleanup(param_conf_table, &cmdline_param, sizeof(cmdline_param));
  105. }
  106. extern char const * d2dbs_cmdline_get_prefs_file(void)
  107. {
  108. return cmdline_param.prefs_file;
  109. }
  110. extern unsigned int d2dbs_cmdline_get_help(void)
  111. {
  112. return cmdline_param.help;
  113. }
  114. extern unsigned int d2dbs_cmdline_get_version(void)
  115. {
  116. return cmdline_param.version;
  117. }
  118. extern unsigned int d2dbs_cmdline_get_foreground(void)
  119. {
  120. return cmdline_param.foreground;
  121. }
  122. extern char const * d2dbs_cmdline_get_logfile(void)
  123. {
  124. return cmdline_param.logfile;
  125. }
  126. extern unsigned int d2dbs_cmdline_get_debugmode(void)
  127. {
  128. return cmdline_param.debugmode;
  129. }
  130. #ifdef WIN32
  131. extern unsigned int d2dbs_cmdline_get_run_as_service(void)
  132. {
  133. return cmdline_param.run_as_service;
  134. }
  135. extern char const * d2dbs_cmdline_get_make_service(void)
  136. {
  137. return cmdline_param.make_service;
  138. }
  139. #endif
  140. #ifdef USE_CHECK_ALLOC
  141. extern char const * cmdline_get_memlog_file(void)
  142. {
  143. return cmdline_param.memlog_file;
  144. }
  145. #endif