- char *fn = dupprintf("/.putty/sessions/%s", munged);
- strncpy(filename + len, fn, FNLEN - len);
- sfree(fn);
- sfree(munged);
- } else {
- strncpy(filename + len,
- index == INDEX_DIR ? "/.putty" :
- index == INDEX_SESSIONDIR ? "/.putty/sessions" :
- index == INDEX_HOSTKEYS ? "/.putty/sshhostkeys" :
- index == INDEX_HOSTKEYS_TMP ? "/.putty/sshhostkeys.tmp" :
- index == INDEX_RANDSEED ? "/.putty/randomseed" :
- "/.putty/ERROR", FNLEN - len);
+ tmp = make_filename(INDEX_SESSIONDIR, NULL);
+ ret = dupprintf("%s/%s", tmp, munged);
+ sfree(tmp);
+ sfree(munged);
+ return ret;
+ }
+ if (index == INDEX_HOSTKEYS) {
+ env = getenv("PUTTYSSHHOSTKEYS");
+ if (env)
+ return dupstr(env);
+ tmp = make_filename(INDEX_DIR, NULL);
+ ret = dupprintf("%s/sshhostkeys", tmp);
+ sfree(tmp);
+ return ret;
+ }
+ if (index == INDEX_HOSTKEYS_TMP) {
+ tmp = make_filename(INDEX_HOSTKEYS, NULL);
+ ret = dupprintf("%s.tmp", tmp);
+ sfree(tmp);
+ return ret;
+ }
+ if (index == INDEX_RANDSEED) {
+ env = getenv("PUTTYRANDOMSEED");
+ if (env)
+ return dupstr(env);
+ tmp = make_filename(INDEX_DIR, NULL);
+ ret = dupprintf("%s/randomseed", tmp);
+ sfree(tmp);
+ return ret;