home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-02-22 | 2.5 KB | 80 lines | [TEXT/KAHL] |
- // File "prefs.c" - General Routines for Getting and Saving Preferences
- // This source file is Copyright Matt Slot & Slot-Machines Ltd., © 1993
-
- #include <Folders.h>
-
- #include "main.h"
- #include "prefs.h"
-
- // * **************************************************************************** * //
-
- extern GlobalsRec glob;
-
- // * **************************************************************************** * //
- // * **************************************************************************** * //
-
- Handle GetPrefs(long type, short version) {
- short prefsRefNum, saveRefNum;
- Handle rsrc, pref=0;
-
- saveRefNum = CurResFile();
- if ((prefsRefNum = OpenPrefsFile()) == -1) return(0);
-
- if ((rsrc = Get1Resource(type, version)) == 0) goto GET_PREFS_ERROR;
- if ((pref = NewHandle(GetHandleSize(rsrc))) == 0) goto GET_PREFS_ERROR;
- BlockMove(*rsrc, *pref, GetHandleSize(rsrc));
-
- ReleaseResource(rsrc);
-
- GET_PREFS_ERROR:
- CloseResFile(prefsRefNum);
- UseResFile(saveRefNum);
- return(pref);
- }
-
- // * **************************************************************************** * //
- // * **************************************************************************** * //
-
- void WritePrefs(Handle pref, long type, short version) {
- short prefsRefNum, saveRefNum;
- Handle rsrc, oldRsrc;
-
- if (pref == 0) return;
- saveRefNum = CurResFile();
- if ((prefsRefNum = OpenPrefsFile()) == -1) return;
-
- if (rsrc = Get1Resource(type, version)) RmveResource(rsrc);
- if ((rsrc = NewHandle(GetHandleSize(pref))) == 0) goto WRITE_PREFS_ERROR;
- BlockMove(*pref, *rsrc, GetHandleSize(pref));
-
- AddResource(rsrc, type, version, "\p");
- if (ResError()) goto WRITE_PREFS_ERROR;
- WriteResource(rsrc);
-
- WRITE_PREFS_ERROR:
- CloseResFile(prefsRefNum);
- UseResFile(saveRefNum);
- }
-
- // * **************************************************************************** * //
- // * **************************************************************************** * //
-
- short OpenPrefsFile() {
- short errorCold, prefsRefNum, vRefNum;
- long dirID;
-
- if (errorCold = FindFolder(kOnSystemDisk, kPreferencesFolderType, -1,
- &vRefNum, &dirID)) return(-1);
-
- prefsRefNum = HOpenResFile(vRefNum,dirID, kPrefsFileName, fsRdWrPerm);
- if (ResError() == fnfErr) {
- HCreate(vRefNum, dirID, kPrefsFileName, kCreatorType, kPrefsFileType);
- HCreateResFile(vRefNum, dirID, kPrefsFileName);
- prefsRefNum = HOpenResFile(vRefNum, dirID, kPrefsFileName, fsRdWrPerm);
- }
- if (errorCold || (prefsRefNum == -1)) return(-1);
-
- UseResFile(prefsRefNum);
- return(prefsRefNum);
- }
-