aboutsummaryrefslogtreecommitdiff
path: root/lib/Support/CommandLine.cpp
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2006-08-23 07:10:06 +0000
committerReid Spencer <rspencer@reidspencer.com>2006-08-23 07:10:06 +0000
commit6f4c60770cfe6c485cdcb1397df59d2c7778cbc9 (patch)
tree97f7dedfb1196d848a698f9be7650689d0698315 /lib/Support/CommandLine.cpp
parent142ca8e81800ce6bcb511f3250bae23210d38ec8 (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.cpp40
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;