Annotation of hatari/src/configuration.c, revision 1.1.1.2

1.1       root        1: /*
                      2:   Hatari
                      3: 
                      4:   Configuration File
                      5: 
                      6:   The configuration file istored in a binary format to prevent tampering.
                      7:         We also store the version number in the file to prevent people from
                      8:         copying old .cfg files between versions.
                      9: */
                     10: 
                     11: #include "main.h"
                     12: #include "configuration.h"
                     13: #include "dialog.h"
                     14: #include "video.h"
                     15: #include "view.h"
                     16: #include "vdi.h"
1.1.1.2 ! root       17: #include "screen.h"
1.1       root       18: 
                     19: static FILE *ConfigFile;
                     20: /*static OFSTRUCT ConfigFileInfo;*/
                     21: BOOL bFirstTimeInstall=FALSE;              /* Has been run before? Used to set default joysticks etc... */
                     22: 
                     23: 
                     24: /*-----------------------------------------------------------------------*/
                     25: /*
1.1.1.2 ! root       26:   Set default configuration values
        !            27:   This is new in Hatari - Winston always loaded its values from a config
        !            28:   file. But since Hatari does not yet use a config file, we need this!
        !            29: */
        !            30: void Configuration_SetDefault(void)
        !            31: {
        !            32:   ConfigureParams.Sound.bEnableSound = FALSE;
        !            33:   ConfigureParams.Screen.Advanced.bFrameSkip = FALSE;
        !            34:   ConfigureParams.Screen.Advanced.bAllowOverscan = TRUE;
        !            35:   ConfigureParams.Screen.ChosenDisplayMode = DISPLAYMODE_HICOL_LOWRES;
        !            36: }
        !            37: 
        !            38: 
        !            39: /*-----------------------------------------------------------------------*/
        !            40: /*
1.1       root       41:   Load program setting from configuration file
                     42: */
