KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_config_files(krb5_context context, char **filenames) { krb5_error_code ret; krb5_config_binding *tmp = NULL; while(filenames != NULL && *filenames != NULL && **filenames != '\0') { ret = krb5_config_parse_file_multi(context, *filenames, &tmp); if(ret != 0 && ret != ENOENT && ret != EACCES && ret != EPERM) { krb5_config_file_free(context, tmp); return ret; } filenames++; } #if 0 /* with this enabled and if there are no config files, Kerberos is considererd disabled */ if(tmp == NULL) return ENXIO; #endif #ifdef _WIN32 _krb5_load_config_from_registry(context, &tmp); #endif krb5_config_file_free(context, context->cf); context->cf = tmp; ret = init_context_from_config_file(context); return ret; }
krb5_error_code krb5_reload_config(krb5_context context, unsigned flags, krb5_boolean *reread) { krb5_error_code ret; krb5_config_binding *tmp = NULL; unsigned i; /** * If function returns a failure, and reread is used, value of * reread is FALSE. */ if (reread) *reread = FALSE; if (_krb5_need_to_reload(context) == FALSE) return 0; if (context->config_files == NULL) return 0; for (i = 0; context->config_files[i]; i++) { ret = krb5_config_parse_file_multi(context, context->config_files[i], &tmp); if (ret != 0 && ret != ENOENT && ret != EACCES && ret != EPERM && ret != KRB5_CONFIG_BADFORMAT) { krb5_config_file_free(context, tmp); return ret; } } if (reread) *reread = TRUE; krb5_config_file_free(context, context->cf); context->cf = tmp; return init_context_from_config_file(context); }