NULL, /* wasdefault */
krb5_stdccv3_lock,
krb5_stdccv3_unlock,
+ krb5_stdccv3_switch_to,
#else
krb5_stdcc_get_name,
krb5_stdcc_resolve,
stdccCacheDataPtr ccapi_data = NULL;
krb5_ccache ccache = NULL;
char *name = NULL;
+ cc_string_t defname = NULL;
if (id == NULL) { err = KRB5_CC_NOMEM; }
if (!ccache) { err = KRB5_CC_NOMEM; }
}
+ if (!err) {
+ if ((residual == NULL) || (strlen(residual) == 0)) {
+ err = cc_context_get_default_ccache_name(gCntrlBlock, &defname);
+ if (defname)
+ residual = defname->data;
+ }
+ }
+
if (!err) {
name = strdup (residual);
if (!name) { err = KRB5_CC_NOMEM; }
if (ccache) { free (ccache); }
if (ccapi_data) { free (ccapi_data); }
if (name) { free (name); }
+ if (defname) { cc_string_release(defname); }
return cc_err_xlate (err);
}
return cc_err_xlate(err);
}
+krb5_error_code KRB5_CALLCONV krb5_stdccv3_switch_to
+(krb5_context context, krb5_ccache id)
+{
+ krb5_error_code retval;
+ stdccCacheDataPtr ccapi_data = id->data;
+ int err;
+
+ if ((retval = stdccv3_setup(context, ccapi_data)))
+ return retval;
+
+ err = cc_ccache_set_default(ccapi_data->NamedCache);
+ return cc_err_xlate(err);
+}
+
#else /* !USE_CCAPI_V3 */
static krb5_error_code stdcc_setup(krb5_context context,