#include "krb.h"
#include "k5-int.h"
#include <stdio.h>
#include <assert.h>
krb5_context krb5__krb4_context = 0;
char *
krb__get_srvtabname(default_srvtabname)
const char *default_srvtabname;
{
const char* names[3];
char **full_name = 0, **cpp;
krb5_error_code retval;
char *retname;
if (!krb5__krb4_context) {
retval = krb5_init_context(&krb5__krb4_context);
if (!retval)
return NULL;
}
names[0] = "libdefaults";
names[1] = "krb4_srvtab";
names[2] = 0;
retval = profile_get_values(krb5__krb4_context->profile, names,
&full_name);
if (retval == 0 && full_name && full_name[0]) {
retname = strdup(full_name[0]);
for (cpp = full_name; *cpp; cpp++)
krb5_xfree(*cpp);
krb5_xfree(full_name);
} else {
retname = strdup(default_srvtabname);
}
return retname;
}
FILE*
krb__get_cnffile()
{
FILE *cnffile = 0;
char cnfname[FILENAME_MAX];
char defname[FILENAME_MAX];
UINT rc;
defname[sizeof(defname) - 1] = '\0';
rc = GetWindowsDirectory(defname, sizeof(defname) - 1);
assert(rc > 0);
strncat(defname, "\\", sizeof(defname) - 1 - strlen(defname));
strncat(defname, DEF_KRB_CONF, sizeof(defname) - 1 - strlen(defname));
cnfname[sizeof(cnfname) - 1] = '\0';
GetPrivateProfileString(INI_FILES, INI_KRB_CONF, defname,
cnfname, sizeof(cnfname) - 1, KERBEROS_INI);
cnffile = fopen(cnfname, "r");
return cnffile;
}
FILE*
krb__get_realmsfile()
{
FILE *realmsfile = 0;
char realmsname[FILENAME_MAX];
char defname[FILENAME_MAX];
UINT rc;
defname[sizeof(defname) - 1] = '\0';
rc = GetWindowsDirectory(defname, sizeof(defname) - 1);
assert(rc > 0);
strncat(defname, "\\", sizeof(defname) - 1 - strlen(defname));
strncat(defname, DEF_KRB_REALMS, sizeof(defname) - 1 - strlen(defname));
defname[sizeof(defname) - 1] = '\0';
GetPrivateProfileString(INI_FILES, INI_KRB_REALMS, defname,
realmsname, sizeof(realmsname) - 1, KERBEROS_INI);
realmsfile = fopen(realmsname, "r");
return realmsfile;
}
char * KRB5_CALLCONV
krb_get_default_user()
{
static char username[ANAME_SZ];
GetPrivateProfileString(INI_DEFAULTS, INI_USER, "",
username, sizeof(username), KERBEROS_INI);
return username;
}
int KRB5_CALLCONV
krb_set_default_user(username)
char *username;
{
BOOL rc;
rc = WritePrivateProfileString(INI_DEFAULTS, INI_USER,
username, KERBEROS_INI);
if (rc)
return KSUCCESS;
else
return KFAILURE;
}