static OSErr mac_opensessionfrom(FSSpec *fss) { FInfo fi; Session *s; void *sesshandle; OSErr err; s = snew(Session); memset(s, 0, sizeof(*s)); err = FSpGetFInfo(fss, &fi); if (err != noErr) return err; if (fi.fdFlags & kIsStationery) s->hasfile = FALSE; else { s->hasfile = TRUE; s->savefile = *fss; } sesshandle = open_settings_r_fsp(fss); if (sesshandle == NULL) { /* XXX need a way to pass up an error number */ err = -9999; goto fail; } load_open_settings(sesshandle, &s->cfg); close_settings_r(sesshandle); mac_startsession(s); return noErr; fail: sfree(s); return err; }
void *open_settings_r(char const *sessionname) { short sessVRefNum; long sessDirID; FSSpec sessfile; OSErr error; Str255 psessionname; error = get_session_dir(kDontCreateFolder, &sessVRefNum, &sessDirID); if (!sessionname || !*sessionname) sessionname = "Default Settings"; c2pstrcpy(psessionname, sessionname); error = FSMakeFSSpec(sessVRefNum, sessDirID, psessionname, &sessfile); if (error != noErr) goto out; return open_settings_r_fsp(&sessfile); out: return NULL; }