Use getopt so that we can parse packed options (e.g., -an, -54, etc.)
authorDanilo Almeida <dalmeida@mit.edu>
Wed, 19 Apr 2000 17:18:21 +0000 (17:18 +0000)
committerDanilo Almeida <dalmeida@mit.edu>
Wed, 19 Apr 2000 17:18:21 +0000 (17:18 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@12184 dc483132-0cff-0310-8789-dd5450dbe970

src/clients/klist/ChangeLog
src/clients/klist/Makefile.in
src/clients/klist/klist.c

index 86686bbde7281d05184370e167000382419e60c9..31afc389c4445a9a7700bf628284d53fb8ab6198 100644 (file)
@@ -1,3 +1,10 @@
+2000-04-19  Danilo Almeida  <dalmeida@mit.edu>
+
+       * Makefile.in: Link in getopt library on Windows.
+
+       * klist.c: Use getopt so that we can parse combined options (e.g.,
+       -an or -45).
+
 2000-03-07  Danilo Almeida  <dalmeida@mit.edu>
 
        * klist.M: Get man page up-to-date.
index c33a4d0120c64959da631d576bd577a233df90c6..4e067eaa84ba5a65426fa752cd725e5b3b35b8c5 100644 (file)
@@ -14,7 +14,7 @@ all-mac::
 klist: klist.o $(KRB4COMPAT_DEPLIBS)
        $(CC_LINK) -o $@ klist.o $(KRB4COMPAT_LIBS)
 
-$(OUTPRE)klist.exe: $(OUTPRE)klist.obj $(KLIB) $(CLIB)
+$(OUTPRE)klist.exe: $(OUTPRE)klist.obj $(BUILDTOP)\util\windows\$(OUTPRE)getopt.lib $(KLIB) $(CLIB)
        link $(EXE_LINKOPTS) -out:$@ $** wsock32.lib
 
 clean-unix::
index de435c46c38c9fe1683ca94fd4066c5c51837c41..ecf0be6692e8486f4e1809651e16b1994d42055a 100644 (file)
@@ -53,6 +53,8 @@
 #include <netdb.h>
 #endif
 
+extern int optind;
+
 int show_flags = 0, show_time = 0, status_only = 0, show_keys = 0;
 int show_etype = 0, show_addresses = 0, no_resolve = 0;
 char *defname;
@@ -130,6 +132,7 @@ main(argc, argv)
     int argc;
     char **argv;
 {
+    int c;
     char *name;
     int mode;
     int use_k5 = 0, use_k4 = 0;
@@ -141,14 +144,10 @@ main(argc, argv)
 
     progname = GET_PROGNAME(argv[0]);
 
-    argv++;
     name = NULL;
     mode = DEFAULT;
-    while (*argv) {
-       if ((*argv)[0] != '-') {
-           if (name) usage();
-           name = *argv;
-       } else switch ((*argv)[1]) {
+    while ((c = getopt(argc, argv, "fetKsnack45")) != -1) {
+       switch (c) {
        case 'f':
            show_flags = 1;
            break;
@@ -202,7 +201,6 @@ main(argc, argv)
            usage();
            break;
        }
-       argv++;
     }
 
     if (no_resolve && !show_addresses) {
@@ -217,6 +215,14 @@ main(argc, argv)
            usage();
     }
 
+    if (argc - optind > 1) {
+       fprintf(stderr, "Extra arguments (starting with \"%s\").\n",
+               argv[optind+1]);
+       usage();
+    }
+
+    name = (optind == argc-1) ? argv[optind] : 0;
+
     if (!use_k5 && !use_k4)
     {
        use_k5 = default_k5;