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

1.1       root        1: /*
                      2:   Hatari
                      3: 
                      4:   Configuration File
                      5: 
1.1.1.3   root        6:   The configuration file is stored 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.
1.1       root        9: */
                     10: 
                     11: #include "main.h"
                     12: #include "configuration.h"
                     13: #include "dialog.h"
                     14: #include "video.h"
                     15: #include "vdi.h"
1.1.1.2   root       16: #include "screen.h"
1.1.1.4   root       17: #include "shortcut.h"
1.1.1.5 ! root       18: #include "memAlloc.h"
        !            19: #include "file.h"
        !            20: 
1.1       root       21: 
                     22: static FILE *ConfigFile;
1.1.1.4   root       23: BOOL bFirstTimeInstall=FALSE;    /* Has been run before? Used to set default joysticks etc... */
1.1       root       24: 
                     25: 
                     26: /*-----------------------------------------------------------------------*/
                     27: /*
1.1.1.4   root       28:   Set default configuration values.
1.1.1.2   root       29: */
                     30: void Configuration_SetDefault(void)
                     31: {
1.1.1.4   root       32:   int i;
                     33: 
                     34:   /* Clear parameters */
                     35:   Memory_Clear(&ConfigureParams, sizeof(DLG_PARAMS));
                     36: 
                     37:   /* Set defaults for CPU dialog */
                     38:   ConfigureParams.Configure.nMinMaxSpeed = ConfigureParams.Configure.nPrevMinMaxSpeed = MINMAXSPEED_MIN;
                     39: 
                     40:   /* Set defaults for Disc Image */
                     41:   ConfigureParams.DiscImage.bAutoInsertDiscB = TRUE;
                     42:   strcpy(ConfigureParams.DiscImage.szDiscImageDirectory, szWorkingDir);
                     43:   File_AddSlashToEndFileName(ConfigureParams.DiscImage.szDiscImageDirectory);
                     44: 
                     45:   /* Set defaults for Hard Disc */
                     46:   ConfigureParams.HardDisc.nDriveList = DRIVELIST_NONE;
                     47:   ConfigureParams.HardDisc.bBootFromHardDisc = FALSE;
                     48:   ConfigureParams.HardDisc.nHardDiscDir = DRIVE_C;
                     49:   for(i=0; i<MAX_HARDDRIVES; i++)
                     50:   {
                     51:     strcpy(ConfigureParams.HardDisc.szHardDiscDirectories[i], szWorkingDir);
                     52:     File_CleanFileName(ConfigureParams.HardDisc.szHardDiscDirectories[i]);
                     53:   }
                     54:   strcpy(ConfigureParams.HardDisc.szHardDiscImage, szWorkingDir);
                     55: 
                     56:   /* Set defaults for Joysticks */
                     57:   for(i=0; i<2; i++)
                     58:   {
                     59:     ConfigureParams.Joysticks.Joy[i].bCursorEmulation = FALSE;
                     60:     ConfigureParams.Joysticks.Joy[i].bEnableAutoFire = FALSE;
                     61:   }
                     62: 
                     63:   /* Set defaults for Keyboard */
                     64:   ConfigureParams.Keyboard.bDisableKeyRepeat = TRUE;
                     65:   ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F11][SHORT_CUT_KEY] = SHORTCUT_FULLSCREEN;
                     66:   ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F11][SHORT_CUT_SHIFT] = SHORTCUT_NOTASSIGNED;
                     67:   ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F11][SHORT_CUT_CTRL] = SHORTCUT_NOTASSIGNED;
                     68:   ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F12][SHORT_CUT_KEY] = SHORTCUT_NOTASSIGNED;
                     69:   ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F12][SHORT_CUT_SHIFT] = SHORTCUT_NOTASSIGNED;
                     70:   ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F12][SHORT_CUT_CTRL] = SHORTCUT_NOTASSIGNED;
                     71:   strcpy(ConfigureParams.Keyboard.szMappingFileName, "");
                     72: 
                     73:   /* Set defaults for Memory */
                     74:   ConfigureParams.Memory.nMemorySize = MEMORY_SIZE_1Mb;
                     75:   strcpy(ConfigureParams.Memory.szMemoryCaptureFileName, "");
                     76: 
                     77:   /* Set defaults for Printer */
                     78:   ConfigureParams.Printer.bEnablePrinting = FALSE;
                     79:   ConfigureParams.Printer.bPrintToFile = FALSE;
                     80:   strcpy(ConfigureParams.Printer.szPrintToFileName,"");
                     81: 
                     82:   /* Set defaults for RS232 */
                     83:   ConfigureParams.RS232.bEnableRS232 = FALSE;
                     84:   ConfigureParams.RS232.nCOMPort = COM_PORT_1;
                     85: 
                     86:   /* Set defaults for Screen */
                     87:   ConfigureParams.Screen.bFullScreen = FALSE;
                     88:   ConfigureParams.Screen.Advanced.bDoubleSizeWindow = FALSE;
