summaryrefslogtreecommitdiffstats
path: root/src/windows/ms2mit/ms2mit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/windows/ms2mit/ms2mit.c')
-rw-r--r--src/windows/ms2mit/ms2mit.c36
1 files changed, 35 insertions, 1 deletions
diff --git a/src/windows/ms2mit/ms2mit.c b/src/windows/ms2mit/ms2mit.c
index eba52e7937..3a7f7d5a2e 100644
--- a/src/windows/ms2mit/ms2mit.c
+++ b/src/windows/ms2mit/ms2mit.c
@@ -29,6 +29,19 @@
#include "krb5.h"
#include <stdio.h>
+#include <string.h>
+
+extern int optind;
+extern char *optarg;
+
+static char *prog;
+
+static void
+xusage(void)
+{
+ fprintf(stderr, "xusage: %s [-c ccache]\n", prog);
+ exit(1);
+}
void
main(
@@ -44,7 +57,24 @@ main(
krb5_creds creds;
krb5_principal princ;
int initial_ticket = 0;
+ int option;
+ char * ccachestr = 0;
+ prog = strrchr(argv[0], '/');
+ prog = prog ? (prog + 1) : argv[0];
+
+ while ((option = getopt(argc, argv, "c:h")) != -1) {
+ switch (option) {
+ case 'c':
+ ccachestr = optarg;
+ break;
+ case 'h':
+ default:
+ xusage();
+ break;
+ }
+ }
+
if (code = krb5_init_context(&kcontext)) {
com_err(argv[0], code, "while initializing kerberos library");
exit(1);
@@ -90,7 +120,11 @@ main(
exit(1);
}
- if (code = krb5_cc_default(kcontext, &ccache)) {
+ if (ccachestr)
+ code = krb5_cc_resolve(kcontext, ccachestr, &ccache);
+ else
+ code = krb5_cc_default(kcontext, &ccache);
+ if (code) {
com_err(argv[0], code, "while getting default ccache");
krb5_free_principal(kcontext, princ);
krb5_cc_close(kcontext, mslsa_ccache);