view src/VisVim/Reg.cpp @ 16738:b52ea9c5f1db v8.1.1371

patch 8.1.1371: cannot recover from a swap file commit https://github.com/vim/vim/commit/99499b1c05f85f83876b828eea3f6e14f0f407b4 Author: Bram Moolenaar <Bram@vim.org> Date: Thu May 23 21:35:48 2019 +0200 patch 8.1.1371: cannot recover from a swap file Problem: Cannot recover from a swap file. Solution: Do not expand environment variables in the swap file name. Do not check the extension when we already know a file is a swap file. (Ken Takata, closes 4415, closes #4369)
author Bram Moolenaar <Bram@vim.org>
date Thu, 23 May 2019 21:45:07 +0200
parents 3fc0f57ecb91
children
line wrap: on
line source

#include "stdafx.h"

// Returns key for HKEY_CURRENT_USER\"Software"\Company\AppName
// creating it if it doesn't exist
// responsibility of the caller to call RegCloseKey() on the returned HKEY
//
HKEY GetAppKey (char* AppName)
{
	HKEY hAppKey = NULL;
	HKEY hSoftKey = NULL;
	if (RegOpenKeyEx (HKEY_CURRENT_USER, "Software", 0, KEY_WRITE | KEY_READ,
		&hSoftKey) == ERROR_SUCCESS)
	{
		DWORD Dummy;
		RegCreateKeyEx (hSoftKey, AppName, 0, REG_NONE,
			REG_OPTION_NON_VOLATILE, KEY_WRITE | KEY_READ, NULL,
			&hAppKey, &Dummy);
	}
	if (hSoftKey)
		RegCloseKey (hSoftKey);

	return hAppKey;
}

// Returns key for
// HKEY_CURRENT_USER\"Software"\RegistryKey\AppName\Section
// creating it if it doesn't exist.
// responsibility of the caller to call RegCloseKey () on the returned HKEY
//
HKEY GetSectionKey (HKEY hAppKey, LPCTSTR Section)
{
	HKEY hSectionKey = NULL;
	DWORD Dummy;
	RegCreateKeyEx (hAppKey, Section, 0, REG_NONE,
		REG_OPTION_NON_VOLATILE, KEY_WRITE|KEY_READ, NULL,
		&hSectionKey, &Dummy);
	return hSectionKey;
}

int GetRegistryInt (HKEY hSectionKey, LPCTSTR Entry, int Default)
{
	DWORD Value;
	DWORD Type;
	DWORD Count = sizeof (DWORD);
	if (RegQueryValueEx (hSectionKey, (LPTSTR) Entry, NULL, &Type,
			     (LPBYTE) &Value, &Count) == ERROR_SUCCESS)
		return Value;
	return Default;
}

bool WriteRegistryInt (HKEY hSectionKey, char* Entry, int nValue)
{
	return RegSetValueEx (hSectionKey, Entry, NULL, REG_DWORD,
		(LPBYTE) &nValue, sizeof (nValue)) == ERROR_SUCCESS;
}