summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDanilo Almeida <dalmeida@mit.edu>2000-04-19 17:18:21 +0000
committerDanilo Almeida <dalmeida@mit.edu>2000-04-19 17:18:21 +0000
commita629726a95f64cb1d554f1d2c1526c9ba44e4c4f (patch)
treed72a5b5102f0901a9dd956cd7170bbd281fab5ff /src
parent6f313173c122113971e27de316432c75a8e4e234 (diff)
Use getopt so that we can parse packed options (e.g., -an, -54, etc.)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@12184 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/clients/klist/ChangeLog7
-rw-r--r--src/clients/klist/Makefile.in2
-rw-r--r--src/clients/klist/klist.c20
3 files changed, 21 insertions, 8 deletions
diff --git a/src/clients/klist/ChangeLog b/src/clients/klist/ChangeLog
index 86686bbde..31afc389c 100644
--- a/src/clients/klist/ChangeLog
+++ b/src/clients/klist/ChangeLog
@@ -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.
diff --git a/src/clients/klist/Makefile.in b/src/clients/klist/Makefile.in
index c33a4d012..4e067eaa8 100644
--- a/src/clients/klist/Makefile.in
+++ b/src/clients/klist/Makefile.in
@@ -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::
diff --git a/src/clients/klist/klist.c b/src/clients/klist/klist.c
index de435c46c..ecf0be669 100644
--- a/src/clients/klist/klist.c
+++ b/src/clients/klist/klist.c
@@ -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;