[Spice-devel] [PATCH spice 5/9] spicec: enable multiple CmdLineParser instantiations
Hans de Goede
hdegoede at redhat.com
Sun Oct 17 07:32:49 PDT 2010
Ack.
On 10/17/2010 04:13 PM, Arnon Gilboa wrote:
> Used by controller. One instance at a time, not thread-safe.
> Add basename() for win32.
> ---
> client/cmd_line_parser.cpp | 23 ++++++++++++++++++++++-
> 1 files changed, 22 insertions(+), 1 deletions(-)
>
> diff --git a/client/cmd_line_parser.cpp b/client/cmd_line_parser.cpp
> index 3f45551..a9c1857 100644
> --- a/client/cmd_line_parser.cpp
> +++ b/client/cmd_line_parser.cpp
> @@ -53,6 +53,11 @@ CmdLineParser::CmdLineParser(std::string description, bool allow_positional_args
> , _positional_args (allow_positional_args)
> , _done (false)
> {
> + //Enables multiple instantiations. One at a time, not thread-safe.
> + optind = 1;
> + opterr = 1;
> + optopt = 0;
> + optarg = 0;
> }
>
> CmdLineParser::~CmdLineParser()
> @@ -428,13 +433,29 @@ char* CmdLineParser::next_argument()
> return _argv[optind++];
> }
>
> +#ifdef WIN32
> +char* basename(char *str)
> +{
> + char *base;
> + if ((base = strrchr(str, '\\'))) {
> + return base;
> + }
> +
> + if ((base = strrchr(str, ':'))) {
> + return base;
> + }
> + return str;
> +}
> +
> +#endif
> +
> void CmdLineParser::show_help()
> {
> static const int HELP_START_POS = 30;
> static const int HELP_WIDTH = 80 - HELP_START_POS;
> std::ostringstream os;
>
> - os<< _argv[0]<< " - "<< _description.c_str()<< "\n\noptions:\n\n";
> + os<< basename(_argv[0])<< " - "<< _description.c_str()<< "\n\noptions:\n\n";
>
> Options::iterator iter = _options.begin();
> for (; iter != _options.end(); ++iter) {
More information about the Spice-devel
mailing list