1.1.1.2   root       89:   ConfigureParams.Screen.Advanced.bAllowOverscan = TRUE;
1.1.1.4   root       90:   ConfigureParams.Screen.Advanced.bInterlacedFullScreen = TRUE;
                     91:   ConfigureParams.Screen.Advanced.bSyncToRetrace = FALSE;
                     92:   ConfigureParams.Screen.Advanced.bFrameSkip = FALSE;  
1.1.1.2   root       93:   ConfigureParams.Screen.ChosenDisplayMode = DISPLAYMODE_HICOL_LOWRES;
1.1.1.4   root       94:   ConfigureParams.Screen.bCaptureChange = FALSE;
                     95:   ConfigureParams.Screen.nFramesPerSecond = 1;
                     96:   ConfigureParams.Screen.bUseHighRes = FALSE;
                     97: 
                     98:   /* Set defaults for Sound */
                     99:   ConfigureParams.Sound.bEnableSound = TRUE;
                    100:   ConfigureParams.Sound.nPlaybackQuality = PLAYBACK_MEDIUM;
                    101:   strcpy(ConfigureParams.Sound.szYMCaptureFileName, "");
                    102: 
                    103:   /* Set defaults for TOSGEM */
                    104:   sprintf(ConfigureParams.TOSGEM.szTOSImageFileName, "%s/tos.img", DATADIR);
                    105:   ConfigureParams.TOSGEM.bUseTimeDate = FALSE;
                    106:   ConfigureParams.TOSGEM.bAccGEMGraphics = FALSE;
                    107:   ConfigureParams.TOSGEM.bUseExtGEMResolutions = FALSE;
                    108:   ConfigureParams.TOSGEM.nGEMResolution = GEMRES_640x480;
                    109:   ConfigureParams.TOSGEM.nGEMColours = GEMCOLOUR_16;
                    110: 
1.1.1.5 ! root      111:   /* Set defaults for System */
        !           112:   ConfigureParams.System.nCpuLevel = 0;
        !           113:   ConfigureParams.System.bCompatibleCpu = FALSE;
        !           114:   ConfigureParams.System.bAddressSpace24 = TRUE;
        !           115:   ConfigureParams.System.bBlitter = FALSE;
1.1.1.2   root      116: }
                    117: 
                    118: 
                    119: /*-----------------------------------------------------------------------*/
                    120: /*
1.1       root      121:   Load program setting from configuration file
                    122: */
