If the error message is going to be ambiguous, try to give the user some clue by returning the last error reported by the OS. Index: trunk/src/clients/kinit/kinit.c =================================================================== --- trunk.orig/src/clients/kinit/kinit.c +++ trunk/src/clients/kinit/kinit.c @@ -658,8 +658,14 @@ k5_kinit(opts, k5) code = krb5_cc_initialize(k5->ctx, k5->cc, opts->canonicalize ? my_creds.client : k5->me); if (code) { - com_err(progname, code, "when initializing cache %s", - opts->k5_cache_name?opts->k5_cache_name:""); + if ((code == KRB5_CC_IO) && (errno != 0)) { + com_err(progname, code, "when initializing cache %s: %s", + opts->k5_cache_name?opts->k5_cache_name:"", + strerror(errno)); + } else { + com_err(progname, code, "when initializing cache %s", + opts->k5_cache_name?opts->k5_cache_name:""); + } goto cleanup; }