1.1.1.2 ! root       43: void Configuration_Init(void)
1.1       root       44: {
                     45: /*
                     46:   char sVersionString[VERSION_STRING_SIZE];
                     47:   int i,j;
                     48: 
                     49:   // Set default settings, incase registry does not exist or is invalid
                     50:   Dialog_DefaultConfigurationDetails();
                     51:   View_DefaultWindowPos();
                     52: 
                     53:   // Open configuration file
                     54:   if (Configuration_OpenFileToRead()) {
                     55:     // Version, check matches
                     56:     Configuration_ReadFromFile(sVersionString,VERSION_STRING_SIZE);
                     57:     if (memcmp(sVersionString,VERSION_STRING,VERSION_STRING_SIZE)==0) {
                     58:       // Configure
                     59:       Configuration_ReadFromFile(&ConfigureParams.Configure.nMinMaxSpeed,4);
                     60:       Configuration_ReadFromFile(&WindowInitRect.left,4);
                     61:       Configuration_ReadFromFile(&WindowInitRect.top,4);
                     62:       for(i=0; i<2; i++) {
                     63:         for(j=0; j<MAX_FLOPPY_MENU_IMAGES; j++) {
                     64:           Configuration_ReadFromFile(szPreviousImageFilenames[i][j],MAX_FILENAME_LENGTH);
                     65:         }
                     66:         Configuration_ReadFromFile(&nPreviousImageFilenames[i],4);
                     67:       }
                     68:       for(i=0; i<MAX_TOSIMAGE_COMBO_IMAGES; i++)
                     69:         Configuration_ReadFromFile(szComboTOSImages[i],MAX_FILENAME_LENGTH);
                     70:       // Screen
                     71:       Configuration_ReadFromFile(&ConfigureParams.Screen.bFullScreen,4);
                     72:       Configuration_ReadFromFile(&ConfigureParams.Screen.Advanced.bDoubleSizeWindow,4);
                     73:       Configuration_ReadFromFile(&ConfigureParams.Screen.Advanced.bAllowOverscan,4);
                     74:       Configuration_ReadFromFile(&ConfigureParams.Screen.Advanced.bInterlacedFullScreen,4);
                     75:       Configuration_ReadFromFile(&ConfigureParams.Screen.Advanced.bSyncToRetrace,4);
                     76:       Configuration_ReadFromFile(&ConfigureParams.Screen.ChosenDisplayMode,4);
                     77:       Configuration_ReadFromFile(&ConfigureParams.Screen.bCaptureChange,4);
                     78:       Configuration_ReadFromFile(&ConfigureParams.Screen.nFramesPerSecond,4);
                     79:       Configuration_ReadFromFile(&ConfigureParams.Screen.bUseHighRes,4);
                     80:       // Joysticks    
                     81:       Configuration_ReadFromFile(&ConfigureParams.Joysticks.bUseDirectInput,4);
                     82:       Configuration_ReadFromFile(&ConfigureParams.Joysticks.Joy[0].bCursorEmulation,4);
                     83:       Configuration_ReadFromFile(&ConfigureParams.Joysticks.Joy[0].bEnableAutoFire,4);
                     84:       Configuration_ReadFromFile(&ConfigureParams.Joysticks.Joy[1].bCursorEmulation,4);
                     85:       Configuration_ReadFromFile(&ConfigureParams.Joysticks.Joy[1].bEnableAutoFire,4);
                     86:       // Keyboard
                     87:       Configuration_ReadFromFile(&ConfigureParams.Keyboard.bDisableKeyRepeat,4);
                     88:       Configuration_ReadFromFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F11][SHORT_CUT_SHIFT],4);
                     89:       Configuration_ReadFromFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F11][SHORT_CUT_CTRL],4);
                     90:       Configuration_ReadFromFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F12][SHORT_CUT_SHIFT],4);
                     91:       Configuration_ReadFromFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F12][SHORT_CUT_CTRL],4);
                     92:       Configuration_ReadFromFile(ConfigureParams.Keyboard.szMappingFileName,sizeof(ConfigureParams.Keyboard.szMappingFileName));
                     93:       // Sound
                     94:       Configuration_ReadFromFile(&ConfigureParams.Sound.bEnableSound,4);
                     95:       Configuration_ReadFromFile(&ConfigureParams.Sound.nPlaybackQuality,4);
                     96:       Configuration_ReadFromFile(ConfigureParams.Sound.szYMCaptureFileName,sizeof(ConfigureParams.Sound.szYMCaptureFileName));
                     97:       // Memory
                     98:       Configuration_ReadFromFile(&ConfigureParams.Memory.nMemorySize,4);
                     99:       Configuration_ReadFromFile(ConfigureParams.Memory.szMemoryCaptureFileName,sizeof(ConfigureParams.Memory.szMemoryCaptureFileName));
                    100:       // DiscImage
                    101:       Configuration_ReadFromFile(&ConfigureParams.DiscImage.bAutoInsertDiscB,4);
                    102:       Configuration_ReadFromFile(ConfigureParams.DiscImage.szDiscImageDirectory,sizeof(ConfigureParams.DiscImage.szDiscImageDirectory));
                    103:       // HardDisc
                    104:       Configuration_ReadFromFile(&ConfigureParams.HardDisc.nDriveList,4);
                    105:       Configuration_ReadFromFile(&ConfigureParams.HardDisc.bBootFromHardDisc,4);
                    106:       Configuration_ReadFromFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_C],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_C]));
                    107:       Configuration_ReadFromFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_D],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_D]));
                    108:       Configuration_ReadFromFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_E],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_E]));
                    109:       Configuration_ReadFromFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_F],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_F]));
                    110:       // TOSGEM
                    111:       Configuration_ReadFromFile(ConfigureParams.TOSGEM.szTOSImageFileName,sizeof(ConfigureParams.TOSGEM.szTOSImageFileName));
                    112:       Configuration_ReadFromFile(&ConfigureParams.TOSGEM.bUseTimeDate,4);
                    113:       Configuration_ReadFromFile(&ConfigureParams.TOSGEM.bAccGEMGraphics,4);
                    114:       Configuration_ReadFromFile(&ConfigureParams.TOSGEM.bUseExtGEMResolutions,4);
                    115:       Configuration_ReadFromFile(&ConfigureParams.TOSGEM.nGEMResolution,4);
                    116:       Configuration_ReadFromFile(&ConfigureParams.TOSGEM.nGEMColours,4);
                    117:       // RS232
                    118:       Configuration_ReadFromFile(&ConfigureParams.RS232.bEnableRS232,4);
                    119:       Configuration_ReadFromFile(&ConfigureParams.RS232.nCOMPort,4);
                    120:       // Printer
                    121:       Configuration_ReadFromFile(&ConfigureParams.Printer.bEnablePrinting,4);
                    122:       Configuration_ReadFromFile(&ConfigureParams.Printer.bPrintToFile,4);
                    123:       Configuration_ReadFromFile(ConfigureParams.Printer.szPrintToFileName,sizeof(ConfigureParams.Printer.szPrintToFileName));
                    124:       // Favourites
                    125:       Configuration_ReadFromFile(&ConfigureParams.Favourites.bCheckDiscs,4);
                    126:       Configuration_ReadFromFile(&ConfigureParams.Favourites.bOnlyShowIfExist,4);
                    127: 
                    128:       bUseVDIRes = ConfigureParams.TOSGEM.bUseExtGEMResolutions;
                    129:       bUseHighRes = ConfigureParams.Screen.bUseHighRes || (bUseVDIRes && (ConfigureParams.TOSGEM.nGEMColours==GEMCOLOUR_2));
                    130:     }
                    131: 
                    132:     // And close up
                    133:     Configuration_CloseFile();
                    134:   }
                    135:   else {
                    136:     // No configuration file, assume first-time install
                    137:     bFirstTimeInstall = TRUE;
                    138:   }
                    139: 
                    140:   // Copy details to globals, TRUE
                    141:   Dialog_CopyDetailsFromConfiguration(TRUE);
                    142: */
                    143: }
                    144: 
                    145: 
                    146: /*-----------------------------------------------------------------------*/
                    147: /*
                    148:   Save program setting to configuration file
                    149: */
                    150: void Configuration_UnInit(void)
                    151: {
                    152: /* FIXME: Rewrite this, too! */
                    153: /*
                    154:   int i,j;
                    155: 
                    156:   // Open configuration file
                    157:   if (Configuration_OpenFileToWrite()) {
                    158:     // Version
                    159:     Configuration_WriteToFile(VERSION_STRING,VERSION_STRING_SIZE);
                    160:     // Configure
                    161:     Configuration_WriteToFile(&ConfigureParams.Configure.nMinMaxSpeed,4);
                    162:     ConfigureParams.Configure.nPrevMinMaxSpeed = ConfigureParams.Configure.nMinMaxSpeed;
                    163:     Configuration_WriteToFile(&WindowInitRect.left,4);
                    164:     Configuration_WriteToFile(&WindowInitRect.top,4);
                    165:     for(i=0; i<2; i++) {
                    166:       for(j=0; j<MAX_FLOPPY_MENU_IMAGES; j++) {
                    167:         Configuration_WriteToFile(szPreviousImageFilenames[i][j],MAX_FILENAME_LENGTH);
                    168:       }
                    169:       Configuration_WriteToFile(&nPreviousImageFilenames[i],4);
                    170:     }
                    171:     for(i=0; i<MAX_TOSIMAGE_COMBO_IMAGES; i++)
                    172:       Configuration_WriteToFile(szComboTOSImages[i],MAX_FILENAME_LENGTH);
                    173:     // Screen
                    174:     Configuration_WriteToFile(&ConfigureParams.Screen.bFullScreen,4);
                    175:     Configuration_WriteToFile(&ConfigureParams.Screen.Advanced.bDoubleSizeWindow,4);
                    176:     Configuration_WriteToFile(&ConfigureParams.Screen.Advanced.bAllowOverscan,4);
                    177:     Configuration_WriteToFile(&ConfigureParams.Screen.Advanced.bInterlacedFullScreen,4);
                    178:     Configuration_WriteToFile(&ConfigureParams.Screen.Advanced.bSyncToRetrace,4);
                    179:     Configuration_WriteToFile(&ConfigureParams.Screen.ChosenDisplayMode,4);
                    180:     Configuration_WriteToFile(&ConfigureParams.Screen.bCaptureChange,4);
                    181:     Configuration_WriteToFile(&ConfigureParams.Screen.nFramesPerSecond,4);
                    182:     Configuration_WriteToFile(&ConfigureParams.Screen.bUseHighRes,4);
                    183:     // Joysticks    
                    184:     Configuration_WriteToFile(&ConfigureParams.Joysticks.bUseDirectInput,4);
                    185:     Configuration_WriteToFile(&ConfigureParams.Joysticks.Joy[0].bCursorEmulation,4);
                    186:     Configuration_WriteToFile(&ConfigureParams.Joysticks.Joy[0].bEnableAutoFire,4);
                    187:     Configuration_WriteToFile(&ConfigureParams.Joysticks.Joy[1].bCursorEmulation,4);
                    188:     Configuration_WriteToFile(&ConfigureParams.Joysticks.Joy[1].bEnableAutoFire,4);
                    189:     // Keyboard
                    190:     Configuration_WriteToFile(&ConfigureParams.Keyboard.bDisableKeyRepeat,4);
                    191:     Configuration_WriteToFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F11][SHORT_CUT_SHIFT],4);
                    192:     Configuration_WriteToFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F11][SHORT_CUT_CTRL],4);
                    193:     Configuration_WriteToFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F12][SHORT_CUT_SHIFT],4);
                    194:     Configuration_WriteToFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F12][SHORT_CUT_CTRL],4);
                    195:     Configuration_WriteToFile(ConfigureParams.Keyboard.szMappingFileName,sizeof(ConfigureParams.Keyboard.szMappingFileName));
                    196:     // Sound
                    197:     Configuration_WriteToFile(&ConfigureParams.Sound.bEnableSound,4);
                    198:     Configuration_WriteToFile(&ConfigureParams.Sound.nPlaybackQuality,4);
                    199:     Configuration_WriteToFile(ConfigureParams.Sound.szYMCaptureFileName,sizeof(ConfigureParams.Sound.szYMCaptureFileName));
                    200:     // Memory
                    201:     Configuration_WriteToFile(&ConfigureParams.Memory.nMemorySize,4);
                    202:     Configuration_WriteToFile(ConfigureParams.Memory.szMemoryCaptureFileName,sizeof(ConfigureParams.Memory.szMemoryCaptureFileName));
                    203:     // DiscImage
                    204:     Configuration_WriteToFile(&ConfigureParams.DiscImage.bAutoInsertDiscB,4);
                    205:     Configuration_WriteToFile(ConfigureParams.DiscImage.szDiscImageDirectory,sizeof(ConfigureParams.DiscImage.szDiscImageDirectory));
                    206:     // HardDisc
                    207:     Configuration_WriteToFile(&ConfigureParams.HardDisc.nDriveList,4);
                    208:     Configuration_WriteToFile(&ConfigureParams.HardDisc.bBootFromHardDisc,4);
                    209:     Configuration_WriteToFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_C],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_C]));
                    210:     Configuration_WriteToFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_D],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_D]));
                    211:     Configuration_WriteToFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_E],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_E]));
                    212:     Configuration_WriteToFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_F],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_F]));
                    213:     // TOSGEM
                    214:     Configuration_WriteToFile(ConfigureParams.TOSGEM.szTOSImageFileName,sizeof(ConfigureParams.TOSGEM.szTOSImageFileName));
                    215:     Configuration_WriteToFile(&ConfigureParams.TOSGEM.bUseTimeDate,4);
                    216:     Configuration_WriteToFile(&ConfigureParams.TOSGEM.bAccGEMGraphics,4);
                    217:     Configuration_WriteToFile(&ConfigureParams.TOSGEM.bUseExtGEMResolutions,4);
                    218:     Configuration_WriteToFile(&ConfigureParams.TOSGEM.nGEMResolution,4);
                    219:     Configuration_WriteToFile(&ConfigureParams.TOSGEM.nGEMColours,4);
                    220:     // RS232
                    221:     Configuration_WriteToFile(&ConfigureParams.RS232.bEnableRS232,4);
                    222:     Configuration_WriteToFile(&ConfigureParams.RS232.nCOMPort,4);
                    223:     // Printer
                    224:     Configuration_WriteToFile(&ConfigureParams.Printer.bEnablePrinting,4);
                    225:     Configuration_WriteToFile(&ConfigureParams.Printer.bPrintToFile,4);
                    226:     Configuration_WriteToFile(ConfigureParams.Printer.szPrintToFileName,sizeof(ConfigureParams.Printer.szPrintToFileName));
                    227:     // Favourites
                    228:     Configuration_WriteToFile(&ConfigureParams.Favourites.bCheckDiscs,4);
                    229:     Configuration_WriteToFile(&ConfigureParams.Favourites.bOnlyShowIfExist,4);
                    230: 
                    231:     // And close up
                    232:     Configuration_CloseFile();
                    233:   }
                    234: */
                    235: }
                    236: 
                    237: 
                    238: /*-----------------------------------------------------------------------*/
                    239: /*
                    240:   Open configuration file to write to
                    241: */
                    242: BOOL Configuration_OpenFileToWrite(void)
                    243: {
                    244:   char szString[MAX_FILENAME_LENGTH];
                    245: 
                    246:   /* Create file */
                    247:   sprintf(szString,"%s/hatari.cfg",szWorkingDir);
                    248:   ConfigFile = fopen(szString, "wb");
                    249:   if (ConfigFile!=NULL)
                    250:     return(TRUE);
                    251: 
                    252:   /* Whoops, error */
                    253:   return(FALSE);
                    254: }
                    255: 
                    256: 
                    257: /*-----------------------------------------------------------------------*/
                    258: /*
                    259:   Open configuration file for reading
                    260: */
                    261: BOOL Configuration_OpenFileToRead(void)
                    262: {
                    263:   char szString[MAX_FILENAME_LENGTH];
                    264: 
                    265:   /* Create file */
                    266:   sprintf(szString,"%s/hatari.cfg",szWorkingDir);
                    267:   ConfigFile = fopen(szString, "rb");
                    268:   if (ConfigFile!=NULL)
                    269:     return(TRUE);
                    270: 
                    271:   /* Whoops, error */
                    272:   return(FALSE);
                    273: }
                    274: 
                    275: 
                    276: /*-----------------------------------------------------------------------*/
                    277: /*
                    278:   Close configuration
                    279: */
                    280: void Configuration_CloseFile(void)
                    281: {
                    282:   fclose(ConfigFile);
                    283: }
                    284: 
                    285: 
                    286: /*-----------------------------------------------------------------------*/
                    287: /*
                    288:   Write entry to configuration file
                    289: */
                    290: void Configuration_WriteToFile(void *pData,int nBytes)
                    291: {
                    292:   fwrite(pData, 1, nBytes, ConfigFile);
                    293: }
                    294: 
                    295: 
                    296: /*-----------------------------------------------------------------------*/
                    297: /*
                    298:   Read entry from configuration file
                    299: */
                    300: void Configuration_ReadFromFile(void *pData,int nBytes)
                    301: {
                    302:   fread(pData, 1, nBytes, ConfigFile);
                    303: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.