OSErr error;
struct enum_settings_state *state;
- state = safemalloc(sizeof(*state));
+ state = snew(struct enum_settings_state);
error = get_session_dir(kDontCreateFolder, &state->vRefNum, &state->dirID);
if (error != noErr) {
- safefree(state);
+ sfree(state);
return NULL;
}
state->index = 1;
char *resname;
Str255 presname;
Handle resvalue;
+ Handle reshandle;
int id;
/* Open the host key file */
UseResFile(keyrefnum);
resname = dupprintf("%s@%d:%s", keytype, port, hostname);
c2pstrcpy(presname, resname);
-
+
+ reshandle = Get1NamedResource(FOUR_CHAR_CODE('TEXT'), presname);
+ if (reshandle != NULL) {
+ /* The resource exists, we're replacing a host key */
+ RemoveResource(reshandle);
+ }
error = PtrToHand(key, &resvalue, strlen(key));
if (error != noErr) goto out;