| Click here to select a new forum. |
| Saving Preferences for Classic Mac Apps |
I’m wondering what the canonical way was to save the user preferences was for Classic macOS was - I thought I could just write a file but I think by design the Toolbox APIs need to have a file handle provided by the open / save dialog. I guess that apps save their prefs somehow in the resources? Does anyone have any info or experience in implementing this? I’m using Code Warrior 6 on MacOS 8.6 but am struggling to find any examples of how to do this.
Posted by: mathieutozer on 2024-04-06 06:56:56 |
I thought I could just write a file
Yes. You can just open a file using the standard C library (fopen). The Macintosh toolbox is slightly more complicated but gives you greater control. https://archive.org/details/inside-macintosh-1992-1994/1992-files/
In System 7 and later:
1. Use FindFolder to find the volume (drive) and directory (folder) id of the System Folder's Preferences Folder
2. Using that location and a preferences filename of your choice, call HOpenDF (note 1). If you get a fnfErr, then file doesn't exist. Create it using HCreate and then call HOpenDF again. This returns the refNum ('file handle') you expected from the open/save dialog.
3. Use FSWrite to write to your preferences file, or FSRead to read from it.
4. Use FSClose to close the file after reading or writing.
Note 1: As you pointed out, you can use the data fork or you can add a resource fork to your preference file and store resources in it.
Posted by: David Cook on 2024-04-06 09:21:20 |
Thanks that was really helpful! While digging into it I found that PowerPlant has an LPreferencesFile class which nicely wrapped a lot of that for me.
Posted by: mathieutozer on 2024-04-07 07:38:02 |