home *** CD-ROM | disk | FTP | other *** search
- /*++
-
- 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;
- }
-
-
-