Annotation of hatari/src/configuration.c, revision 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.