From: Marcin Siodelski Date: Tue, 12 Feb 2013 09:55:17 +0000 (+0100) Subject: [2700] Fix issue where the cmd line switches are printed as ASCII codes. X-Git-Tag: bind10-1.0.0-rc-release~22^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b8d6b949eb7f4705e32fbdfd7694ca2e6a6a5cdc;p=thirdparty%2Fkea.git [2700] Fix issue where the cmd line switches are printed as ASCII codes. --- diff --git a/tests/tools/perfdhcp/command_options.cc b/tests/tools/perfdhcp/command_options.cc index f770373f6e..9433442551 100644 --- a/tests/tools/perfdhcp/command_options.cc +++ b/tests/tools/perfdhcp/command_options.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2012-2013 Internet Systems Consortium, Inc. ("ISC") // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -87,7 +87,7 @@ CommandOptions::reset() { } bool -CommandOptions::parse(int argc, char** const argv) { +CommandOptions::parse(int argc, char** const argv, bool print_cmd_line) { // Reset internal variables used by getopt // to eliminate undefined behavior when // parsing different command lines multiple times @@ -125,7 +125,7 @@ CommandOptions::parse(int argc, char** const argv) { reset(); // Informs if program has been run with 'h' or 'v' option. - bool help_or_version_mode = initialize(argc, argv); + bool help_or_version_mode = initialize(argc, argv, print_cmd_line); if (!help_or_version_mode) { validate(); } @@ -133,7 +133,7 @@ CommandOptions::parse(int argc, char** const argv) { } bool -CommandOptions::initialize(int argc, char** argv) { +CommandOptions::initialize(int argc, char** argv, bool print_cmd_line) { int opt = 0; // Subsequent options returned by getopt() std::string drop_arg; // Value of -Dargument size_t percent_loc = 0; // Location of % sign in -D @@ -151,10 +151,10 @@ CommandOptions::initialize(int argc, char** argv) { // they will be tuned and validated elsewhere while((opt = getopt(argc, argv, "hv46r:t:R:b:n:p:d:D:l:P:a:L:" "s:iBc1T:X:O:E:S:I:x:w:")) != -1) { - stream << " -" << opt; + stream << " -" << static_cast(opt); if (optarg) { stream << " " << optarg; - } + } switch (opt) { case '1': use_first_ = true; @@ -416,7 +416,9 @@ CommandOptions::initialize(int argc, char** argv) { } } - std::cout << "Running: " << stream.str() << std::endl; + if (print_cmd_line) { + std::cout << "Running: " << stream.str() << std::endl; + } // Handle the local '-l' address/interface if (!localname_.empty()) { diff --git a/tests/tools/perfdhcp/command_options.h b/tests/tools/perfdhcp/command_options.h index cbb62363b9..4b804dc3e4 100644 --- a/tests/tools/perfdhcp/command_options.h +++ b/tests/tools/perfdhcp/command_options.h @@ -1,4 +1,4 @@ -// Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2012-2013 Internet Systems Consortium, Inc. ("ISC") // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -56,9 +56,10 @@ public: /// /// \param argc Argument count passed to main(). /// \param argv Argument value array passed to main(). + /// \param print_cmd_line Print the command line being run to the console. /// \throws isc::InvalidParameter if parse fails. /// \return true if program has been run in help or version mode ('h' or 'v' flag). - bool parse(int argc, char** const argv); + bool parse(int argc, char** const argv, bool print_cmd_line = false); /// \brief Returns IP version. /// @@ -261,9 +262,10 @@ private: /// /// \param argc Argument count passed to main(). /// \param argv Argument value array passed to main(). + /// \param print_cmd_line Print the command line being run to the console. /// \throws isc::InvalidParameter if command line options initialization fails. /// \return true if program has been run in help or version mode ('h' or 'v' flag). - bool initialize(int argc, char** argv); + bool initialize(int argc, char** argv, bool print_cmd_line); /// \brief Validates initialized options. /// diff --git a/tests/tools/perfdhcp/main.cc b/tests/tools/perfdhcp/main.cc index aa202f1a2a..a5254fc915 100644 --- a/tests/tools/perfdhcp/main.cc +++ b/tests/tools/perfdhcp/main.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2012-2013 Internet Systems Consortium, Inc. ("ISC") // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -32,7 +32,11 @@ main(int argc, char* argv[]) { // If parser returns true it means that user specified // 'h' or 'v' command line option. Program shows the // help or version message and exits here. - if (command_options.parse(argc, argv)) { + // The third argument indicates that the command line + // should be printed when it gets parsed. This is useful + // in particular when the command line needs to be + // extracted from the log file. + if (command_options.parse(argc, argv, true)) { return (ret_code); } } catch(isc::Exception& e) {