|
|
/*++
Copyright (c) 1997 Microsoft Corporation
Module Name:
savecfg.c
Abstract:
This source file implements code to save the Win9x environment to a settings file. It writes a copy of all screen saver settings on a per-user basis.
Author:
Jim Schmidt (jimschm) 11-Apr-1997
Revision History:
--*/
#include "pch.h"
BOOL SaveDatFileKeyAndVal ( IN LPCSTR Key, IN LPCSTR Val ) { //
// This function is a wrapper to simplify writing to our settings file
//
return WritePrivateProfileString (g_User, Key, Val, g_SettingsFile); }
BOOL CopyRegValueToDatFile ( IN HKEY RegKey, IN LPCSTR ValueName ) { LPCSTR DataPtr; DWORD rc;
//
// Obtain registry value data and copy it to our settings file
//
DataPtr = GetRegValueString (RegKey, ValueName); if (DataPtr) { return SaveDatFileKeyAndVal (ValueName, DataPtr); }
// If not found or wrong data type, don't sweat it
rc = GetLastError(); return rc == ERROR_FILE_NOT_FOUND || rc == ERROR_SUCCESS; }
#define WIN9X_MAX_SECTION 32768
BOOL SaveControlIniSection ( IN LPCSTR ControlIniSection, IN LPCSTR ScreenSaverName ) { LPSTR Buffer; LPSTR p; CHAR NewKey[MAX_PATH]; BOOL b = TRUE; CHAR DataBuf[MAX_PATH];
//
// This function copies an entire section in control.ini to our
// settings file. It may not be necessary because control.ini will
// still be around, but this guarantees if someone modifies
// control.ini later, our migration will not break.
//
//
// Allocate a generous buffer to hold all key names
//
Buffer = HeapAlloc (g_hHeap, 0, WIN9X_MAX_SECTION); if (!Buffer) { return FALSE; }
//
// Retrieve the key names
//
GetPrivateProfileString ( ControlIniSection, NULL, S_EMPTY, Buffer, WIN9X_MAX_SECTION, S_CONTROL_INI );
//
// For each key name, copy it to our settings file
//
p = Buffer;
while (*p) { if (CreateScreenSaverParamKey (ScreenSaverName, p, NewKey)) { GetPrivateProfileString ( ControlIniSection, p, S_EMPTY, DataBuf, MAX_PATH, S_CONTROL_INI );
if (!SaveDatFileKeyAndVal (NewKey, DataBuf)) { b = FALSE; break; } }
p = _mbschr (p, 0); p++; }
//
// Cleanup
//
HeapFree (g_hHeap, 0, Buffer); return b; }
|