Solaris 9 doesn't have getopt.

Part 2 of a fix for #6611.

Signed-off-by: Jesse Adkins <[email protected]>
---
 main.c |   94 ++++++++++++++++++++++++++++++----------------------------------
 1 files changed, 44 insertions(+), 50 deletions(-)

diff --git a/main.c b/main.c
index 17252fb..d0bff06 100644
--- a/main.c
+++ b/main.c
@@ -24,7 +24,6 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
-#include <getopt.h>
 
 extern int num_ops;
 extern int num_colors;
@@ -132,7 +131,7 @@ int main(int argc, char **argv)
 {
        Display *dpy;
        XEvent ev;
-       int i, o, maj, min;
+       int i, j, maj, min;
        static Bool is_sync = FALSE, print_version = FALSE;
        XWindowAttributes a;
        XSetWindowAttributes as;
@@ -140,47 +139,45 @@ int main(int argc, char **argv)
        char *display = NULL;
        char *test, *format, *opname, *nextname;
 
-       static struct option longopts[] = {
-               { "display",    required_argument,      NULL,   'd' },
-               { "iterations", required_argument,      NULL,   'i' },
-               { "formats",    required_argument,      NULL,   'f' },
-               { "tests",      required_argument,      NULL,   't' },
-               { "ops",        required_argument,      NULL,   'o' },
-               { "verbose",    no_argument,            NULL,   'v' },
-               { "sync",       no_argument,            &is_sync, TRUE},
-               { "minimalrendering", no_argument,      &minimalrendering,
-                   TRUE},
-               { "version",    no_argument,            &print_version, TRUE },
-               { NULL,         0,                      NULL,   0 }
-       };
-
-       while ((o = getopt_long(argc, argv, "d:i:f:t:o:v", longopts, NULL)) != 
-1) {
-               switch (o) {
-               case 'd':
-                       display = optarg;
-                       break;
-               case 'i':
-                       pixmap_move_iter = atoi(optarg);
-                       break;
-               case 'o':
-                       for (i = 0; i < num_ops; i++)
-                               ops[i].disabled = TRUE;
-
-                       nextname = optarg;
+       for (i = 1; i < argc; i++) {
+               char *arg = argv[i];
+               if (strcmp(arg, "-d") == 0 || strcmp(arg, "-display") == 0) {
+                       if (i++ >= argc)
+                               usage(argv[0]);
+
+                       display = argv[i];
+               }
+               else if (strcmp(arg, "-i") == 0 || strcmp(arg, "-iterations") 
== 0) {
+                       if (i++ >= argc)
+                               usage(argv[0]);
+
+                       pixmap_move_iter = atoi(argv[i]);
+               }
+               else if (strcmp(arg, "-o") == 0 || strcmp(arg, "--ops") == 0) {
+                       if (i++ >= argc)
+                               usage(argv[0]);
+
+                       for (j = 0; j < num_ops; j++)
+                               ops[j].disabled = TRUE;
+
+                       nextname = argv[i];
                        while ((opname = strsep(&nextname, ",")) != NULL) {
-                               for (i = 0; i < num_ops; i++) {
-                                       if (strcasecmp(ops[i].name, opname) !=
+                               for (j = 0; j < num_ops; j++) {
+                                       if (strcasecmp(ops[j].name, opname) !=
                                            0)
                                                continue;
-                                       ops[i].disabled = FALSE;
+                                       ops[j].disabled = FALSE;
                                        break;
                                }
-                               if (i == num_ops)
+                               if (j == num_ops)
                                        usage(argv[0]);
                        }
-                       break;
-               case 'f':
-                       nextname = optarg;
+               }
+               else if (strcmp(arg, "-f") == 0 || strcmp(arg, "--formats") == 
0) {
+                       if (i++ >= argc)
+                               usage(argv[0]);
+
+                       nextname = argv[i];
                        for (format_whitelist_len = 0;;format_whitelist_len++)
                        {
                                if ((format = strsep(&nextname, ",")) == NULL)
@@ -195,15 +192,17 @@ int main(int argc, char **argv)
                        /* Now the list is separated by \0s, so use strlen to
                         * step between entries.
                         */
-                       format = optarg;
-                       for (i = 0; i < format_whitelist_len; i++) {
-                               format_whitelist[i] = strdup(format);
+                       format = argv[i];
+                       for (j = 0; j < format_whitelist_len; j++) {
+                               format_whitelist[j] = strdup(format);
                                format += strlen(format) + 1;
                        }
+               }
+               else if (strcmp(arg, "-t") == 0 || strcmp(arg, "--test") == 0) {
+                       if (i++ >= argc)
+                               usage(argv[0]);
 
-                       break;
-               case 't':
-                       nextname = optarg;
+                       nextname = argv[i];
 
                        /* disable all tests */
                        enabled_tests = 0;
@@ -239,16 +238,11 @@ int main(int argc, char **argv)
                                        usage(argv[0]);
                                }
                        }
-
-                       break;
-               case 'v':
+               }
+               else if (strcmp(arg, "-v") == 0 || strcmp(arg, "--verbose") == 
0)
                        is_verbose = TRUE;
-                       break;
-               case 0:
-                       break;
-               default:
+               else {
                        usage(argv[0]);
-                       break;
                }
        }
 
-- 
1.7.1

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to