On 04/23/2013 05:54 AM, Quentin Glidic wrote:

+You can specify short options having an argument with a following space. Long
+options with argument can be specified either with or without an equal sign.

-static void
+static bool
  handle_option(const struct weston_option *option, char *value)
  {

This can be called with NULL from the code below (if the option is last on in argv with no argument after it).

@@ -62,14 +63,20 @@ parse_options(const struct weston_option *options,
                        if (options[k].name &&
                            argv[i][0] == '-' &&
                            argv[i][1] == '-' &&
-                           strncmp(options[k].name, &argv[i][2], len) == 0 &&
-                           (argv[i][len + 2] == '=' || argv[i][len + 2] == 
'\0')) {
-                               handle_option(&options[k], &argv[i][len + 3]);
+                           strncmp(options[k].name, &argv[i][2], len) == 0) {
+
+                               if (argv[i][len + 2] == '=')
+                                       handle_option(&options[k], &argv[i][len 
+ 3]);

You need to check if argv[i][len + 2] == 0, if not then the option did not match.

+                               else if (handle_option(&options[k], argv[i+1]))
+                                       ++i;
                                break;
                        } else if (options[k].short_name &&
                                   argv[i][0] == '-' &&
                                   options[k].short_name == argv[i][1]) {
-                               handle_option(&options[k], &argv[i][2]);
+                               if (argv[i][2] != '\0')
+                                       handle_option(&options[k], &argv[i][2]);

If this returns false then it should continue parsing the next letter as another single-letter option.

+                               else if (handle_option(&options[k], argv[i+1]))

I think you should also make '=' work (ie "-x=12").

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to