-// 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
}
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
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();
}
}
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>
// 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;
}
}
- 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
///
/// \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.
///
///
/// \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
// 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) {