X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bd996abe63a8ed6aa07b26856a0d7935002e3e81..b1a046e821900affb64c4a267c653a6a7eafd94c:/src/common/cmdline.cpp diff --git a/src/common/cmdline.cpp b/src/common/cmdline.cpp index ec1d43bdb4..9697a6d3ac 100644 --- a/src/common/cmdline.cpp +++ b/src/common/cmdline.cpp @@ -808,9 +808,17 @@ int wxCmdLineParser::Parse(bool showUsage) } else { - optName.Printf(_("%s (or %s)"), - opt.shortName.c_str(), - opt.longName.c_str()); + if ( AreLongOptionsEnabled() ) + { + optName.Printf( _("%s (or %s)"), + opt.shortName.c_str(), + opt.longName.c_str() ); + } + else + { + optName.Printf( wxT("%s"), + opt.shortName.c_str() ); + } } errorMsg << wxString::Format(_("The value for the option '%s' must be specified."), @@ -842,14 +850,23 @@ int wxCmdLineParser::Parse(bool showUsage) } } - if ( !ok && (errorMsg.length() != 0 || helpRequested) ) + // if there was an error during parsing the command line, show this error + // and also the usage message if it had been requested + if ( !ok && (!errorMsg.empty() || (helpRequested && showUsage)) ) { - wxString usage; wxMessageOutput* msgOut = wxMessageOutput::Get(); - wxASSERT(msgOut); - if ( showUsage ) usage = GetUsageString(); if ( msgOut ) + { + wxString usage; + if ( showUsage ) + usage = GetUsageString(); + msgOut->Printf( wxT("%s%s"), usage.c_str(), errorMsg.c_str() ); + } + else + { + wxFAIL_MSG( _T("no wxMessageOutput object?") ); + } } return ok ? 0 : helpRequested ? -1 : 1; @@ -861,10 +878,15 @@ int wxCmdLineParser::Parse(bool showUsage) void wxCmdLineParser::Usage() { - wxString usage = GetUsageString(); wxMessageOutput* msgOut = wxMessageOutput::Get(); if ( msgOut ) - msgOut->Printf( wxT("%s"), usage.c_str() ); + { + msgOut->Printf( wxT("%s"), GetUsageString().c_str() ); + } + else + { + wxFAIL_MSG( _T("no wxMessageOutput object?") ); + } } wxString wxCmdLineParser::GetUsageString() @@ -885,7 +907,7 @@ wxString wxCmdLineParser::GetUsageString() wxString usage; wxArrayString namesOptions, descOptions; - if ( !!m_data->m_logo ) + if ( !m_data->m_logo.empty() ) { usage << m_data->m_logo << _T('\n'); } @@ -1021,9 +1043,17 @@ static wxString GetTypeName(wxCmdLineParamType type) wxFAIL_MSG( _T("unknown option type") ); // still fall through - case wxCMD_LINE_VAL_STRING: s = _("str"); break; - case wxCMD_LINE_VAL_NUMBER: s = _("num"); break; - case wxCMD_LINE_VAL_DATE: s = _("date"); break; + case wxCMD_LINE_VAL_STRING: + s = _("str"); + break; + + case wxCMD_LINE_VAL_NUMBER: + s = _("num"); + break; + + case wxCMD_LINE_VAL_DATE: + s = _("date"); + break; } return s; @@ -1086,7 +1116,7 @@ static wxString GetLongOptionName(const wxChar *p) In particular, to pass a single argument containing a space to the program it should be quoted: - + myprog.exe foo bar -> argc = 3, argv[1] = "foo", argv[2] = "bar" myprog.exe "foo bar" -> argc = 2, argv[1] = "foo bar"