GliderPRO/Sources/Prefs.c

1 line
6.1 KiB
C
Raw Permalink Normal View History

//============================================================================ //---------------------------------------------------------------------------- // Prefs.c //---------------------------------------------------------------------------- //============================================================================ #include <Folders.h> #include <Gestalt.h> #include <Script.h> #include <TextUtils.h> #include <ToolUtils.h> #include "Externs.h" #include "Environ.h" #define kPrefCreatorType 'ozm5' #define kPrefFileType 'gliP' #define kPrefFileName "\pGlider Prefs" #define kDefaultPrefFName "\pPreferences" #define kPrefsStringsID 160 #define kNewPrefsAlertID 160 #define kPrefsFNameIndex 1 Boolean CanUseFindFolder (void); Boolean GetPrefsFPath (long *, short *); Boolean CreatePrefsFolder (short *); Boolean WritePrefs (long *, short *, prefsInfo *); OSErr ReadPrefs (long *, short *, prefsInfo *); Boolean DeletePrefs (long *, short *); void BringUpDeletePrefsAlert (void); //============================================================== Functions //-------------------------------------------------------------- CanUseFindFolder Boolean CanUseFindFolder (void) { OSErr theErr; long theFeature; if (!thisMac.hasGestalt) return(false); theErr = Gestalt(gestaltFindFolderAttr, &theFeature); if (theErr != noErr) return(false); if (!BitTst(&theFeature, 31 - gestaltFindFolderPresent)) return(false); else return(true); } //-------------------------------------------------------------- GetPrefsFPath Boolean GetPrefsFPath (long *prefDirID, short *systemVolRef) { OSErr theErr; theErr = FindFolder(kOnSystemDisk, kPreferencesFolderType, kCreateFolder, systemVolRef, prefDirID); if (theErr != noErr) return(false); return(true); } //-------------------------------------------------------------- CreatePrefsFolder Boolean CreatePrefsFolder (short *systemVolRef) { HFileParam fileParamBlock; Str255 folderName; OSErr theErr; GetIndString(folderName, kPrefsStringsID, kPrefsFNameIndex); fileParamBlock.ioVRefNum = *systemVolRef; fileParamBlock.ioDirID = 0; fileParamBlock.ioNamePtr = folderName; fileParamBlock.ioCompletion = nil; theErr = PBDirCreate((HParmBlkPtr)&fileParamBlock, false); if (theErr != noErr) { CheckFileError(theErr, "\pPreferences"); return(false); } return(true); } //-------------------------------------------------------------- WritePrefs Boolean WritePrefs (long *prefDirID, short *systemVolRef, prefsInfo *thePrefs) { OSErr theErr; short fileRefNum; long byteCount; FSSpec theSpecs; Str255 fileName = kPrefFileName; theErr = FSMakeFSSpec(*systemVolRef, *prefDirID, fileName, &theSpecs); if (theErr != noErr) { if (theErr != fnfErr) { CheckFileError(theErr, "\pPreferences"); return(false); } theErr = FSpCreate(&theSpecs, kPrefCreatorType, kPrefFileType, smSystemScript); if (theErr != noErr) { CheckFileError(theErr, "\pPreferences"); return(false); } } theErr = FSpOpenDF(&theSpecs, fsRdWrPerm, &fileRefNum); if (theErr != noErr) { CheckFileError(theErr, "\pPreferences"); return(false); } byteCount = sizeof(*thePrefs); theErr = FSWrite(fileRefNum, &byteCount, thePrefs); if (theErr != noErr) { CheckFileError(theErr, "\pPreferences"); return(false); } theErr = FSClose(fileRefNum); if (theErr != noErr) { CheckFileError(theErr, "\pPreferences"); return(false); } return(true); } //-------------------------------------------------------------- SavePrefs Boolean SavePrefs (prefsInfo *thePrefs, short versionNow) { long prefDirID; short systemVolRef; thePrefs->prefVersion = versionNow; if (!GetPrefsFPath(&prefDirID, &systemVolRef)) return(false); if (!WritePrefs(&prefDirID, &systemVolRef, thePrefs)) return(false); return(true); } //-------------------------------------------------------------- ReadPrefs OSErr ReadPrefs (long *prefDirID, short *systemVolRef, prefsInfo *thePrefs) { OSErr theErr; short fileRefNum; long byteCount; FSSpec theSpecs;