(parse_options): Allow GNU-like option arguments like
"--desktop=800x600".  (Not perfect -- we don't allow shorthands.)

diff --git a/misc/options.c b/misc/options.c
index cae462f..ca8d99a 100644
--- a/misc/options.c
+++ b/misc/options.c
@@ -248,6 +248,7 @@
 
     for (i = 0; argv[i]; i++)
     {
+        const char *equalarg = NULL;
         char *p = argv[i];
         if (*p++ != '-') continue;  /* not an option */
         if (*p && !p[1]) /* short name */
@@ -257,14 +258,31 @@
         }
         else  /* long name */
         {
+	    const char *equal = strchr  (p, '=');
             if (*p == '-') p++;
             /* check for the long name */
-            for (opt = option_table; opt->longname; opt++)
+            for (opt = option_table; opt->longname; opt++) {
+	        /* Plain --option */
                 if (!strcmp( p, opt->longname )) break;
+
+		/* --option=value */
+		if (opt->has_arg &&
+		    equal &&
+		    strlen (opt->longname) == equal - p &&
+		    !strncmp (p, opt->longname, equal - p)) {
+		        equalarg = equal + 1;
+		        break;
+		    }
+	    }
         }
         if (!opt->longname) continue;
 
-        if (opt->has_arg && argv[i+1])
+	if (equalarg)
+	{
+            opt->func( equalarg );
+            remove_options( argv, i, 1, opt->inherit );
+	}
+        else if (opt->has_arg && argv[i+1])
         {
             opt->func( argv[i+1] );
             remove_options( argv, i, 2, opt->inherit );