-/* $Id: macstore.c,v 1.16 2003/02/02 00:04:36 ben Exp $ */
+/* $Id: macstore.c,v 1.19 2003/04/01 18:10:25 simon Exp $ */
/*
* macstore.c: Macintosh-specific impementation of the interface
FSSpec dstfile;
};
-void *open_settings_w(char const *sessionname) {
+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) {
OSErr error;
Str255 tmpname;
- ws = smalloc(sizeof *ws);
+ ws = snew(struct write_settings);
ws->dstfile = *dstfile;
/* Create a temporary file to save to first. */
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;
fd = FSpOpenResFile(sessfile, fsRdPerm);
if (fd == 0) {error = ResError(); goto out;}
- handle = smalloc(sizeof *handle);
+ handle = snew(int);
*handle = fd;
return handle;