diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2006-08-23 07:10:06 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2006-08-23 07:10:06 +0000 |
commit | 6f4c60770cfe6c485cdcb1397df59d2c7778cbc9 (patch) | |
tree | 97f7dedfb1196d848a698f9be7650689d0698315 /lib/Support/CommandLine.cpp | |
parent | 142ca8e81800ce6bcb511f3250bae23210d38ec8 (diff) |
Make the ProgramName variable a std::string so we can eliminate the path
portion fo the program name via sys::Path().getLast(). This makes error
messages more readable since this is invariably used only in error
messages. Instead of:
/path/to/llvm/bin/directory/toolname: error message
we will now get:
toolname: error message
Also, since we always have a program name (even if its defaulted), don't
check to see if it is set or not when generating error messages. This
eliminates a bunch of constant strings, saving a little under 1K of data.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29842 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Support/CommandLine.cpp')
-rw-r--r-- | lib/Support/CommandLine.cpp | 40 |
1 files changed, 14 insertions, 26 deletions
diff --git a/lib/Support/CommandLine.cpp b/lib/Support/CommandLine.cpp index 069940162b..863f5e349d 100644 --- a/lib/Support/CommandLine.cpp +++ b/lib/Support/CommandLine.cpp @@ -18,6 +18,7 @@ #include "llvm/Config/config.h" #include "llvm/Support/CommandLine.h" +#include "llvm/System/Path.h" #include <algorithm> #include <functional> #include <map> @@ -31,7 +32,7 @@ using namespace llvm; using namespace cl; // Globals for name and overview of program -static const char *ProgramName = "<premain>"; +static std::string ProgramName ( "<premain>" ); static const char *ProgramOverview = 0; // This collects additional help to be printed. @@ -289,7 +290,8 @@ void cl::ParseCommandLineOptions(int &argc, char **argv, assert((!getOpts().empty() || !getPositionalOpts().empty()) && "No options specified, or ParseCommandLineOptions called more" " than once!"); - ProgramName = argv[0]; // Save this away safe and snug + sys::Path progname(argv[0]); + ProgramName = sys::Path(argv[0]).getLast(); ProgramOverview = Overview; bool ErrorParsing = false; @@ -448,11 +450,8 @@ void cl::ParseCommandLineOptions(int &argc, char **argv, } if (Handler == 0) { - if (ProgramName) - std::cerr << ProgramName << ": Unknown command line argument '" + std::cerr << ProgramName << ": Unknown command line argument '" << argv[i] << "'. Try: '" << argv[0] << " --help'\n"; - else - std::cerr << "Unknown command line argument '" << argv[i] << "'.\n"; ErrorParsing = true; continue; } @@ -488,28 +487,18 @@ void cl::ParseCommandLineOptions(int &argc, char **argv, // Check and handle positional arguments now... if (NumPositionalRequired > PositionalVals.size()) { - if (ProgramName) - std::cerr << ProgramName - << ": Not enough positional command line arguments specified!\n" - << "Must specify at least " << NumPositionalRequired - << " positional arguments: See: " << argv[0] << " --help\n"; - else - std::cerr << "Not enough positional command line arguments specified!\n" - << "Must specify at least " << NumPositionalRequired - << " positional arguments."; + std::cerr << ProgramName + << ": Not enough positional command line arguments specified!\n" + << "Must specify at least " << NumPositionalRequired + << " positional arguments: See: " << argv[0] << " --help\n"; ErrorParsing = true; } else if (!HasUnlimitedPositionals && PositionalVals.size() > PositionalOpts.size()) { - if (ProgramName) - std::cerr << ProgramName - << ": Too many positional arguments specified!\n" - << "Can specify at most " << PositionalOpts.size() - << " positional arguments: See: " << argv[0] << " --help\n"; - else - std::cerr << "Too many positional arguments specified!\n" - << "Can specify at most " << PositionalOpts.size() - << " positional arguments.\n"; + std::cerr << ProgramName + << ": Too many positional arguments specified!\n" + << "Can specify at most " << PositionalOpts.size() + << " positional arguments: See: " << argv[0] << " --help\n"; ErrorParsing = true; } else if (ConsumeAfterOpt == 0) { @@ -616,8 +605,7 @@ bool Option::error(std::string Message, const char *ArgName) { if (ArgName[0] == 0) std::cerr << HelpStr; // Be nice for positional arguments else - std::cerr << (ProgramName ? ProgramName : "***") - << ": for the -" << ArgName; + std::cerr << ProgramName << ": for the -" << ArgName; std::cerr << " option: " << Message << "\n"; return true; |