Commit b8d6b949 authored by Marcin Siodelski's avatar Marcin Siodelski
Browse files

[2700] Fix issue where the cmd line switches are printed as ASCII codes.

parent ea110815
// 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 -D<value>argument
size_t percent_loc = 0; // Location of % sign in -D<value>
......@@ -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<char>(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()) {
......
// 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.
///
......
// 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) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment