From 0c370d056fe0848c8a9cf11c48e423f3f2e97264 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 14 Sep 2010 12:00:03 +0200 Subject: Use options parsing from database instead of our own --- libcommon/common/common.cxx | 55 ++++++++++++++--------------------------- libcommon/common/common.hxx | 2 +- libcommon/common/makefile | 42 +++++++------------------------- libcommon/common/options.cli | 58 -------------------------------------------- 4 files changed, 28 insertions(+), 129 deletions(-) delete mode 100644 libcommon/common/options.cli (limited to 'libcommon') diff --git a/libcommon/common/common.cxx b/libcommon/common/common.cxx index ed8be69..730b8ce 100644 --- a/libcommon/common/common.cxx +++ b/libcommon/common/common.cxx @@ -10,58 +10,39 @@ # include #endif -#ifdef DB_ID_MYSQL +#if defined(DB_ID_MYSQL) # include # include +#else +# error unknown database #endif #include -#include using namespace std; using namespace odb; auto_ptr -create_database (int argc, char* argv[], size_t max_connections) +create_database (int& argc, char* argv[], size_t max_connections) { - try + if (argc > 1 && argv[1] == string ("--help")) { -#ifdef DB_ID_MYSQL - cli::argv_file_scanner scan (argc, argv, "--options-file"); - cli::mysql_options ops (scan); + cerr << "Usage: " << argv[0] << " [options]" << endl + << "Options:" << endl; - if (ops.help ()) - { - cerr << "Usage: " << argv[0] << " [options]" << endl - << "Options:" << endl; - cli::mysql_options::print_usage (cerr); - exit (0); - } +#if defined(DB_ID_MYSQL) + mysql::database::print_usage (cerr); +#endif - auto_ptr f; + exit (0); + } - if (max_connections != 0) - f.reset (new mysql::connection_pool_factory (max_connections)); +#if defined(DB_ID_MYSQL) + auto_ptr f; - return auto_ptr ( - new mysql::database ( - ops.user (), - ops.password_specified () ? &ops.password () : 0, - ops.database (), - ops.host (), - ops.port (), - ops.socket_specified () ? &ops.socket () : 0, - 0, - f)); -#else - return auto_ptr (0); -#endif - } - catch (const cli::exception& e) - { - cerr << e.what () << endl; - exit (1); - } + if (max_connections != 0) + f.reset (new mysql::connection_pool_factory (max_connections)); - return auto_ptr (0); + return auto_ptr (new mysql::database (argc, argv, false, 0, f)); +#endif } diff --git a/libcommon/common/common.hxx b/libcommon/common/common.hxx index 57069dc..2a02a12 100644 --- a/libcommon/common/common.hxx +++ b/libcommon/common/common.hxx @@ -14,6 +14,6 @@ #include LIBCOMMON_EXPORT std::auto_ptr -create_database (int argc, char* argv[], std::size_t max_connections = 0); +create_database (int& argc, char* argv[], std::size_t max_connections = 0); #endif // LIBCOMMON_COMMON_COMMON_HXX diff --git a/libcommon/common/makefile b/libcommon/common/makefile index 27e0bf2..41bb776 100644 --- a/libcommon/common/makefile +++ b/libcommon/common/makefile @@ -5,12 +5,9 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make -# Options file. -# -cli_tun := options.cli cxx_tun := common.cxx -cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o) $(cli_tun:.cli=.o)) +cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) cxx_od := $(cxx_obj:.o=.o.d) common.l := $(out_base)/common.l @@ -23,10 +20,6 @@ clean := $(out_base)/.clean # Import. # $(call import,\ - $(scf_root)/import/cli/stub.make,\ - cli: cli,cli-rules: cli_rules) - -$(call import,\ $(scf_root)/import/libodb/stub.make,\ l: odb.l,cpp-options: odb.l.cpp-options) @@ -48,18 +41,6 @@ $(cxx_obj) $(cxx_od): $(common.l.cpp-options) $(out_base)/config.h $(common.l.cpp-options): value := -I$(out_root)/libcommon -I$(src_root)/libcommon $(common.l.cpp-options): $(odb_db.l.cpp-options) $(odb.l.cpp-options) -genf := $(cli_tun:.cli=.hxx) $(cli_tun:.cli=.ixx) $(cli_tun:.cli=.cxx) -gen := $(addprefix $(out_base)/,$(genf)) - -$(gen): $(cli) -$(gen): cli := $(cli) -$(gen): cli_options += \ ---generate-specifier \ ---generate-file-scanner \ ---guard-prefix LIBCOMMON_COMMON - -$(call include-dep,$(cxx_od),$(cxx_obj),$(gen)) - $(out_base)/config.h: $(dcf_root)/configuration-dynamic.make @echo '// file : libcommon/config.h' >$@ @echo '// author : automatically generated' >>$@ @@ -73,26 +54,23 @@ endif @echo '' >>$@ @echo '#endif // LIBCOMMON_COMMON_CONFIG_H' >>$@ +$(call include-dep,$(cxx_od),$(cxx_obj),$(out_base)/config.h) + # Convenience alias for default target. # $(out_base)/: $(common.l) # Dist. # -$(dist): sources_dist := $(cxx_tun) -$(dist): export sources := $(sources_dist) $(cli_tun:.cli=.cxx) -$(dist): headers_dist = $(subst $(src_base)/,,$(shell find $(src_base) \ +$(dist): export sources := $(cxx_tun) +$(dist): export headers = $(subst $(src_base)/,,$(shell find $(src_base) \ -name '*.hxx' -o -name '*.ixx' -o -name '*.txx')) -$(dist): gen_headers := $(cli_tun:.cli=.hxx) $(cli_tun:.cli=.ixx) -$(dist): export headers = $(sort $(headers_dist) $(gen_headers)) -$(dist): gen_dist := $(gen) -$(dist): data_dist := $(cli_tun) config.h.in +$(dist): data_dist := config.h.in $(dist): export extra_dist := $(data_dist) $(call vc9projs,libcommon) \ $(call vc10projs,libcommon) -$(dist): $(gen) - $(call dist-data,$(sources_dist) $(headers_dist) $(data_dist)) - $(call dist-data,$(gen_dist)) +$(dist): + $(call dist-data,$(sources) $(headers) $(data_dist)) $(call meta-automake) $(call meta-vc9projs,libcommon) $(call meta-vc10projs,libcommon) @@ -103,7 +81,6 @@ $(clean): $(common.l).o.clean \ $(common.l.cpp-options).clean \ $(addsuffix .cxx.clean,$(cxx_obj)) \ $(addsuffix .cxx.clean,$(cxx_od)) \ - $(addprefix $(out_base)/,$(cli_tun:.cli=.cxx.cli.clean)) $(call message,rm $$1,rm -f $$1,$(out_base)/config.h) # Generated .gitignore. @@ -111,7 +88,7 @@ $(clean): $(common.l).o.clean \ ifeq ($(out_base),$(src_base)) $(common.l): | $(out_base)/.gitignore -$(out_base)/.gitignore: files := config.h $(genf) +$(out_base)/.gitignore: files := config.h $(clean): $(out_base)/.gitignore.clean $(call include,$(bld_root)/git/gitignore.make) @@ -124,7 +101,6 @@ $(call include,$(bld_root)/meta/vc9proj.make) $(call include,$(bld_root)/meta/vc10proj.make) $(call include,$(bld_root)/meta/automake.make) -$(call include,$(cli_rules)) $(call include,$(bld_root)/cxx/cxx-d.make) $(call include,$(bld_root)/cxx/cxx-o.make) $(call include,$(bld_root)/cxx/o-l.make) diff --git a/libcommon/common/options.cli b/libcommon/common/options.cli deleted file mode 100644 index b5db026..0000000 --- a/libcommon/common/options.cli +++ /dev/null @@ -1,58 +0,0 @@ -// file : libcommon/common/options.cli -// author : Boris Kolpackov -// copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC -// license : GNU GPL v2; see accompanying LICENSE file - -include ; - -namespace cli -{ - class mysql_options - { - bool --help {"Print usage information and exit."}; - - std::string --user - { - "", - "MySQL database user." - }; - - std::string --password - { - "", - "MySQL database password" - }; - - std::string --database - { - "", - "MySQL database name." - }; - - std::string --host - { - "", - "MySQL database host name or address (localhost by default)." - }; - - unsigned int --port = 0 - { - "", - "MySQL database port number." - }; - - std::string --socket - { - "", - "MySQL database socket name." - }; - - std::string --options-file - { - "", - "Read additional options from . Each option appearing on a separate - line optionally followed by space and an option value. Empty lines and - lines starting with \cb{#} are ignored." - }; - }; -} -- cgit v1.1