don't allow switches (i.e. options without value) to have values (closes 781373)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42197 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -595,7 +595,8 @@ int wxCmdLineParser::Parse(bool showUsage)
|
||||
optInd = m_data->FindOptionByLongName(name);
|
||||
if ( optInd == wxNOT_FOUND )
|
||||
{
|
||||
errorMsg << wxString::Format(_("Unknown long option '%s'"), name.c_str()) << wxT("\n");
|
||||
errorMsg << wxString::Format(_("Unknown long option '%s'"), name.c_str())
|
||||
<< _T('\n');
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -604,11 +605,12 @@ int wxCmdLineParser::Parse(bool showUsage)
|
||||
|
||||
// Print the argument including leading "--"
|
||||
name.Prepend( wxT("--") );
|
||||
errorMsg << wxString::Format(_("Unknown option '%s'"), name.c_str()) << wxT("\n");
|
||||
errorMsg << wxString::Format(_("Unknown option '%s'"), name.c_str())
|
||||
<< _T('\n');
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
else // not a long option
|
||||
{
|
||||
isLong = false;
|
||||
|
||||
@@ -625,7 +627,8 @@ int wxCmdLineParser::Parse(bool showUsage)
|
||||
{
|
||||
// we couldn't find a valid option name in the
|
||||
// beginning of this string
|
||||
errorMsg << wxString::Format(_("Unknown option '%s'"), name.c_str()) << wxT("\n");
|
||||
errorMsg << wxString::Format(_("Unknown option '%s'"), name.c_str())
|
||||
<< _T('\n');
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -672,8 +675,24 @@ int wxCmdLineParser::Parse(bool showUsage)
|
||||
continue; // will break, in fact
|
||||
}
|
||||
|
||||
// look at what follows:
|
||||
|
||||
// +1 for leading '-'
|
||||
const wxChar *p = arg.c_str() + 1 + name.length();
|
||||
if ( isLong )
|
||||
p++; // for another leading '-'
|
||||
|
||||
wxCmdLineOption& opt = m_data->m_options[(size_t)optInd];
|
||||
if ( opt.kind == wxCMD_LINE_SWITCH )
|
||||
{
|
||||
// we must check that there is no value following the switch
|
||||
if ( *p != _T('\0') )
|
||||
{
|
||||
errorMsg << wxString::Format(_("Unexpected characters following option '%s'."), name.c_str())
|
||||
<< _T('\n');
|
||||
ok = false;
|
||||
}
|
||||
else // no value, as expected
|
||||
{
|
||||
// nothing more to do
|
||||
opt.SetHasValue();
|
||||
@@ -686,24 +705,21 @@ int wxCmdLineParser::Parse(bool showUsage)
|
||||
ok = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else // it's an option. not a switch
|
||||
{
|
||||
// get the value
|
||||
|
||||
// +1 for leading '-'
|
||||
const wxChar *p = arg.c_str() + 1 + name.length();
|
||||
if ( isLong )
|
||||
{
|
||||
p++; // for another leading '-'
|
||||
|
||||
if ( *p++ != _T('=') )
|
||||
{
|
||||
errorMsg << wxString::Format(_("Option '%s' requires a value, '=' expected."), name.c_str()) << wxT("\n");
|
||||
errorMsg << wxString::Format(_("Option '%s' requires a value, '=' expected."), name.c_str())
|
||||
<< _T('\n');
|
||||
|
||||
ok = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else // short option
|
||||
{
|
||||
switch ( *p )
|
||||
{
|
||||
@@ -719,7 +735,8 @@ int wxCmdLineParser::Parse(bool showUsage)
|
||||
{
|
||||
// ... but there is none
|
||||
errorMsg << wxString::Format(_("Option '%s' requires a value."),
|
||||
name.c_str()) << wxT("\n");
|
||||
name.c_str())
|
||||
<< _T('\n');
|
||||
|
||||
ok = false;
|
||||
}
|
||||
@@ -736,7 +753,8 @@ int wxCmdLineParser::Parse(bool showUsage)
|
||||
if ( opt.flags & wxCMD_LINE_NEEDS_SEPARATOR )
|
||||
{
|
||||
errorMsg << wxString::Format(_("Separator expected after the option '%s'."),
|
||||
name.c_str()) << wxT("\n");
|
||||
name.c_str())
|
||||
<< _T('\n');
|
||||
|
||||
ok = false;
|
||||
}
|
||||
@@ -766,7 +784,8 @@ int wxCmdLineParser::Parse(bool showUsage)
|
||||
else
|
||||
{
|
||||
errorMsg << wxString::Format(_("'%s' is not a correct numeric value for option '%s'."),
|
||||
value.c_str(), name.c_str()) << wxT("\n");
|
||||
value.c_str(), name.c_str())
|
||||
<< _T('\n');
|
||||
|
||||
ok = false;
|
||||
}
|
||||
@@ -781,7 +800,8 @@ int wxCmdLineParser::Parse(bool showUsage)
|
||||
if ( !res || *res )
|
||||
{
|
||||
errorMsg << wxString::Format(_("Option '%s': '%s' cannot be converted to a date."),
|
||||
name.c_str(), value.c_str()) << wxT("\n");
|
||||
name.c_str(), value.c_str())
|
||||
<< _T('\n');
|
||||
|
||||
ok = false;
|
||||
}
|
||||
@@ -796,9 +816,8 @@ int wxCmdLineParser::Parse(bool showUsage)
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
else // not an option, must be a parameter
|
||||
{
|
||||
// a parameter
|
||||
if ( currentParam < countParam )
|
||||
{
|
||||
wxCmdLineParam& param = m_data->m_paramDesc[currentParam];
|
||||
@@ -822,7 +841,8 @@ int wxCmdLineParser::Parse(bool showUsage)
|
||||
}
|
||||
else
|
||||
{
|
||||
errorMsg << wxString::Format(_("Unexpected parameter '%s'"), arg.c_str()) << wxT("\n");
|
||||
errorMsg << wxString::Format(_("Unexpected parameter '%s'"), arg.c_str())
|
||||
<< _T('\n');
|
||||
|
||||
ok = false;
|
||||
}
|
||||
@@ -859,7 +879,8 @@ int wxCmdLineParser::Parse(bool showUsage)
|
||||
}
|
||||
|
||||
errorMsg << wxString::Format(_("The value for the option '%s' must be specified."),
|
||||
optName.c_str()) << wxT("\n");
|
||||
optName.c_str())
|
||||
<< _T('\n');
|
||||
|
||||
ok = false;
|
||||
}
|
||||
@@ -880,7 +901,8 @@ int wxCmdLineParser::Parse(bool showUsage)
|
||||
if ( !(param.flags & wxCMD_LINE_PARAM_OPTIONAL) )
|
||||
{
|
||||
errorMsg << wxString::Format(_("The required parameter '%s' was not specified."),
|
||||
param.description.c_str()) << wxT("\n");
|
||||
param.description.c_str())
|
||||
<< _T('\n');
|
||||
|
||||
ok = false;
|
||||
}
|
||||
|
Reference in New Issue
Block a user