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

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

unix.superglobalmegacorp.com

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