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
