ReactOS 0.4.16-dev-2491-g3dc6630
inifile.h
Go to the documentation of this file.
1/*
2 * FreeLoader
3 * Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19
20#pragma once
21
22#define INI_FILE_COMMENT_CHAR ';'
23
24#define TAG_INI_FILE 'FinI'
25#define TAG_INI_SECTION 'SinI'
26#define TAG_INI_SECTION_ITEM 'IinI'
27#define TAG_INI_NAME 'NinI'
28#define TAG_INI_VALUE 'VinI'
29
30// This structure describes a single .ini file item
31// The item format in the .ini file is:
32// Name=Value
33typedef struct
34{
39
40// This structure describes a .ini file section
41// The section format in the .ini file is:
42// [Section Name]
43// This structure has a list of section items with
44// one INI_SECTION_ITEM for each line in the section
45typedef struct
46{
50 LIST_ENTRY SectionItemList; // Contains PINI_SECTION_ITEM structures
52
57
58BOOLEAN IniParseFile(PCSTR IniFileData, ULONG IniFileSize);
59ULONG IniGetNextLineSize(PCSTR IniFileData, ULONG IniFileSize, ULONG CurrentOffset);
60ULONG IniGetNextLine(PCSTR IniFileData, ULONG IniFileSize, PCHAR Buffer, ULONG BufferSize, ULONG CurrentOffset);
61BOOLEAN IniIsLineEmpty(PCSTR TextLine, ULONG TextLength);
62BOOLEAN IniIsCommentLine(PCSTR TextLine, ULONG TextLength);
63BOOLEAN IniIsSectionName(PCSTR TextLine, ULONG TextLength);
64ULONG IniGetSectionNameSize(PCSTR SectionNameLine, ULONG LineLength);
65VOID IniExtractSectionName(PSTR SectionName, PCSTR SectionNameLine, ULONG LineLength);
66BOOLEAN IniIsSetting(PCSTR TextLine, ULONG TextLength);
67ULONG IniGetSettingNameSize(PCSTR SettingNameLine, ULONG LineLength);
68ULONG IniGetSettingValueSize(PCSTR SettingValueLine, ULONG LineLength);
69VOID IniExtractSettingName(PSTR SettingName, PCSTR SettingNameLine, ULONG LineLength);
70VOID IniExtractSettingValue(PSTR SettingValue, PCSTR SettingValueLine, ULONG LineLength);
71
73
74BOOLEAN IniOpenSection(PCSTR SectionName, ULONG_PTR* SectionId);
78BOOLEAN IniReadSettingByNumber(ULONG_PTR SectionId, ULONG SettingNumber, PCHAR SettingName, ULONG NameSize, PCHAR SettingValue, ULONG ValueSize);
80BOOLEAN IniAddSection(PCSTR SectionName, ULONG_PTR* SectionId);
81BOOLEAN IniAddSettingValueToSection(ULONG_PTR SectionId, PCSTR SettingName, PCSTR SettingValue);
82BOOLEAN IniModifySettingValue(ULONG_PTR SectionId, PCSTR SettingName, PCSTR SettingValue);
unsigned char BOOLEAN
Definition: actypes.h:127
Definition: bufpool.h:45
BOOLEAN IniAddSection(PCSTR SectionName, ULONG_PTR *SectionId)
Definition: inifile.c:187
ULONG IniGetSectionSettingValueSize(ULONG_PTR SectionId, ULONG SettingIndex)
Definition: inifile.c:108
ULONG IniFileSectionCount
Definition: parse.c:27
VOID IniExtractSettingValue(PSTR SettingValue, PCSTR SettingValueLine, ULONG LineLength)
Definition: parse.c:459
ULONG IniGetNumSectionItems(ULONG_PTR SectionId)
Definition: inifile.c:60
BOOLEAN IniAddSettingValueToSection(ULONG_PTR SectionId, PCSTR SettingName, PCSTR SettingValue)
Definition: inifile.c:260
BOOLEAN IniFileInitialize(VOID)
Definition: ini_init.c:25
ULONG IniGetSectionNameSize(PCSTR SectionNameLine, ULONG LineLength)
Definition: parse.c:286
VOID IniExtractSectionName(PSTR SectionName, PCSTR SectionNameLine, ULONG LineLength)
Definition: parse.c:315
BOOLEAN IniModifySettingValue(ULONG_PTR SectionId, PCSTR SettingName, PCSTR SettingValue)
Definition: inifile.c:301
ULONG IniGetSettingValueSize(PCSTR SettingValueLine, ULONG LineLength)
Definition: parse.c:384
ULONG IniGetSectionSettingNameSize(ULONG_PTR SectionId, ULONG SettingIndex)
Definition: inifile.c:95
BOOLEAN IniIsLineEmpty(PCSTR TextLine, ULONG TextLength)
Definition: parse.c:233
ULONG IniGetSettingNameSize(PCSTR SettingNameLine, ULONG LineLength)
Definition: parse.c:359
BOOLEAN IniReadSettingByNumber(ULONG_PTR SectionId, ULONG SettingNumber, PCHAR SettingName, ULONG NameSize, PCHAR SettingValue, ULONG ValueSize)
Definition: inifile.c:121
struct INI_SECTION * PINI_SECTION
ULONG IniFileSettingCount
Definition: parse.c:28
LIST_ENTRY IniFileSectionListHead
Definition: parse.c:25
BOOLEAN IniReadSettingByName(ULONG_PTR SectionId, PCSTR SettingName, PCHAR Buffer, ULONG BufferSize)
Definition: inifile.c:154
BOOLEAN IniOpenSection(PCSTR SectionName, ULONG_PTR *SectionId)
Definition: inifile.c:30
BOOLEAN IniIsSectionName(PCSTR TextLine, ULONG TextLength)
Definition: parse.c:268
ULONG IniGetNextLine(PCSTR IniFileData, ULONG IniFileSize, PCHAR Buffer, ULONG BufferSize, ULONG CurrentOffset)
Definition: parse.c:202
PLIST_ENTRY IniGetFileSectionListHead(VOID)
Definition: inifile.c:25
struct INI_SECTION_ITEM * PINI_SECTION_ITEM
VOID IniExtractSettingName(PSTR SettingName, PCSTR SettingNameLine, ULONG LineLength)
Definition: parse.c:423
BOOLEAN IniIsCommentLine(PCSTR TextLine, ULONG TextLength)
Definition: parse.c:250
VOID IniCleanup(VOID)
Definition: inifile.c:243
BOOLEAN IniParseFile(PCSTR IniFileData, ULONG IniFileSize)
Definition: parse.c:31
ULONG IniGetNextLineSize(PCSTR IniFileData, ULONG IniFileSize, ULONG CurrentOffset)
Definition: parse.c:181
BOOLEAN IniIsSetting(PCSTR TextLine, ULONG TextLength)
Definition: parse.c:346
BOOLEAN IniFileSectionInitialized
Definition: parse.c:26
LIST_ENTRY ListEntry
Definition: inifile.h:35
PSTR ItemValue
Definition: inifile.h:37
ULONG SectionItemCount
Definition: inifile.h:49
LIST_ENTRY ListEntry
Definition: inifile.h:47
PSTR SectionName
Definition: inifile.h:48
LIST_ENTRY SectionItemList
Definition: inifile.h:50
Definition: typedefs.h:120
char * PSTR
Definition: typedefs.h:51
const char * PCSTR
Definition: typedefs.h:52
uint32_t ULONG_PTR
Definition: typedefs.h:65
uint32_t ULONG
Definition: typedefs.h:59
char * PCHAR
Definition: typedefs.h:51
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
Definition: wdfmemory.h:254
_In_ WDFUSBINTERFACE _In_ UCHAR SettingIndex
Definition: wdfusb.h:2303