1.1.1.2   root      123: void Configuration_Init(void)
1.1       root      124: {
                    125: /*
                    126:   char sVersionString[VERSION_STRING_SIZE];
                    127:   int i,j;
                    128: 
                    129:   // Set default settings, incase registry does not exist or is invalid
                    130:   Dialog_DefaultConfigurationDetails();
                    131:   View_DefaultWindowPos();
                    132: 
                    133:   // Open configuration file
                    134:   if (Configuration_OpenFileToRead()) {
                    135:     // Version, check matches
                    136:     Configuration_ReadFromFile(sVersionString,VERSION_STRING_SIZE);
                    137:     if (memcmp(sVersionString,VERSION_STRING,VERSION_STRING_SIZE)==0) {
                    138:       // Configure
                    139:       Configuration_ReadFromFile(&ConfigureParams.Configure.nMinMaxSpeed,4);
                    140:       Configuration_ReadFromFile(&WindowInitRect.left,4);
                    141:       Configuration_ReadFromFile(&WindowInitRect.top,4);
                    142:       for(i=0; i<2; i++) {
                    143:         for(j=0; j<MAX_FLOPPY_MENU_IMAGES; j++) {
                    144:           Configuration_ReadFromFile(szPreviousImageFilenames[i][j],MAX_FILENAME_LENGTH);
                    145:         }
                    146:         Configuration_ReadFromFile(&nPreviousImageFilenames[i],4);
                    147:       }
                    148:       for(i=0; i<MAX_TOSIMAGE_COMBO_IMAGES; i++)
                    149:         Configuration_ReadFromFile(szComboTOSImages[i],MAX_FILENAME_LENGTH);
                    150:       // Screen
                    151:       Configuration_ReadFromFile(&ConfigureParams.Screen.bFullScreen,4);
                    152:       Configuration_ReadFromFile(&ConfigureParams.Screen.Advanced.bDoubleSizeWindow,4);
                    153:       Configuration_ReadFromFile(&ConfigureParams.Screen.Advanced.bAllowOverscan,4);
                    154:       Configuration_ReadFromFile(&ConfigureParams.Screen.Advanced.bInterlacedFullScreen,4);
                    155:       Configuration_ReadFromFile(&ConfigureParams.Screen.Advanced.bSyncToRetrace,4);
                    156:       Configuration_ReadFromFile(&ConfigureParams.Screen.ChosenDisplayMode,4);
                    157:       Configuration_ReadFromFile(&ConfigureParams.Screen.bCaptureChange,4);
                    158:       Configuration_ReadFromFile(&ConfigureParams.Screen.nFramesPerSecond,4);
                    159:       Configuration_ReadFromFile(&ConfigureParams.Screen.bUseHighRes,4);
                    160:       // Joysticks    
                    161:       Configuration_ReadFromFile(&ConfigureParams.Joysticks.bUseDirectInput,4);
                    162:       Configuration_ReadFromFile(&ConfigureParams.Joysticks.Joy[0].bCursorEmulation,4);
                    163:       Configuration_ReadFromFile(&ConfigureParams.Joysticks.Joy[0].bEnableAutoFire,4);
                    164:       Configuration_ReadFromFile(&ConfigureParams.Joysticks.Joy[1].bCursorEmulation,4);
                    165:       Configuration_ReadFromFile(&ConfigureParams.Joysticks.Joy[1].bEnableAutoFire,4);
                    166:       // Keyboard
                    167:       Configuration_ReadFromFile(&ConfigureParams.Keyboard.bDisableKeyRepeat,4);
                    168:       Configuration_ReadFromFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F11][SHORT_CUT_SHIFT],4);
                    169:       Configuration_ReadFromFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F11][SHORT_CUT_CTRL],4);
                    170:       Configuration_ReadFromFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F12][SHORT_CUT_SHIFT],4);
                    171:       Configuration_ReadFromFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F12][SHORT_CUT_CTRL],4);
                    172:       Configuration_ReadFromFile(ConfigureParams.Keyboard.szMappingFileName,sizeof(ConfigureParams.Keyboard.szMappingFileName));
                    173:       // Sound
                    174:       Configuration_ReadFromFile(&ConfigureParams.Sound.bEnableSound,4);
                    175:       Configuration_ReadFromFile(&ConfigureParams.Sound.nPlaybackQuality,4);
                    176:       Configuration_ReadFromFile(ConfigureParams.Sound.szYMCaptureFileName,sizeof(ConfigureParams.Sound.szYMCaptureFileName));
                    177:       // Memory
                    178:       Configuration_ReadFromFile(&ConfigureParams.Memory.nMemorySize,4);
                    179:       Configuration_ReadFromFile(ConfigureParams.Memory.szMemoryCaptureFileName,sizeof(ConfigureParams.Memory.szMemoryCaptureFileName));
                    180:       // DiscImage
                    181:       Configuration_ReadFromFile(&ConfigureParams.DiscImage.bAutoInsertDiscB,4);
                    182:       Configuration_ReadFromFile(ConfigureParams.DiscImage.szDiscImageDirectory,sizeof(ConfigureParams.DiscImage.szDiscImageDirectory));
                    183:       // HardDisc
                    184:       Configuration_ReadFromFile(&ConfigureParams.HardDisc.nDriveList,4);
                    185:       Configuration_ReadFromFile(&ConfigureParams.HardDisc.bBootFromHardDisc,4);
                    186:       Configuration_ReadFromFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_C],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_C]));
                    187:       Configuration_ReadFromFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_D],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_D]));
                    188:       Configuration_ReadFromFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_E],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_E]));
                    189:       Configuration_ReadFromFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_F],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_F]));
                    190:       // TOSGEM
                    191:       Configuration_ReadFromFile(ConfigureParams.TOSGEM.szTOSImageFileName,sizeof(ConfigureParams.TOSGEM.szTOSImageFileName));
                    192:       Configuration_ReadFromFile(&ConfigureParams.TOSGEM.bUseTimeDate,4);
                    193:       Configuration_ReadFromFile(&ConfigureParams.TOSGEM.bAccGEMGraphics,4);
                    194:       Configuration_ReadFromFile(&ConfigureParams.TOSGEM.bUseExtGEMResolutions,4);
                    195:       Configuration_ReadFromFile(&ConfigureParams.TOSGEM.nGEMResolution,4);
                    196:       Configuration_ReadFromFile(&ConfigureParams.TOSGEM.nGEMColours,4);
                    197:       // RS232
                    198:       Configuration_ReadFromFile(&ConfigureParams.RS232.bEnableRS232,4);
                    199:       Configuration_ReadFromFile(&ConfigureParams.RS232.nCOMPort,4);
                    200:       // Printer
                    201:       Configuration_ReadFromFile(&ConfigureParams.Printer.bEnablePrinting,4);
                    202:       Configuration_ReadFromFile(&ConfigureParams.Printer.bPrintToFile,4);
                    203:       Configuration_ReadFromFile(ConfigureParams.Printer.szPrintToFileName,sizeof(ConfigureParams.Printer.szPrintToFileName));
                    204:       // Favourites
                    205:       Configuration_ReadFromFile(&ConfigureParams.Favourites.bCheckDiscs,4);
                    206:       Configuration_ReadFromFile(&ConfigureParams.Favourites.bOnlyShowIfExist,4);
                    207: 
                    208:       bUseVDIRes = ConfigureParams.TOSGEM.bUseExtGEMResolutions;
                    209:       bUseHighRes = ConfigureParams.Screen.bUseHighRes || (bUseVDIRes && (ConfigureParams.TOSGEM.nGEMColours==GEMCOLOUR_2));
                    210:     }
                    211: 
                    212:     // And close up
                    213:     Configuration_CloseFile();
                    214:   }
                    215:   else {
                    216:     // No configuration file, assume first-time install
                    217:     bFirstTimeInstall = TRUE;
                    218:   }
                    219: 
                    220:   // Copy details to globals, TRUE
                    221:   Dialog_CopyDetailsFromConfiguration(TRUE);
                    222: */
                    223: }
                    224: 
                    225: 
                    226: /*-----------------------------------------------------------------------*/
                    227: /*
                    228:   Save program setting to configuration file
                    229: */
                    230: void Configuration_UnInit(void)
                    231: {
                    232: /* FIXME: Rewrite this, too! */
                    233: /*
                    234:   int i,j;
                    235: 
                    236:   // Open configuration file
                    237:   if (Configuration_OpenFileToWrite()) {
                    238:     // Version
                    239:     Configuration_WriteToFile(VERSION_STRING,VERSION_STRING_SIZE);
                    240:     // Configure
                    241:     Configuration_WriteToFile(&ConfigureParams.Configure.nMinMaxSpeed,4);
                    242:     ConfigureParams.Configure.nPrevMinMaxSpeed = ConfigureParams.Configure.nMinMaxSpeed;
                    243:     Configuration_WriteToFile(&WindowInitRect.left,4);
                    244:     Configuration_WriteToFile(&WindowInitRect.top,4);
                    245:     for(i=0; i<2; i++) {
                    246:       for(j=0; j<MAX_FLOPPY_MENU_IMAGES; j++) {
                    247:         Configuration_WriteToFile(szPreviousImageFilenames[i][j],MAX_FILENAME_LENGTH);
                    248:       }
                    249:       Configuration_WriteToFile(&nPreviousImageFilenames[i],4);
                    250:     }
                    251:     for(i=0; i<MAX_TOSIMAGE_COMBO_IMAGES; i++)
                    252:       Configuration_WriteToFile(szComboTOSImages[i],MAX_FILENAME_LENGTH);
                    253:     // Screen
                    254:     Configuration_WriteToFile(&ConfigureParams.Screen.bFullScreen,4);
                    255:     Configuration_WriteToFile(&ConfigureParams.Screen.Advanced.bDoubleSizeWindow,4);
                    256:     Configuration_WriteToFile(&ConfigureParams.Screen.Advanced.bAllowOverscan,4);
                    257:     Configuration_WriteToFile(&ConfigureParams.Screen.Advanced.bInterlacedFullScreen,4);
                    258:     Configuration_WriteToFile(&ConfigureParams.Screen.Advanced.bSyncToRetrace,4);
                    259:     Configuration_WriteToFile(&ConfigureParams.Screen.ChosenDisplayMode,4);
                    260:     Configuration_WriteToFile(&ConfigureParams.Screen.bCaptureChange,4);
                    261:     Configuration_WriteToFile(&ConfigureParams.Screen.nFramesPerSecond,4);
                    262:     Configuration_WriteToFile(&ConfigureParams.Screen.bUseHighRes,4);
                    263:     // Joysticks    
                    264:     Configuration_WriteToFile(&ConfigureParams.Joysticks.bUseDirectInput,4);
                    265:     Configuration_WriteToFile(&ConfigureParams.Joysticks.Joy[0].bCursorEmulation,4);
                    266:     Configuration_WriteToFile(&ConfigureParams.Joysticks.Joy[0].bEnableAutoFire,4);
                    267:     Configuration_WriteToFile(&ConfigureParams.Joysticks.Joy[1].bCursorEmulation,4);
                    268:     Configuration_WriteToFile(&ConfigureParams.Joysticks.Joy[1].bEnableAutoFire,4);
                    269:     // Keyboard
                    270:     Configuration_WriteToFile(&ConfigureParams.Keyboard.bDisableKeyRepeat,4);
                    271:     Configuration_WriteToFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F11][SHORT_CUT_SHIFT],4);
                    272:     Configuration_WriteToFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F11][SHORT_CUT_CTRL],4);
                    273:     Configuration_WriteToFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F12][SHORT_CUT_SHIFT],4);
                    274:     Configuration_WriteToFile(&ConfigureParams.Keyboard.ShortCuts[SHORT_CUT_F12][SHORT_CUT_CTRL],4);
                    275:     Configuration_WriteToFile(ConfigureParams.Keyboard.szMappingFileName,sizeof(ConfigureParams.Keyboard.szMappingFileName));
                    276:     // Sound
                    277:     Configuration_WriteToFile(&ConfigureParams.Sound.bEnableSound,4);
                    278:     Configuration_WriteToFile(&ConfigureParams.Sound.nPlaybackQuality,4);
                    279:     Configuration_WriteToFile(ConfigureParams.Sound.szYMCaptureFileName,sizeof(ConfigureParams.Sound.szYMCaptureFileName));
                    280:     // Memory
                    281:     Configuration_WriteToFile(&ConfigureParams.Memory.nMemorySize,4);
                    282:     Configuration_WriteToFile(ConfigureParams.Memory.szMemoryCaptureFileName,sizeof(ConfigureParams.Memory.szMemoryCaptureFileName));
                    283:     // DiscImage
                    284:     Configuration_WriteToFile(&ConfigureParams.DiscImage.bAutoInsertDiscB,4);
                    285:     Configuration_WriteToFile(ConfigureParams.DiscImage.szDiscImageDirectory,sizeof(ConfigureParams.DiscImage.szDiscImageDirectory));
                    286:     // HardDisc
                    287:     Configuration_WriteToFile(&ConfigureParams.HardDisc.nDriveList,4);
                    288:     Configuration_WriteToFile(&ConfigureParams.HardDisc.bBootFromHardDisc,4);
                    289:     Configuration_WriteToFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_C],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_C]));
                    290:     Configuration_WriteToFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_D],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_D]));
                    291:     Configuration_WriteToFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_E],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_E]));
                    292:     Configuration_WriteToFile(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_F],sizeof(ConfigureParams.HardDisc.szHardDiscDirectories[DRIVE_F]));
                    293:     // TOSGEM
                    294:     Configuration_WriteToFile(ConfigureParams.TOSGEM.szTOSImageFileName,sizeof(ConfigureParams.TOSGEM.szTOSImageFileName));
                    295:     Configuration_WriteToFile(&ConfigureParams.TOSGEM.bUseTimeDate,4);
                    296:     Configuration_WriteToFile(&ConfigureParams.TOSGEM.bAccGEMGraphics,4);
                    297:     Configuration_WriteToFile(&ConfigureParams.TOSGEM.bUseExtGEMResolutions,4);
                    298:     Configuration_WriteToFile(&ConfigureParams.TOSGEM.nGEMResolution,4);
                    299:     Configuration_WriteToFile(&ConfigureParams.TOSGEM.nGEMColours,4);
                    300:     // RS232
                    301:     Configuration_WriteToFile(&ConfigureParams.RS232.bEnableRS232,4);
                    302:     Configuration_WriteToFile(&ConfigureParams.RS232.nCOMPort,4);
                    303:     // Printer
                    304:     Configuration_WriteToFile(&ConfigureParams.Printer.bEnablePrinting,4);
                    305:     Configuration_WriteToFile(&ConfigureParams.Printer.bPrintToFile,4);
                    306:     Configuration_WriteToFile(ConfigureParams.Printer.szPrintToFileName,sizeof(ConfigureParams.Printer.szPrintToFileName));
                    307:     // Favourites
                    308:     Configuration_WriteToFile(&ConfigureParams.Favourites.bCheckDiscs,4);
                    309:     Configuration_WriteToFile(&ConfigureParams.Favourites.bOnlyShowIfExist,4);
                    310: 
                    311:     // And close up
                    312:     Configuration_CloseFile();
                    313:   }
                    314: */
                    315: }
                    316: 
                    317: 
                    318: /*-----------------------------------------------------------------------*/
                    319: /*
                    320:   Open configuration file to write to
                    321: */
                    322: BOOL Configuration_OpenFileToWrite(void)
                    323: {
                    324:   char szString[MAX_FILENAME_LENGTH];
                    325: 
                    326:   /* Create file */
                    327:   sprintf(szString,"%s/hatari.cfg",szWorkingDir);
                    328:   ConfigFile = fopen(szString, "wb");
                    329:   if (ConfigFile!=NULL)
                    330:     return(TRUE);
                    331: 
                    332:   /* Whoops, error */
                    333:   return(FALSE);
                    334: }
                    335: 
                    336: 
                    337: /*-----------------------------------------------------------------------*/
                    338: /*
                    339:   Open configuration file for reading
                    340: */
                    341: BOOL Configuration_OpenFileToRead(void)
                    342: {
                    343:   char szString[MAX_FILENAME_LENGTH];
                    344: 
                    345:   /* Create file */
                    346:   sprintf(szString,"%s/hatari.cfg",szWorkingDir);
                    347:   ConfigFile = fopen(szString, "rb");
                    348:   if (ConfigFile!=NULL)
                    349:     return(TRUE);
                    350: 
                    351:   /* Whoops, error */
                    352:   return(FALSE);
                    353: }
                    354: 
                    355: 
                    356: /*-----------------------------------------------------------------------*/
                    357: /*
                    358:   Close configuration
                    359: */
                    360: void Configuration_CloseFile(void)
                    361: {
                    362:   fclose(ConfigFile);
                    363: }
                    364: 
                    365: 
                    366: /*-----------------------------------------------------------------------*/
                    367: /*
                    368:   Write entry to configuration file
                    369: */
                    370: void Configuration_WriteToFile(void *pData,int nBytes)
                    371: {
                    372:   fwrite(pData, 1, nBytes, ConfigFile);
                    373: }
                    374: 
                    375: 
                    376: /*-----------------------------------------------------------------------*/
                    377: /*
                    378:   Read entry from configuration file
                    379: */
                    380: void Configuration_ReadFromFile(void *pData,int nBytes)
                    381: {
                    382:   fread(pData, 1, nBytes, ConfigFile);
                    383: }

unix.superglobalmegacorp.com

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