[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