2002-11-13 18:25:18 +00:00
|
|
|
/*
|
2017-05-23 11:39:12 +00:00
|
|
|
* PROJECT: ReactOS Setup Library
|
|
|
|
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
|
|
|
|
* PURPOSE: INI file parser that caches contents of INI file in memory.
|
|
|
|
* COPYRIGHT: Copyright 2002-2018 Royce Mitchell III
|
2002-11-13 18:25:18 +00:00
|
|
|
*/
|
|
|
|
|
2010-02-26 11:43:19 +00:00
|
|
|
#pragma once
|
2002-11-13 18:25:18 +00:00
|
|
|
|
|
|
|
typedef struct _INICACHEKEY
|
|
|
|
{
|
2014-05-12 14:17:37 +00:00
|
|
|
PWCHAR Name;
|
|
|
|
PWCHAR Data;
|
2002-11-13 18:25:18 +00:00
|
|
|
|
2014-05-12 14:17:37 +00:00
|
|
|
struct _INICACHEKEY *Next;
|
|
|
|
struct _INICACHEKEY *Prev;
|
2002-11-13 18:25:18 +00:00
|
|
|
} INICACHEKEY, *PINICACHEKEY;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct _INICACHESECTION
|
|
|
|
{
|
2014-05-12 14:17:37 +00:00
|
|
|
PWCHAR Name;
|
2002-11-13 18:25:18 +00:00
|
|
|
|
2014-05-12 14:17:37 +00:00
|
|
|
PINICACHEKEY FirstKey;
|
|
|
|
PINICACHEKEY LastKey;
|
2002-11-13 18:25:18 +00:00
|
|
|
|
2014-05-12 14:17:37 +00:00
|
|
|
struct _INICACHESECTION *Next;
|
|
|
|
struct _INICACHESECTION *Prev;
|
2002-11-13 18:25:18 +00:00
|
|
|
} INICACHESECTION, *PINICACHESECTION;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct _INICACHE
|
|
|
|
{
|
2014-05-12 14:17:37 +00:00
|
|
|
PINICACHESECTION FirstSection;
|
|
|
|
PINICACHESECTION LastSection;
|
2002-11-13 18:25:18 +00:00
|
|
|
} INICACHE, *PINICACHE;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct _PINICACHEITERATOR
|
|
|
|
{
|
2014-05-12 14:17:37 +00:00
|
|
|
PINICACHESECTION Section;
|
|
|
|
PINICACHEKEY Key;
|
2002-11-13 18:25:18 +00:00
|
|
|
} INICACHEITERATOR, *PINICACHEITERATOR;
|
|
|
|
|
|
|
|
|
2003-01-17 13:18:15 +00:00
|
|
|
typedef enum
|
|
|
|
{
|
2014-05-12 14:17:37 +00:00
|
|
|
INSERT_FIRST,
|
|
|
|
INSERT_BEFORE,
|
|
|
|
INSERT_AFTER,
|
|
|
|
INSERT_LAST
|
2016-11-05 14:55:55 +00:00
|
|
|
} INSERTION_TYPE;
|
2003-01-17 13:18:15 +00:00
|
|
|
|
2002-11-13 18:25:18 +00:00
|
|
|
/* FUNCTIONS ****************************************************************/
|
|
|
|
|
2017-05-21 23:48:09 +00:00
|
|
|
NTSTATUS
|
|
|
|
IniCacheLoadFromMemory(
|
|
|
|
PINICACHE *Cache,
|
|
|
|
PCHAR FileBuffer,
|
|
|
|
ULONG FileLength,
|
|
|
|
BOOLEAN String);
|
|
|
|
|
2017-05-31 00:18:13 +00:00
|
|
|
NTSTATUS
|
|
|
|
IniCacheLoadByHandle(
|
|
|
|
PINICACHE *Cache,
|
|
|
|
HANDLE FileHandle,
|
|
|
|
BOOLEAN String);
|
|
|
|
|
2002-11-13 18:25:18 +00:00
|
|
|
NTSTATUS
|
2014-05-12 14:17:37 +00:00
|
|
|
IniCacheLoad(
|
|
|
|
PINICACHE *Cache,
|
2015-12-30 18:26:42 +00:00
|
|
|
PWCHAR FileName,
|
2014-05-12 14:17:37 +00:00
|
|
|
BOOLEAN String);
|
2002-11-13 18:25:18 +00:00
|
|
|
|
|
|
|
VOID
|
2014-05-12 14:17:37 +00:00
|
|
|
IniCacheDestroy(
|
|
|
|
PINICACHE Cache);
|
2002-11-13 18:25:18 +00:00
|
|
|
|
|
|
|
PINICACHESECTION
|
2014-05-12 14:17:37 +00:00
|
|
|
IniCacheGetSection(
|
|
|
|
PINICACHE Cache,
|
|
|
|
PWCHAR Name);
|
2002-11-13 18:25:18 +00:00
|
|
|
|
|
|
|
NTSTATUS
|
2014-05-12 14:17:37 +00:00
|
|
|
IniCacheGetKey(
|
|
|
|
PINICACHESECTION Section,
|
|
|
|
PWCHAR KeyName,
|
|
|
|
PWCHAR *KeyData);
|
2002-11-13 18:25:18 +00:00
|
|
|
|
|
|
|
PINICACHEITERATOR
|
2014-05-12 14:17:37 +00:00
|
|
|
IniCacheFindFirstValue(
|
|
|
|
PINICACHESECTION Section,
|
|
|
|
PWCHAR *KeyName,
|
|
|
|
PWCHAR *KeyData);
|
2002-11-13 18:25:18 +00:00
|
|
|
|
|
|
|
BOOLEAN
|
2014-05-12 14:17:37 +00:00
|
|
|
IniCacheFindNextValue(
|
|
|
|
PINICACHEITERATOR Iterator,
|
|
|
|
PWCHAR *KeyName,
|
|
|
|
PWCHAR *KeyData);
|
2002-11-13 18:25:18 +00:00
|
|
|
|
|
|
|
VOID
|
2014-05-12 14:17:37 +00:00
|
|
|
IniCacheFindClose(
|
|
|
|
PINICACHEITERATOR Iterator);
|
2002-11-13 18:25:18 +00:00
|
|
|
|
|
|
|
|
2003-01-17 13:18:15 +00:00
|
|
|
PINICACHEKEY
|
2014-05-12 14:17:37 +00:00
|
|
|
IniCacheInsertKey(
|
|
|
|
PINICACHESECTION Section,
|
|
|
|
PINICACHEKEY AnchorKey,
|
2016-11-05 14:55:55 +00:00
|
|
|
INSERTION_TYPE InsertionType,
|
2014-05-12 14:17:37 +00:00
|
|
|
PWCHAR Name,
|
|
|
|
PWCHAR Data);
|
2003-01-17 13:18:15 +00:00
|
|
|
|
|
|
|
PINICACHE
|
|
|
|
IniCacheCreate(VOID);
|
|
|
|
|
2017-05-31 00:18:13 +00:00
|
|
|
NTSTATUS
|
|
|
|
IniCacheSaveByHandle(
|
|
|
|
PINICACHE Cache,
|
|
|
|
HANDLE FileHandle);
|
|
|
|
|
2003-01-17 13:18:15 +00:00
|
|
|
NTSTATUS
|
2014-05-12 14:17:37 +00:00
|
|
|
IniCacheSave(
|
|
|
|
PINICACHE Cache,
|
|
|
|
PWCHAR FileName);
|
2003-01-17 13:18:15 +00:00
|
|
|
|
|
|
|
PINICACHESECTION
|
2014-05-12 14:17:37 +00:00
|
|
|
IniCacheAppendSection(
|
|
|
|
PINICACHE Cache,
|
|
|
|
PWCHAR Name);
|
2003-01-17 13:18:15 +00:00
|
|
|
|
2002-11-13 18:25:18 +00:00
|
|
|
/* EOF */
|