BUG: fix 6647 arguments after -E should not be parsed by CMake

This commit is contained in:
Bill Hoffman 2008-08-19 15:42:48 -04:00
parent d2e2ab72bf
commit d632b96841
3 changed files with 18 additions and 11 deletions

View File

@ -656,7 +656,8 @@ cmDocumentation::Form cmDocumentation::GetFormFromFilename(
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
bool cmDocumentation::CheckOptions(int argc, const char* const* argv) bool cmDocumentation::CheckOptions(int argc, const char* const* argv,
const char* exitOpt)
{ {
// Providing zero arguments gives usage information. // Providing zero arguments gives usage information.
if(argc == 1) if(argc == 1)
@ -673,6 +674,10 @@ bool cmDocumentation::CheckOptions(int argc, const char* const* argv)
bool result = false; bool result = false;
for(int i=1; i < argc; ++i) for(int i=1; i < argc; ++i)
{ {
if(exitOpt && strcmp(argv[i], exitOpt) == 0)
{
return result;
}
RequestedHelpItem help; RequestedHelpItem help;
// Check if this is a supported help option. // Check if this is a supported help option.
if((strcmp(argv[i], "-help") == 0) || if((strcmp(argv[i], "-help") == 0) ||

View File

@ -45,9 +45,12 @@ public:
* Check command line arguments for documentation options. Returns * Check command line arguments for documentation options. Returns
* true if documentation options are found, and false otherwise. * true if documentation options are found, and false otherwise.
* When true is returned, PrintRequestedDocumentation should be * When true is returned, PrintRequestedDocumentation should be
* called. * called. exitOpt can be used for things like cmake -E, so that
* all arguments after the -E are ignored and not searched for
* help arguments.
*/ */
bool CheckOptions(int argc, const char* const* argv); bool CheckOptions(int argc, const char* const* argv,
const char* exitOpt =0);
/** /**
* Print help requested on the command line. Call after * Print help requested on the command line. Call after

View File

@ -314,7 +314,7 @@ int do_cmake(int ac, char** av)
#ifdef CMAKE_BUILD_WITH_CMAKE #ifdef CMAKE_BUILD_WITH_CMAKE
cmDocumentation doc; cmDocumentation doc;
if(doc.CheckOptions(ac, av) || nocwd) if(doc.CheckOptions(ac, av, "-E") || nocwd)
{ {
// Construct and print requested documentation. // Construct and print requested documentation.
cmake hcm; cmake hcm;
@ -416,29 +416,29 @@ int do_cmake(int ac, char** av)
{ {
command = true; command = true;
} }
else if (strcmp(av[i], "-N") == 0) else if (!command && strcmp(av[i], "-N") == 0)
{ {
view_only = true; view_only = true;
} }
else if (strcmp(av[i], "-L") == 0) else if (!command && strcmp(av[i], "-L") == 0)
{ {
list_cached = true; list_cached = true;
} }
else if (strcmp(av[i], "-LA") == 0) else if (!command && strcmp(av[i], "-LA") == 0)
{ {
list_all_cached = true; list_all_cached = true;
} }
else if (strcmp(av[i], "-LH") == 0) else if (!command && strcmp(av[i], "-LH") == 0)
{ {
list_cached = true; list_cached = true;
list_help = true; list_help = true;
} }
else if (strcmp(av[i], "-LAH") == 0) else if (!command && strcmp(av[i], "-LAH") == 0)
{ {
list_all_cached = true; list_all_cached = true;
list_help = true; list_help = true;
} }
else if (strncmp(av[i], "-P", strlen("-P")) == 0) else if (!command && strncmp(av[i], "-P", strlen("-P")) == 0)
{ {
if ( i == ac -1 ) if ( i == ac -1 )
{ {
@ -457,7 +457,6 @@ int do_cmake(int ac, char** av)
args.push_back(av[i]); args.push_back(av[i]);
} }
} }
if(command) if(command)
{ {
int ret = cmake::ExecuteCMakeCommand(args); int ret = cmake::ExecuteCMakeCommand(args);