aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.Engine/Misc/IniFile.cs
blob: e31583fd87c58461d8500a026a1939c26954fd7f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System.Runtime.InteropServices;
using System.Text;

namespace ShiftOS.Engine.Misc
{
	/// <summary>
	///     Create a New INI file to store or load data
	/// </summary>
	public class IniFile
	{
		readonly string _path;

		public IniFile(string iniPath) => _path = iniPath;

		[DllImport("kernel32")]
		static extern long WritePrivateProfileString(
			string section,
			string key,
			string val,
			string filePath);

		[DllImport("kernel32")]
		static extern int GetPrivateProfileString(
			string section,
			string key,
			string def,
			StringBuilder retVal,
			int size,
			string filePath);

		public void WriteValue(string section, string key, string value)
		{
			WritePrivateProfileString(section, key, value, _path);
		}

		public string ReadValue(string section, string key)
		{
			var temp = new StringBuilder(255);
			GetPrivateProfileString(
				section,
				key,
				"",
				temp,
				255,
				_path);

			return temp.ToString();
		}
	}
}