On Friday, 2017-05-05 14:20:33 -0400, Lyude wrote:
> A little earlier today I ended up spending a lot of time trying to
> figure out why weston wasn't managing to launch over SSH and telling me
> that I did not have a --tty option specified, despite me passing the
> option strings ["--tty", "3"]. Turns out weston just doesn't support
> that.
> 
> So, add support for this kind of format in addition to "--foo=bar" to
> save others from making the same mistake I did.
> 
> Signed-off-by: Lyude <[email protected]>
> ---
> Resending since I realized I was no longer subscribed to this mailing list
> after the first time I sent this, whoops.
> 
>  shared/option-parser.c | 28 ++++++++++++++++++++++++++++
>  1 file changed, 28 insertions(+)
> 
> diff --git a/shared/option-parser.c b/shared/option-parser.c
> index eee7546..82f2f31 100644
> --- a/shared/option-parser.c
> +++ b/shared/option-parser.c
> @@ -87,6 +87,28 @@ long_option(const struct weston_option *options, int 
> count, char *arg)
>  }
>  
>  static int
> +long_option_with_arg(const struct weston_option *options, int count, char 
> *arg, char *param)
> +{
> +     int k, len;
> +
> +     for (k = 0; k < count; k++) {
> +             if (!options[k].name)
> +                     continue;
> +
> +             len = strlen(options[k].name);
> +             if (strncmp(options[k].name, arg + 2, len) != 0)
> +                     continue;
> +
> +             if (options[k].type == WESTON_OPTION_BOOLEAN)
> +                     continue;

Am I understanding this right, that you're skipping this here because it
is already be handled by long_option()?
I think this is actually unreachable, in which case an assert might
better document this, or you can add a small comment.

With either of these, the patch is
Reviewed-by: Eric Engestrom <[email protected]>

Thanks!

> +
> +             return handle_option(options + k, param);
> +     }
> +
> +     return 0;
> +}
> +
> +static int
>  short_option(const struct weston_option *options, int count, char *arg)
>  {
>       int k;
> @@ -148,6 +170,12 @@ parse_options(const struct weston_option *options,
>                               if (long_option(options, count, argv[i]))
>                                       continue;
>  
> +                             /* ...also handle --foo bar */
> +                             if (i + 1 < *argc &&
> +                                 long_option_with_arg(options, count, 
> argv[i], argv[i+1])) {
> +                                     i++;
> +                                     continue;
> +                             }
>                       } else {
>                               /* Short option, e.g -f or -f42 */
>                               if (short_option(options, count, argv[i]))
> -- 
> 2.9.3
> 
_______________________________________________
wayland-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to