X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8650108199bf799f21e29811cddaefd579c98c88..1bd01c51622ff35ec5a6072db767dd2b94e7d3bf:/src/common/cmdline.cpp?ds=inline diff --git a/src/common/cmdline.cpp b/src/common/cmdline.cpp index 88d22ca184..9217f27019 100644 --- a/src/common/cmdline.cpp +++ b/src/common/cmdline.cpp @@ -193,6 +193,7 @@ struct wxCmdLineParserData void SetArguments(int argc, char **argv); #if wxUSE_UNICODE void SetArguments(int argc, wxChar **argv); + void SetArguments(int argc, const wxCmdLineArgsArray& argv); #endif // wxUSE_UNICODE void SetArguments(const wxString& cmdline); @@ -240,6 +241,12 @@ void wxCmdLineParserData::SetArguments(int argc, wxChar **argv) } } +void wxCmdLineParserData::SetArguments(int WXUNUSED(argc), + const wxCmdLineArgsArray& argv) +{ + m_arguments = argv.GetArguments(); +} + #endif // wxUSE_UNICODE void wxCmdLineParserData::SetArguments(const wxString& cmdLine) @@ -310,6 +317,11 @@ void wxCmdLineParser::SetCmdLine(int argc, wxChar **argv) m_data->SetArguments(argc, argv); } +void wxCmdLineParser::SetCmdLine(int argc, const wxCmdLineArgsArray& argv) +{ + m_data->SetArguments(argc, argv); +} + #endif // wxUSE_UNICODE void wxCmdLineParser::SetCmdLine(const wxString& cmdline) @@ -716,58 +728,44 @@ int wxCmdLineParser::Parse(bool showUsage) } else // it's an option. not a switch { - // get the value - if ( isLong ) + switch ( (*p).GetValue() ) { - if ( *p++ != _T('=') ) - { - errorMsg << wxString::Format(_("Option '%s' requires a value, '=' expected."), name.c_str()) - << _T('\n'); - - ok = false; - } - } - else // short option - { - switch ( (*p).GetValue() ) - { - case _T('='): - case _T(':'): - // the value follows - ++p; - break; - - case 0: - // the value is in the next argument - if ( ++n == count ) - { - // ... but there is none - errorMsg << wxString::Format(_("Option '%s' requires a value."), - name.c_str()) - << _T('\n'); - - ok = false; - } - else - { - // ... take it from there - p = m_data->m_arguments[n].begin(); - end = m_data->m_arguments[n].end(); - } - break; + case _T('='): + case _T(':'): + // the value follows + ++p; + break; - default: - // the value is right here: this may be legal or - // not depending on the option style - if ( opt.flags & wxCMD_LINE_NEEDS_SEPARATOR ) - { - errorMsg << wxString::Format(_("Separator expected after the option '%s'."), - name.c_str()) - << _T('\n'); + case 0: + // the value is in the next argument + if ( ++n == count ) + { + // ... but there is none + errorMsg << wxString::Format(_("Option '%s' requires a value."), + name.c_str()) + << _T('\n'); + + ok = false; + } + else + { + // ... take it from there + p = m_data->m_arguments[n].begin(); + end = m_data->m_arguments[n].end(); + } + break; - ok = false; - } - } + default: + // the value is right here: this may be legal or + // not depending on the option style + if ( opt.flags & wxCMD_LINE_NEEDS_SEPARATOR ) + { + errorMsg << wxString::Format(_("Separator expected after the option '%s'."), + name.c_str()) + << _T('\n'); + + ok = false; + } } if ( ok )