void mac_savesession(void) { Session *s = mac_windowsession(FrontWindow()); void *sesshandle; assert(s->hasfile); sesshandle = open_settings_w_fsp(&s->savefile); if (sesshandle == NULL) return; /* XXX report error */ save_open_settings(sesshandle, &s->cfg); close_settings_w(sesshandle); }
void *open_settings_w(char const *sessionname, char **errmsg) { short sessVRefNum; long sessDirID; OSErr error; Str255 psessionname; FSSpec dstfile; *errmsg = NULL; error = get_session_dir(kCreateFolder, &sessVRefNum, &sessDirID); if (error != noErr) return NULL; if (!sessionname || !*sessionname) sessionname = "Default Settings"; c2pstrcpy(psessionname, sessionname); error = FSMakeFSSpec(sessVRefNum, sessDirID, psessionname, &dstfile); if (error == fnfErr) { FSpCreateResFile(&dstfile, PUTTY_CREATOR, SESS_TYPE, smSystemScript); if ((error = ResError()) != noErr) return NULL; } else if (error != noErr) return NULL; return open_settings_w_fsp(&dstfile); }
void mac_savesessionas(void) { #if !TARGET_API_MAC_CARBON /* XXX Navigation Services */ Session *s = mac_windowsession(FrontWindow()); StandardFileReply sfr; void *sesshandle; StandardPutFile("\pSave session as:", s->hasfile ? s->savefile.name : "\puntitled", &sfr); if (!sfr.sfGood) return; if (!sfr.sfReplacing) { FSpCreateResFile(&sfr.sfFile, PUTTY_CREATOR, SESS_TYPE, sfr.sfScript); if (ResError() != noErr) return; /* XXX report error */ } sesshandle = open_settings_w_fsp(&sfr.sfFile); if (sesshandle == NULL) return; /* XXX report error */ save_open_settings(sesshandle, &s->cfg); close_settings_w(sesshandle); s->hasfile = TRUE; s->savefile = sfr.sfFile; #endif }