diff options
Diffstat (limited to 'src/windows/ms2mit/ms2mit.c')
-rw-r--r-- | src/windows/ms2mit/ms2mit.c | 36 |
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); |