From 909fd95f5d79f931136b5221b4d37b19b4e97b4e Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 15 Sep 2012 14:31:50 +0000 Subject: [PATCH] [INFLIB] Remove inflib because it has been replaced by newinflib. svn path=/trunk/; revision=57303 --- reactos/lib/inflib/CMakeLists.txt | 15 - reactos/lib/inflib/README.txt | 14 - reactos/lib/inflib/builddep.h | 75 --- reactos/lib/inflib/infcommon.h | 16 - reactos/lib/inflib/infcore.c | 831 ------------------------------ reactos/lib/inflib/infget.c | 515 ------------------ reactos/lib/inflib/infhost.h | 78 --- reactos/lib/inflib/infhostgen.c | 204 -------- reactos/lib/inflib/infhostget.c | 249 --------- reactos/lib/inflib/infhostput.c | 114 ---- reactos/lib/inflib/inflib.h | 15 - reactos/lib/inflib/infpriv.h | 144 ------ reactos/lib/inflib/infput.c | 264 ---------- reactos/lib/inflib/infros.h | 60 --- reactos/lib/inflib/infrosgen.c | 267 ---------- reactos/lib/inflib/infrosget.c | 140 ----- reactos/lib/inflib/infrosput.c | 132 ----- 17 files changed, 3133 deletions(-) delete mode 100644 reactos/lib/inflib/CMakeLists.txt delete mode 100644 reactos/lib/inflib/README.txt delete mode 100644 reactos/lib/inflib/builddep.h delete mode 100644 reactos/lib/inflib/infcommon.h delete mode 100644 reactos/lib/inflib/infcore.c delete mode 100644 reactos/lib/inflib/infget.c delete mode 100644 reactos/lib/inflib/infhost.h delete mode 100644 reactos/lib/inflib/infhostgen.c delete mode 100644 reactos/lib/inflib/infhostget.c delete mode 100644 reactos/lib/inflib/infhostput.c delete mode 100644 reactos/lib/inflib/inflib.h delete mode 100644 reactos/lib/inflib/infpriv.h delete mode 100644 reactos/lib/inflib/infput.c delete mode 100644 reactos/lib/inflib/infros.h delete mode 100644 reactos/lib/inflib/infrosgen.c delete mode 100644 reactos/lib/inflib/infrosget.c delete mode 100644 reactos/lib/inflib/infrosput.c diff --git a/reactos/lib/inflib/CMakeLists.txt b/reactos/lib/inflib/CMakeLists.txt deleted file mode 100644 index bd629b788a9..00000000000 --- a/reactos/lib/inflib/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ - -set(GLOBAL_FILES infcore.c infget.c infput.c) - -if(CMAKE_CROSSCOMPILING) - file(GLOB_RECURSE SOURCE "infros*.c") - add_library(inflib ${GLOBAL_FILES} ${SOURCE}) - add_dependencies(inflib psdk) -else() - file(GLOB_RECURSE SOURCE "infhost*.c") - add_definitions(-D__NO_CTYPE_INLINES -DINFLIB_HOST) - if(NOT MSVC) - add_definitions(-Wpointer-arith -Wconversion -Wstrict-prototypes -Wmissing-prototypes) - endif() - add_library(inflibhost ${GLOBAL_FILES} ${SOURCE}) -endif() diff --git a/reactos/lib/inflib/README.txt b/reactos/lib/inflib/README.txt deleted file mode 100644 index e34b1928f86..00000000000 --- a/reactos/lib/inflib/README.txt +++ /dev/null @@ -1,14 +0,0 @@ -Routines to handle .inf files. - -This library is used to share .inf handling code between build tools and -ReactOS code. Two versions are built, "inflib_host" (for use by build tools) -and "inflib" (for use by ReactOS code). Both depend on the same core source, -with a wrapper for the appropriate interface. -Most of the differences between the host and the ReactOS environment are -abstracted away in builddep.h. Of particular note is that the host version -uses Ansi characters while the ReactOS version uses Unicode. So, the core -source uses TCHARs. builddep.h depends on a preprocessor variable INFLIB_HOST -which is defined when building the host version (inflib.mak) but not defined -when building the ReactOS version (inflib.xml). -The wrappers have "host" or "ros" in their filename. The library interface is -"infhost.h" for the host version, "infros.h" for the ReactOS version. diff --git a/reactos/lib/inflib/builddep.h b/reactos/lib/inflib/builddep.h deleted file mode 100644 index d123ab313b6..00000000000 --- a/reactos/lib/inflib/builddep.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * PROJECT: .inf file parser - * LICENSE: GPL - See COPYING in the top level directory - * COPYRIGHT: Copyright 2005 Ge van Geldorp - */ - -#ifdef INFLIB_HOST - -/* Definitions native to the host on which we're building */ - -#include - -#include -#include -#include -#include - -#define FREE(Area) free(Area) -#define MALLOC(Size) malloc((size_t)(Size)) -#define ZEROMEMORY(Area, Size) memset((Area), '\0', (size_t)(Size)) -#define MEMCPY(Dest, Src, Size) memcpy((Dest), (Src), (size_t)(Size)) - -#define INF_STATUS_SUCCESS 0 -#define INF_STATUS_NO_MEMORY ENOMEM -#define INF_STATUS_INVALID_PARAMETER EINVAL -#define INF_STATUS_NOT_FOUND ENOENT -#define INF_STATUS_BUFFER_OVERFLOW E2BIG -#define INF_SUCCESS(x) (0 == (x)) - -typedef char TCHAR, *PTCHAR, *PTSTR; -typedef const TCHAR *PCTSTR; - -#define _T(x) x -#define _tcsicmp strcasecmp -#define _tcslen strlen -#define _tcscpy strcpy -#define _tcstoul strtoul -#define _tcstol strtol -#define STRFMT "%s" - -#ifdef _MSC_VER -#define strcasecmp _stricmp -#endif - -#else /* ! defined(INFLIB_HOST) */ - -/* ReactOS definitions */ - -#define UNICODE -#define _UNICODE -#define WIN32_NO_STATUS -#include -#define NTOS_MODE_USER -#include -#include - -extern PVOID InfpHeap; - -#define FREE(Area) RtlFreeHeap(InfpHeap, 0, (Area)) -#define MALLOC(Size) RtlAllocateHeap(InfpHeap, 0, (Size)) -#define ZEROMEMORY(Area, Size) RtlZeroMemory((Area), (Size)) -#define MEMCPY(Dest, Src, Size) RtlCopyMemory((Dest), (Src), (Size)) - -#define INF_STATUS_SUCCESS STATUS_SUCCESS -#define INF_STATUS_NO_MEMORY STATUS_NO_MEMORY -#define INF_STATUS_INVALID_PARAMETER STATUS_INVALID_PARAMETER -#define INF_STATUS_NOT_FOUND STATUS_NOT_FOUND -#define INF_STATUS_BUFFER_OVERFLOW STATUS_BUFFER_OVERFLOW -#define INF_SUCCESS(x) (0 <= (x)) - -#define STRFMT "%S" - -#endif /* INFLIB_HOST */ - -/* EOF */ diff --git a/reactos/lib/inflib/infcommon.h b/reactos/lib/inflib/infcommon.h deleted file mode 100644 index a80f2029078..00000000000 --- a/reactos/lib/inflib/infcommon.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * PROJECT: .inf file parser - * LICENSE: GPL - See COPYING in the top level directory - * PROGRAMMER: Royce Mitchell III - * Eric Kohl - * Ge van Geldorp - */ - -#pragma once - -#define MAX_INF_STRING_LENGTH 512 - -typedef void *HINF, **PHINF; -typedef struct _INFCONTEXT *PINFCONTEXT; - -/* EOF */ diff --git a/reactos/lib/inflib/infcore.c b/reactos/lib/inflib/infcore.c deleted file mode 100644 index 8bdffb76a47..00000000000 --- a/reactos/lib/inflib/infcore.c +++ /dev/null @@ -1,831 +0,0 @@ -/* - * PROJECT: .inf file parser - * LICENSE: GPL - See COPYING in the top level directory - * PROGRAMMER: Royce Mitchell III - * Eric Kohl - * Ge van Geldorp - */ - -/* INCLUDES *****************************************************************/ - -#include "inflib.h" - -#define NDEBUG -#include - -#define CONTROL_Z '\x1a' -#define MAX_SECTION_NAME_LEN 255 -#define MAX_FIELD_LEN 511 /* larger fields get silently truncated */ -/* actual string limit is MAX_INF_STRING_LENGTH+1 (plus terminating null) under Windows */ -#define MAX_STRING_LEN (MAX_INF_STRING_LENGTH+1) - - -/* parser definitions */ - -enum parser_state -{ - LINE_START, /* at beginning of a line */ - SECTION_NAME, /* parsing a section name */ - KEY_NAME, /* parsing a key name */ - VALUE_NAME, /* parsing a value name */ - EOL_BACKSLASH, /* backslash at end of line */ - QUOTES, /* inside quotes */ - LEADING_SPACES, /* leading spaces */ - TRAILING_SPACES, /* trailing spaces */ - COMMENT, /* inside a comment */ - NB_PARSER_STATES -}; - -struct parser -{ - const CHAR *start; /* start position of item being parsed */ - const CHAR *end; /* end of buffer */ - PINFCACHE file; /* file being built */ - enum parser_state state; /* current parser state */ - enum parser_state stack[4]; /* state stack */ - int stack_pos; /* current pos in stack */ - - PINFCACHESECTION cur_section; /* pointer to the section being parsed*/ - PINFCACHELINE line; /* current line */ - unsigned int line_pos; /* current line position in file */ - INFSTATUS error; /* error code */ - unsigned int token_len; /* current token len */ - TCHAR token[MAX_FIELD_LEN+1]; /* current token */ -}; - -typedef const CHAR * (*parser_state_func)( struct parser *parser, const CHAR *pos ); - -/* parser state machine functions */ -static const CHAR *line_start_state( struct parser *parser, const CHAR *pos ); -static const CHAR *section_name_state( struct parser *parser, const CHAR *pos ); -static const CHAR *key_name_state( struct parser *parser, const CHAR *pos ); -static const CHAR *value_name_state( struct parser *parser, const CHAR *pos ); -static const CHAR *eol_backslash_state( struct parser *parser, const CHAR *pos ); -static const CHAR *quotes_state( struct parser *parser, const CHAR *pos ); -static const CHAR *leading_spaces_state( struct parser *parser, const CHAR *pos ); -static const CHAR *trailing_spaces_state( struct parser *parser, const CHAR *pos ); -static const CHAR *comment_state( struct parser *parser, const CHAR *pos ); - -static const parser_state_func parser_funcs[NB_PARSER_STATES] = -{ - line_start_state, /* LINE_START */ - section_name_state, /* SECTION_NAME */ - key_name_state, /* KEY_NAME */ - value_name_state, /* VALUE_NAME */ - eol_backslash_state, /* EOL_BACKSLASH */ - quotes_state, /* QUOTES */ - leading_spaces_state, /* LEADING_SPACES */ - trailing_spaces_state, /* TRAILING_SPACES */ - comment_state /* COMMENT */ -}; - - -/* PRIVATE FUNCTIONS ********************************************************/ - -static PINFCACHELINE -InfpFreeLine (PINFCACHELINE Line) -{ - PINFCACHELINE Next; - PINFCACHEFIELD Field; - - if (Line == NULL) - { - return NULL; - } - - Next = Line->Next; - if (Line->Key != NULL) - { - FREE (Line->Key); - Line->Key = NULL; - } - - /* Remove data fields */ - while (Line->FirstField != NULL) - { - Field = Line->FirstField->Next; - FREE (Line->FirstField); - Line->FirstField = Field; - } - Line->LastField = NULL; - - FREE (Line); - - return Next; -} - - -PINFCACHESECTION -InfpFreeSection (PINFCACHESECTION Section) -{ - PINFCACHESECTION Next; - - if (Section == NULL) - { - return NULL; - } - - /* Release all keys */ - Next = Section->Next; - while (Section->FirstLine != NULL) - { - Section->FirstLine = InfpFreeLine (Section->FirstLine); - } - Section->LastLine = NULL; - - FREE (Section); - - return Next; -} - - -PINFCACHESECTION -InfpFindSection(PINFCACHE Cache, - PCTSTR Name) -{ - PINFCACHESECTION Section = NULL; - - if (Cache == NULL || Name == NULL) - { - return NULL; - } - - /* iterate through list of sections */ - Section = Cache->FirstSection; - while (Section != NULL) - { - if (_tcsicmp (Section->Name, Name) == 0) - { - return Section; - } - - /* get the next section*/ - Section = Section->Next; - } - - return NULL; -} - - -PINFCACHESECTION -InfpAddSection(PINFCACHE Cache, - PCTSTR Name) -{ - PINFCACHESECTION Section = NULL; - ULONG Size; - - if (Cache == NULL || Name == NULL) - { - DPRINT("Invalid parameter\n"); - return NULL; - } - - /* Allocate and initialize the new section */ - Size = (ULONG)FIELD_OFFSET(INFCACHESECTION, - Name[_tcslen (Name) + 1]); - Section = (PINFCACHESECTION)MALLOC (Size); - if (Section == NULL) - { - DPRINT("MALLOC() failed\n"); - return NULL; - } - ZEROMEMORY (Section, - Size); - - /* Copy section name */ - _tcscpy (Section->Name, Name); - - /* Append section */ - if (Cache->FirstSection == NULL) - { - Cache->FirstSection = Section; - Cache->LastSection = Section; - } - else - { - Cache->LastSection->Next = Section; - Section->Prev = Cache->LastSection; - Cache->LastSection = Section; - } - - return Section; -} - - -PINFCACHELINE -InfpAddLine(PINFCACHESECTION Section) -{ - PINFCACHELINE Line; - - if (Section == NULL) - { - DPRINT("Invalid parameter\n"); - return NULL; - } - - Line = (PINFCACHELINE)MALLOC (sizeof(INFCACHELINE)); - if (Line == NULL) - { - DPRINT("MALLOC() failed\n"); - return NULL; - } - ZEROMEMORY(Line, - sizeof(INFCACHELINE)); - - /* Append line */ - if (Section->FirstLine == NULL) - { - Section->FirstLine = Line; - Section->LastLine = Line; - } - else - { - Section->LastLine->Next = Line; - Line->Prev = Section->LastLine; - Section->LastLine = Line; - } - Section->LineCount++; - - return Line; -} - - -PVOID -InfpAddKeyToLine(PINFCACHELINE Line, - PCTSTR Key) -{ - if (Line == NULL) - { - DPRINT1("Invalid Line\n"); - return NULL; - } - - if (Line->Key != NULL) - { - DPRINT1("Line already has a key\n"); - return NULL; - } - - Line->Key = (PTCHAR)MALLOC((_tcslen(Key) + 1) * sizeof(TCHAR)); - if (Line->Key == NULL) - { - DPRINT1("MALLOC() failed\n"); - return NULL; - } - - _tcscpy(Line->Key, Key); - - return (PVOID)Line->Key; -} - - -PVOID -InfpAddFieldToLine(PINFCACHELINE Line, - PCTSTR Data) -{ - PINFCACHEFIELD Field; - ULONG Size; - - Size = (ULONG)FIELD_OFFSET(INFCACHEFIELD, - Data[_tcslen(Data) + 1]); - Field = (PINFCACHEFIELD)MALLOC(Size); - if (Field == NULL) - { - DPRINT1("MALLOC() failed\n"); - return NULL; - } - ZEROMEMORY (Field, - Size); - _tcscpy (Field->Data, Data); - - /* Append key */ - if (Line->FirstField == NULL) - { - Line->FirstField = Field; - Line->LastField = Field; - } - else - { - Line->LastField->Next = Field; - Field->Prev = Line->LastField; - Line->LastField = Field; - } - Line->FieldCount++; - - return (PVOID)Field; -} - - -PINFCACHELINE -InfpFindKeyLine(PINFCACHESECTION Section, - PCTSTR Key) -{ - PINFCACHELINE Line; - - Line = Section->FirstLine; - while (Line != NULL) - { - if (Line->Key != NULL && _tcsicmp (Line->Key, Key) == 0) - { - return Line; - } - - Line = Line->Next; - } - - return NULL; -} - - -/* push the current state on the parser stack */ -__inline static void push_state( struct parser *parser, enum parser_state state ) -{ -// assert( parser->stack_pos < sizeof(parser->stack)/sizeof(parser->stack[0]) ); - parser->stack[parser->stack_pos++] = state; -} - - -/* pop the current state */ -__inline static void pop_state( struct parser *parser ) -{ -// assert( parser->stack_pos ); - parser->state = parser->stack[--parser->stack_pos]; -} - - -/* set the parser state and return the previous one */ -__inline static enum parser_state set_state( struct parser *parser, enum parser_state state ) -{ - enum parser_state ret = parser->state; - parser->state = state; - return ret; -} - - -/* check if the pointer points to an end of file */ -__inline static int is_eof( struct parser *parser, const CHAR *ptr ) -{ - return (ptr >= parser->end || *ptr == CONTROL_Z); -} - - -/* check if the pointer points to an end of line */ -__inline static int is_eol( struct parser *parser, const CHAR *ptr ) -{ - return (ptr >= parser->end || - *ptr == CONTROL_Z || - *ptr == '\n' || - (*ptr == '\r' && *(ptr + 1) == '\n')); -} - - -/* push data from current token start up to pos into the current token */ -static int push_token( struct parser *parser, const CHAR *pos ) -{ - UINT len = (UINT)(pos - parser->start); - const CHAR *src = parser->start; - TCHAR *dst = parser->token + parser->token_len; - - if (len > MAX_FIELD_LEN - parser->token_len) - len = MAX_FIELD_LEN - parser->token_len; - - parser->token_len += len; - for ( ; len > 0; len--, dst++, src++) - { - if (*src) - { - *dst = *src; - } - else - { - *dst = _T(' '); - } - } - - *dst = 0; - parser->start = pos; - - return 0; -} - - - -/* add a section with the current token as name */ -static PVOID add_section_from_token( struct parser *parser ) -{ - PINFCACHESECTION Section; - - if (parser->token_len > MAX_SECTION_NAME_LEN) - { - parser->error = INF_STATUS_SECTION_NAME_TOO_LONG; - return NULL; - } - - Section = InfpFindSection(parser->file, - parser->token); - if (Section == NULL) - { - /* need to create a new one */ - Section= InfpAddSection(parser->file, - parser->token); - if (Section == NULL) - { - parser->error = INF_STATUS_NOT_ENOUGH_MEMORY; - return NULL; - } - } - - parser->token_len = 0; - parser->cur_section = Section; - - return (PVOID)Section; -} - - -/* add a field containing the current token to the current line */ -static struct field *add_field_from_token( struct parser *parser, int is_key ) -{ - PVOID field; - - if (!parser->line) /* need to start a new line */ - { - if (parser->cur_section == NULL) /* got a line before the first section */ - { - parser->error = INF_STATUS_WRONG_INF_STYLE; - return NULL; - } - - parser->line = InfpAddLine(parser->cur_section); - if (parser->line == NULL) - goto error; - } - else - { -// assert(!is_key); - } - - if (is_key) - { - field = InfpAddKeyToLine(parser->line, parser->token); - } - else - { - field = InfpAddFieldToLine(parser->line, parser->token); - } - - if (field != NULL) - { - parser->token_len = 0; - return field; - } - -error: - parser->error = INF_STATUS_NOT_ENOUGH_MEMORY; - return NULL; -} - - -/* close the current line and prepare for parsing a new one */ -static void close_current_line( struct parser *parser ) -{ - parser->line = NULL; -} - - - -/* handler for parser LINE_START state */ -static const CHAR *line_start_state( struct parser *parser, const CHAR *pos ) -{ - const CHAR *p; - - for (p = pos; !is_eof( parser, p ); p++) - { - switch(*p) - { - case '\r': - continue; - - case '\n': - parser->line_pos++; - close_current_line( parser ); - break; - - case ';': - push_state( parser, LINE_START ); - set_state( parser, COMMENT ); - return p + 1; - - case '[': - parser->start = p + 1; - set_state( parser, SECTION_NAME ); - return p + 1; - - default: - if (!isspace(*p)) - { - parser->start = p; - set_state( parser, KEY_NAME ); - return p; - } - break; - } - } - close_current_line( parser ); - return NULL; -} - - -/* handler for parser SECTION_NAME state */ -static const CHAR *section_name_state( struct parser *parser, const CHAR *pos ) -{ - const CHAR *p; - - for (p = pos; !is_eol( parser, p ); p++) - { - if (*p == ']') - { - push_token( parser, p ); - if (add_section_from_token( parser ) == NULL) - return NULL; - push_state( parser, LINE_START ); - set_state( parser, COMMENT ); /* ignore everything else on the line */ - return p + 1; - } - } - parser->error = INF_STATUS_BAD_SECTION_NAME_LINE; /* unfinished section name */ - return NULL; -} - - -/* handler for parser KEY_NAME state */ -static const CHAR *key_name_state( struct parser *parser, const CHAR *pos ) -{ - const CHAR *p, *token_end = parser->start; - - for (p = pos; !is_eol( parser, p ); p++) - { - if (*p == ',') break; - switch(*p) - { - - case '=': - push_token( parser, token_end ); - if (!add_field_from_token( parser, 1 )) return NULL; - parser->start = p + 1; - push_state( parser, VALUE_NAME ); - set_state( parser, LEADING_SPACES ); - return p + 1; - case ';': - push_token( parser, token_end ); - if (!add_field_from_token( parser, 0 )) return NULL; - push_state( parser, LINE_START ); - set_state( parser, COMMENT ); - return p + 1; - case '"': - push_token( parser, token_end ); - parser->start = p + 1; - push_state( parser, KEY_NAME ); - set_state( parser, QUOTES ); - return p + 1; - case '\\': - push_token( parser, token_end ); - parser->start = p; - push_state( parser, KEY_NAME ); - set_state( parser, EOL_BACKSLASH ); - return p; - default: - if (!isspace(*p)) token_end = p + 1; - else - { - push_token( parser, p ); - push_state( parser, KEY_NAME ); - set_state( parser, TRAILING_SPACES ); - return p; - } - break; - } - } - push_token( parser, token_end ); - set_state( parser, VALUE_NAME ); - return p; -} - - -/* handler for parser VALUE_NAME state */ -static const CHAR *value_name_state( struct parser *parser, const CHAR *pos ) -{ - const CHAR *p, *token_end = parser->start; - - for (p = pos; !is_eol( parser, p ); p++) - { - switch(*p) - { - case ';': - push_token( parser, token_end ); - if (!add_field_from_token( parser, 0 )) return NULL; - push_state( parser, LINE_START ); - set_state( parser, COMMENT ); - return p + 1; - case ',': - push_token( parser, token_end ); - if (!add_field_from_token( parser, 0 )) return NULL; - parser->start = p + 1; - push_state( parser, VALUE_NAME ); - set_state( parser, LEADING_SPACES ); - return p + 1; - case '"': - push_token( parser, token_end ); - parser->start = p + 1; - push_state( parser, VALUE_NAME ); - set_state( parser, QUOTES ); - return p + 1; - case '\\': - push_token( parser, token_end ); - parser->start = p; - push_state( parser, VALUE_NAME ); - set_state( parser, EOL_BACKSLASH ); - return p; - default: - if (!isspace(*p)) token_end = p + 1; - else - { - push_token( parser, p ); - push_state( parser, VALUE_NAME ); - set_state( parser, TRAILING_SPACES ); - return p; - } - break; - } - } - push_token( parser, token_end ); - if (!add_field_from_token( parser, 0 )) return NULL; - set_state( parser, LINE_START ); - return p; -} - - -/* handler for parser EOL_BACKSLASH state */ -static const CHAR *eol_backslash_state( struct parser *parser, const CHAR *pos ) -{ - const CHAR *p; - - for (p = pos; !is_eof( parser, p ); p++) - { - switch(*p) - { - case '\r': - continue; - - case '\n': - parser->line_pos++; - parser->start = p + 1; - set_state( parser, LEADING_SPACES ); - return p + 1; - - case '\\': - continue; - - case ';': - push_state( parser, EOL_BACKSLASH ); - set_state( parser, COMMENT ); - return p + 1; - - default: - if (isspace(*p)) - continue; - push_token( parser, p ); - pop_state( parser ); - return p; - } - } - parser->start = p; - pop_state( parser ); - - return p; -} - - -/* handler for parser QUOTES state */ -static const CHAR *quotes_state( struct parser *parser, const CHAR *pos ) -{ - const CHAR *p, *token_end = parser->start; - - for (p = pos; !is_eol( parser, p ); p++) - { - if (*p == '"') - { - if (p+1 < parser->end && p[1] == '"') /* double quotes */ - { - push_token( parser, p + 1 ); - parser->start = token_end = p + 2; - p++; - } - else /* end of quotes */ - { - push_token( parser, p ); - parser->start = p + 1; - pop_state( parser ); - return p + 1; - } - } - } - push_token( parser, p ); - pop_state( parser ); - return p; -} - - -/* handler for parser LEADING_SPACES state */ -static const CHAR *leading_spaces_state( struct parser *parser, const CHAR *pos ) -{ - const CHAR *p; - - for (p = pos; !is_eol( parser, p ); p++) - { - if (*p == '\\') - { - parser->start = p; - set_state( parser, EOL_BACKSLASH ); - return p; - } - if (!isspace(*p)) - break; - } - parser->start = p; - pop_state( parser ); - return p; -} - - -/* handler for parser TRAILING_SPACES state */ -static const CHAR *trailing_spaces_state( struct parser *parser, const CHAR *pos ) -{ - const CHAR *p; - - for (p = pos; !is_eol( parser, p ); p++) - { - if (*p == '\\') - { - set_state( parser, EOL_BACKSLASH ); - return p; - } - if (!isspace(*p)) - break; - } - pop_state( parser ); - return p; -} - - -/* handler for parser COMMENT state */ -static const CHAR *comment_state( struct parser *parser, const CHAR *pos ) -{ - const CHAR *p = pos; - - while (!is_eol( parser, p )) - p++; - pop_state( parser ); - return p; -} - - -/* parse a complete buffer */ -INFSTATUS -InfpParseBuffer (PINFCACHE file, - const CHAR *buffer, - const CHAR *end, - PULONG error_line) -{ - struct parser parser; - const CHAR *pos = buffer; - - parser.start = buffer; - parser.end = end; - parser.file = file; - parser.line = NULL; - parser.state = LINE_START; - parser.stack_pos = 0; - parser.cur_section = NULL; - parser.line_pos = 1; - parser.error = 0; - parser.token_len = 0; - - /* parser main loop */ - while (pos) - pos = (parser_funcs[parser.state])(&parser, pos); - - if (parser.error) - { - if (error_line) - *error_line = parser.line_pos; - return parser.error; - } - - /* find the [strings] section */ - file->StringsSection = InfpFindSection(file, - _T("Strings")); - - return INF_STATUS_SUCCESS; -} - -/* EOF */ diff --git a/reactos/lib/inflib/infget.c b/reactos/lib/inflib/infget.c deleted file mode 100644 index b21b2ddd958..00000000000 --- a/reactos/lib/inflib/infget.c +++ /dev/null @@ -1,515 +0,0 @@ -/* - * PROJECT: .inf file parser - * LICENSE: GPL - See COPYING in the top level directory - * PROGRAMMER: Royce Mitchell III - * Eric Kohl - * Ge van Geldorp - */ - -/* INCLUDES *****************************************************************/ - -#include "inflib.h" - -#define NDEBUG -#include - - -INFSTATUS -InfpFindFirstLine(PINFCACHE Cache, - PCTSTR Section, - PCTSTR Key, - PINFCONTEXT *Context) -{ - PINFCACHESECTION CacheSection; - PINFCACHELINE CacheLine; - - if (Cache == NULL || Section == NULL || Context == NULL) - { - DPRINT1("Invalid parameter\n"); - return INF_STATUS_INVALID_PARAMETER; - } - - CacheSection = InfpFindSection(Cache, Section); - if (NULL == CacheSection) - { - DPRINT("Section not found\n"); - return INF_STATUS_NOT_FOUND; - } - - if (Key != NULL) - { - CacheLine = InfpFindKeyLine(CacheSection, Key); - } - else - { - CacheLine = CacheSection->FirstLine; - } - - if (NULL == CacheLine) - { - DPRINT("Key not found\n"); - return INF_STATUS_NOT_FOUND; - } - - *Context = MALLOC(sizeof(INFCONTEXT)); - if (NULL == *Context) - { - DPRINT1("MALLOC() failed\n"); - return INF_STATUS_NO_MEMORY; - } - (*Context)->Inf = (PVOID)Cache; - (*Context)->Section = (PVOID)CacheSection; - (*Context)->Line = (PVOID)CacheLine; - - return INF_STATUS_SUCCESS; -} - - -INFSTATUS -InfpFindNextLine(PINFCONTEXT ContextIn, - PINFCONTEXT ContextOut) -{ - PINFCACHELINE CacheLine; - - if (ContextIn == NULL || ContextOut == NULL) - return INF_STATUS_INVALID_PARAMETER; - - if (ContextIn->Line == NULL) - return INF_STATUS_INVALID_PARAMETER; - - CacheLine = (PINFCACHELINE)ContextIn->Line; - if (CacheLine->Next == NULL) - return INF_STATUS_NOT_FOUND; - - if (ContextIn != ContextOut) - { - ContextOut->Inf = ContextIn->Inf; - ContextOut->Section = ContextIn->Section; - } - ContextOut->Line = (PVOID)(CacheLine->Next); - - return INF_STATUS_SUCCESS; -} - - -INFSTATUS -InfpFindFirstMatchLine(PINFCONTEXT ContextIn, - PCTSTR Key, - PINFCONTEXT ContextOut) -{ - PINFCACHELINE CacheLine; - - if (ContextIn == NULL || ContextOut == NULL || Key == NULL || *Key == 0) - return INF_STATUS_INVALID_PARAMETER; - - if (ContextIn->Inf == NULL || ContextIn->Section == NULL) - return INF_STATUS_INVALID_PARAMETER; - - CacheLine = ((PINFCACHESECTION)(ContextIn->Section))->FirstLine; - while (CacheLine != NULL) - { - if (CacheLine->Key != NULL && _tcsicmp (CacheLine->Key, Key) == 0) - { - - if (ContextIn != ContextOut) - { - ContextOut->Inf = ContextIn->Inf; - ContextOut->Section = ContextIn->Section; - } - ContextOut->Line = (PVOID)CacheLine; - - return INF_STATUS_SUCCESS; - } - - CacheLine = CacheLine->Next; - } - - return INF_STATUS_NOT_FOUND; -} - - -INFSTATUS -InfpFindNextMatchLine(PINFCONTEXT ContextIn, - PCTSTR Key, - PINFCONTEXT ContextOut) -{ - PINFCACHELINE CacheLine; - - if (ContextIn == NULL || ContextOut == NULL || Key == NULL || *Key == 0) - return INF_STATUS_INVALID_PARAMETER; - - if (ContextIn->Inf == NULL || ContextIn->Section == NULL || ContextIn->Line == NULL) - return INF_STATUS_INVALID_PARAMETER; - - CacheLine = (PINFCACHELINE)ContextIn->Line; - while (CacheLine != NULL) - { - if (CacheLine->Key != NULL && _tcsicmp (CacheLine->Key, Key) == 0) - { - - if (ContextIn != ContextOut) - { - ContextOut->Inf = ContextIn->Inf; - ContextOut->Section = ContextIn->Section; - } - ContextOut->Line = (PVOID)CacheLine; - - return INF_STATUS_SUCCESS; - } - - CacheLine = CacheLine->Next; - } - - return INF_STATUS_NOT_FOUND; -} - - -LONG -InfpGetLineCount(HINF InfHandle, - PCTSTR Section) -{ - PINFCACHE Cache; - PINFCACHESECTION CacheSection; - - if (InfHandle == NULL || Section == NULL) - { - DPRINT("Invalid parameter\n"); - return -1; - } - - Cache = (PINFCACHE)InfHandle; - - /* Iterate through list of sections */ - CacheSection = Cache->FirstSection; - while (CacheSection != NULL) - { - /* Are the section names the same? */ - if (_tcsicmp(CacheSection->Name, Section) == 0) - { - return CacheSection->LineCount; - } - - /* Get the next section */ - CacheSection = CacheSection->Next; - } - - DPRINT("Section not found\n"); - - return -1; -} - - -/* InfpGetLineText */ - - -LONG -InfpGetFieldCount(PINFCONTEXT Context) -{ - if (Context == NULL || Context->Line == NULL) - return 0; - - return ((PINFCACHELINE)Context->Line)->FieldCount; -} - - -INFSTATUS -InfpGetBinaryField(PINFCONTEXT Context, - ULONG FieldIndex, - PUCHAR ReturnBuffer, - ULONG ReturnBufferSize, - PULONG RequiredSize) -{ - PINFCACHELINE CacheLine; - PINFCACHEFIELD CacheField; - ULONG Index; - ULONG Size; - PUCHAR Ptr; - - if (Context == NULL || Context->Line == NULL || FieldIndex == 0) - { - DPRINT("Invalid parameter\n"); - return INF_STATUS_INVALID_PARAMETER; - } - - if (RequiredSize != NULL) - *RequiredSize = 0; - - CacheLine = (PINFCACHELINE)Context->Line; - - if (FieldIndex > (ULONG)CacheLine->FieldCount) - return INF_STATUS_NOT_FOUND; - - CacheField = CacheLine->FirstField; - for (Index = 1; Index < FieldIndex; Index++) - CacheField = CacheField->Next; - - Size = (ULONG)CacheLine->FieldCount - FieldIndex + 1; - - if (RequiredSize != NULL) - *RequiredSize = Size; - - if (ReturnBuffer != NULL) - { - if (ReturnBufferSize < Size) - return INF_STATUS_BUFFER_OVERFLOW; - - /* Copy binary data */ - Ptr = ReturnBuffer; - while (CacheField != NULL) - { - *Ptr = (UCHAR)_tcstoul (CacheField->Data, NULL, 16); - - Ptr++; - CacheField = CacheField->Next; - } - } - - return INF_STATUS_SUCCESS; -} - - -INFSTATUS -InfpGetIntField(PINFCONTEXT Context, - ULONG FieldIndex, - INT* IntegerValue) -{ - PINFCACHELINE CacheLine; - PINFCACHEFIELD CacheField; - ULONG Index; - PTCHAR Ptr; - - if (Context == NULL || Context->Line == NULL || IntegerValue == NULL) - { - DPRINT("Invalid parameter\n"); - return INF_STATUS_INVALID_PARAMETER; - } - - CacheLine = (PINFCACHELINE)Context->Line; - - if (FieldIndex > (ULONG)CacheLine->FieldCount) - { - DPRINT("Invalid parameter\n"); - return INF_STATUS_INVALID_PARAMETER; - } - - if (FieldIndex == 0) - { - Ptr = CacheLine->Key; - } - else - { - CacheField = CacheLine->FirstField; - for (Index = 1; Index < FieldIndex; Index++) - CacheField = CacheField->Next; - - Ptr = CacheField->Data; - } - - *IntegerValue = (LONG)_tcstol(Ptr, NULL, 0); - - return INF_STATUS_SUCCESS; -} - - -INFSTATUS -InfpGetMultiSzField(PINFCONTEXT Context, - ULONG FieldIndex, - PTSTR ReturnBuffer, - ULONG ReturnBufferSize, - PULONG RequiredSize) -{ - PINFCACHELINE CacheLine; - PINFCACHEFIELD CacheField; - PINFCACHEFIELD FieldPtr; - ULONG Index; - ULONG Size; - PTCHAR Ptr; - - if (Context == NULL || Context->Line == NULL || FieldIndex == 0) - { - DPRINT("Invalid parameter\n"); - return INF_STATUS_INVALID_PARAMETER; - } - - if (RequiredSize != NULL) - *RequiredSize = 0; - - CacheLine = (PINFCACHELINE)Context->Line; - - if (FieldIndex > (ULONG)CacheLine->FieldCount) - return INF_STATUS_INVALID_PARAMETER; - - CacheField = CacheLine->FirstField; - for (Index = 1; Index < FieldIndex; Index++) - CacheField = CacheField->Next; - - /* Calculate the required buffer size */ - FieldPtr = CacheField; - Size = 0; - while (FieldPtr != NULL) - { - Size += ((ULONG)_tcslen (FieldPtr->Data) + 1); - FieldPtr = FieldPtr->Next; - } - Size++; - - if (RequiredSize != NULL) - *RequiredSize = Size; - - if (ReturnBuffer != NULL) - { - if (ReturnBufferSize < Size) - return INF_STATUS_BUFFER_OVERFLOW; - - /* Copy multi-sz string */ - Ptr = ReturnBuffer; - FieldPtr = CacheField; - while (FieldPtr != NULL) - { - Size = (ULONG)_tcslen (FieldPtr->Data) + 1; - - _tcscpy (Ptr, FieldPtr->Data); - - Ptr = Ptr + Size; - FieldPtr = FieldPtr->Next; - } - *Ptr = 0; - } - - return INF_STATUS_SUCCESS; -} - - -INFSTATUS -InfpGetStringField(PINFCONTEXT Context, - ULONG FieldIndex, - PTSTR ReturnBuffer, - ULONG ReturnBufferSize, - PULONG RequiredSize) -{ - PINFCACHELINE CacheLine; - PINFCACHEFIELD CacheField; - ULONG Index; - PTCHAR Ptr; - ULONG Size; - - if (Context == NULL || Context->Line == NULL || FieldIndex == 0) - { - DPRINT("Invalid parameter\n"); - return INF_STATUS_INVALID_PARAMETER; - } - - if (RequiredSize != NULL) - *RequiredSize = 0; - - CacheLine = (PINFCACHELINE)Context->Line; - - if (FieldIndex > (ULONG)CacheLine->FieldCount) - return INF_STATUS_INVALID_PARAMETER; - - if (FieldIndex == 0) - { - Ptr = CacheLine->Key; - } - else - { - CacheField = CacheLine->FirstField; - for (Index = 1; Index < FieldIndex; Index++) - CacheField = CacheField->Next; - - Ptr = CacheField->Data; - } - - Size = (ULONG)_tcslen (Ptr) + 1; - - if (RequiredSize != NULL) - *RequiredSize = Size; - - if (ReturnBuffer != NULL) - { - if (ReturnBufferSize < Size) - return INF_STATUS_BUFFER_OVERFLOW; - - _tcscpy (ReturnBuffer, Ptr); - } - - return INF_STATUS_SUCCESS; -} - - -INFSTATUS -InfpGetData(PINFCONTEXT Context, - PTCHAR *Key, - PTCHAR *Data) -{ - PINFCACHELINE CacheKey; - - if (Context == NULL || Context->Line == NULL || Data == NULL) - { - DPRINT("Invalid parameter\n"); - return INF_STATUS_INVALID_PARAMETER; - } - - CacheKey = (PINFCACHELINE)Context->Line; - if (Key != NULL) - *Key = CacheKey->Key; - - if (Data != NULL) - { - if (CacheKey->FirstField == NULL) - { - *Data = NULL; - } - else - { - *Data = CacheKey->FirstField->Data; - } - } - - return INF_STATUS_SUCCESS; -} - - -INFSTATUS -InfpGetDataField(PINFCONTEXT Context, - ULONG FieldIndex, - PTCHAR *Data) -{ - PINFCACHELINE CacheLine; - PINFCACHEFIELD CacheField; - ULONG Index; - - if (Context == NULL || Context->Line == NULL || Data == NULL) - { - DPRINT("Invalid parameter\n"); - return INF_STATUS_INVALID_PARAMETER; - } - - CacheLine = (PINFCACHELINE)Context->Line; - - if (FieldIndex > (ULONG)CacheLine->FieldCount) - return INF_STATUS_INVALID_PARAMETER; - - if (FieldIndex == 0) - { - *Data = CacheLine->Key; - } - else - { - CacheField = CacheLine->FirstField; - for (Index = 1; Index < FieldIndex; Index++) - CacheField = CacheField->Next; - - *Data = CacheField->Data; - } - - return INF_STATUS_SUCCESS; -} - -VOID -InfpFreeContext(PINFCONTEXT Context) -{ - FREE(Context); -} - -/* EOF */ diff --git a/reactos/lib/inflib/infhost.h b/reactos/lib/inflib/infhost.h deleted file mode 100644 index 1a40990160f..00000000000 --- a/reactos/lib/inflib/infhost.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * PROJECT: .inf file parser - * LICENSE: GPL - See COPYING in the top level directory - * PROGRAMMER: Royce Mitchell III - * Eric Kohl - * Ge van Geldorp - */ - -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#include "infcommon.h" - -extern int InfHostOpenBufferedFile(PHINF InfHandle, - void *Buffer, - ULONG BufferSize, - ULONG *ErrorLine); -extern int InfHostOpenFile(PHINF InfHandle, - const CHAR *FileName, - ULONG *ErrorLine); -extern int InfHostWriteFile(HINF InfHandle, - const CHAR *FileName, - const CHAR *HeaderComment); -extern void InfHostCloseFile(HINF InfHandle); -extern int InfHostFindFirstLine(HINF InfHandle, - const CHAR *Section, - const CHAR *Key, - PINFCONTEXT *Context); -extern int InfHostFindNextLine(PINFCONTEXT ContextIn, - PINFCONTEXT ContextOut); -extern int InfHostFindFirstMatchLine(PINFCONTEXT ContextIn, - const CHAR *Key, - PINFCONTEXT ContextOut); -extern int InfHostFindNextMatchLine(PINFCONTEXT ContextIn, - const CHAR *Key, - PINFCONTEXT ContextOut); -extern LONG InfHostGetLineCount(HINF InfHandle, - const CHAR *Section); -extern LONG InfHostGetFieldCount(PINFCONTEXT Context); -extern int InfHostGetBinaryField(PINFCONTEXT Context, - ULONG FieldIndex, - UCHAR *ReturnBuffer, - ULONG ReturnBufferSize, - ULONG *RequiredSize); -extern int InfHostGetIntField(PINFCONTEXT Context, - ULONG FieldIndex, - ULONG *IntegerValue); -extern int InfHostGetMultiSzField(PINFCONTEXT Context, - ULONG FieldIndex, - CHAR *ReturnBuffer, - ULONG ReturnBufferSize, - ULONG *RequiredSize); -extern int InfHostGetStringField(PINFCONTEXT Context, - ULONG FieldIndex, - CHAR *ReturnBuffer, - ULONG ReturnBufferSize, - ULONG *RequiredSize); -extern int InfHostGetData(PINFCONTEXT Context, - CHAR **Key, - CHAR **Data); -extern int InfHostGetDataField(PINFCONTEXT Context, - ULONG FieldIndex, - CHAR **Data); -extern int InfHostFindOrAddSection(HINF InfHandle, - const CHAR *Section, - PINFCONTEXT *Context); -extern int InfHostAddLine(PINFCONTEXT Context, const CHAR *Key); -extern int InfHostAddField(PINFCONTEXT Context, const CHAR *Data); -extern void InfHostFreeContext(PINFCONTEXT Context); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -/* EOF */ diff --git a/reactos/lib/inflib/infhostgen.c b/reactos/lib/inflib/infhostgen.c deleted file mode 100644 index e4eedc9f800..00000000000 --- a/reactos/lib/inflib/infhostgen.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * PROJECT: .inf file parser - * LICENSE: GPL - See COPYING in the top level directory - * PROGRAMMER: Royce Mitchell III - * Eric Kohl - * Ge van Geldorp - */ - -/* INCLUDES *****************************************************************/ - -#include "inflib.h" -#include "infhost.h" - -#define NDEBUG -#include - -/* PUBLIC FUNCTIONS *********************************************************/ - -int -InfHostOpenBufferedFile(PHINF InfHandle, - void *Buffer, - ULONG BufferSize, - ULONG *ErrorLine) -{ - INFSTATUS Status; - PINFCACHE Cache; - CHAR *FileBuffer; - - *InfHandle = NULL; - *ErrorLine = (ULONG)-1; - - /* Allocate file buffer */ - FileBuffer = MALLOC(BufferSize + 1); - if (FileBuffer == NULL) - { - DPRINT1("MALLOC() failed\n"); - return(INF_STATUS_INSUFFICIENT_RESOURCES); - } - - MEMCPY(FileBuffer, Buffer, BufferSize); - - /* Append string terminator */ - FileBuffer[BufferSize] = 0; - - /* Allocate infcache header */ - Cache = (PINFCACHE)MALLOC(sizeof(INFCACHE)); - if (Cache == NULL) - { - DPRINT1("MALLOC() failed\n"); - FREE(FileBuffer); - return(INF_STATUS_INSUFFICIENT_RESOURCES); - } - - /* Initialize inicache header */ - ZEROMEMORY(Cache, - sizeof(INFCACHE)); - - /* Parse the inf buffer */ - Status = InfpParseBuffer (Cache, - FileBuffer, - FileBuffer + BufferSize, - ErrorLine); - if (!INF_SUCCESS(Status)) - { - FREE(Cache); - Cache = NULL; - } - - /* Free file buffer */ - FREE(FileBuffer); - - *InfHandle = (HINF)Cache; - - return INF_SUCCESS(Status) ? 0 : -1; -} - - -int -InfHostOpenFile(PHINF InfHandle, - const CHAR *FileName, - ULONG *ErrorLine) -{ - FILE *File; - CHAR *FileBuffer; - ULONG FileLength; - PINFCACHE Cache; - INFSTATUS Status; - - *InfHandle = NULL; - *ErrorLine = (ULONG)-1; - - /* Open the inf file */ - File = fopen(FileName, "rb"); - if (NULL == File) - { - DPRINT1("fopen() failed (errno %d)\n", errno); - return -1; - } - - DPRINT("fopen() successful\n"); - - /* Query file size */ - if (fseek(File, (size_t)0, SEEK_END)) - { - DPRINT1("fseek() to EOF failed (errno %d)\n", errno); - fclose(File); - return -1; - } - - FileLength = (ULONG)ftell(File); - if ((ULONG) -1 == FileLength) - { - DPRINT1("ftell() failed (errno %d)\n", errno); - fclose(File); - return -1; - } - DPRINT("File size: %u\n", (UINT)FileLength); - - /* Rewind */ - if (fseek(File, (size_t)0, SEEK_SET)) - { - DPRINT1("fseek() to BOF failed (errno %d)\n", errno); - fclose(File); - return -1; - } - - /* Allocate file buffer */ - FileBuffer = MALLOC(FileLength + 1); - if (FileBuffer == NULL) - { - DPRINT1("MALLOC() failed\n"); - fclose(File); - return -1; - } - - /* Read file */ - if (FileLength != fread(FileBuffer, (size_t)1, (size_t)FileLength, File)) - { - DPRINT1("fread() failed (errno %d)\n", errno); - FREE(FileBuffer); - fclose(File); - return -1; - } - - fclose(File); - - /* Append string terminator */ - FileBuffer[FileLength] = 0; - - /* Allocate infcache header */ - Cache = (PINFCACHE)MALLOC(sizeof(INFCACHE)); - if (Cache == NULL) - { - DPRINT1("MALLOC() failed\n"); - FREE(FileBuffer); - return -1; - } - - /* Initialize inicache header */ - ZEROMEMORY(Cache, - sizeof(INFCACHE)); - - /* Parse the inf buffer */ - Status = InfpParseBuffer (Cache, - FileBuffer, - FileBuffer + FileLength, - ErrorLine); - if (!INF_SUCCESS(Status)) - { - FREE(Cache); - Cache = NULL; - } - - /* Free file buffer */ - FREE(FileBuffer); - - *InfHandle = (HINF)Cache; - - return INF_SUCCESS(Status) ? 0 : -1; -} - - -void -InfHostCloseFile(HINF InfHandle) -{ - PINFCACHE Cache; - - Cache = (PINFCACHE)InfHandle; - - if (Cache == NULL) - { - return; - } - - while (Cache->FirstSection != NULL) - { - Cache->FirstSection = InfpFreeSection(Cache->FirstSection); - } - Cache->LastSection = NULL; - - FREE(Cache); -} - -/* EOF */ diff --git a/reactos/lib/inflib/infhostget.c b/reactos/lib/inflib/infhostget.c deleted file mode 100644 index 806ecdc7464..00000000000 --- a/reactos/lib/inflib/infhostget.c +++ /dev/null @@ -1,249 +0,0 @@ -/* - * PROJECT: .inf file parser - * LICENSE: GPL - See COPYING in the top level directory - * PROGRAMMER: Royce Mitchell III - * Eric Kohl - * Ge van Geldorp - */ - -/* INCLUDES *****************************************************************/ - -#include "inflib.h" -#include "infhost.h" - -#define NDEBUG -#include - -int -InfHostFindFirstLine(HINF InfHandle, - const CHAR *Section, - const CHAR *Key, - PINFCONTEXT *Context) -{ - INFSTATUS Status; - - Status = InfpFindFirstLine(InfHandle, Section, Key, Context); - if (INF_SUCCESS(Status)) - { - return 0; - } - else - { - errno = Status; - return -1; - } -} - - -int -InfHostFindNextLine(PINFCONTEXT ContextIn, - PINFCONTEXT ContextOut) -{ - INFSTATUS Status; - - Status = InfpFindNextLine(ContextIn, ContextOut); - if (INF_SUCCESS(Status)) - { - return 0; - } - else - { - errno = Status; - return -1; - } -} - - -int -InfHostFindFirstMatchLine(PINFCONTEXT ContextIn, - const CHAR *Key, - PINFCONTEXT ContextOut) -{ - INFSTATUS Status; - - Status = InfpFindFirstMatchLine(ContextIn, Key, ContextOut); - if (INF_SUCCESS(Status)) - { - return 0; - } - else - { - errno = Status; - return -1; - } -} - - -int -InfHostFindNextMatchLine(PINFCONTEXT ContextIn, - const CHAR *Key, - PINFCONTEXT ContextOut) -{ - INFSTATUS Status; - - Status = InfpFindNextMatchLine(ContextIn, Key, ContextOut); - if (INF_SUCCESS(Status)) - { - return 0; - } - else - { - errno = Status; - return -1; - } -} - - -LONG -InfHostGetLineCount(HINF InfHandle, - PCTSTR Section) -{ - return InfpGetLineCount(InfHandle, Section); -} - - -/* InfGetLineText */ - - -LONG -InfHostGetFieldCount(PINFCONTEXT Context) -{ - return InfpGetFieldCount(Context); -} - - -int -InfHostGetBinaryField(PINFCONTEXT Context, - ULONG FieldIndex, - UCHAR *ReturnBuffer, - ULONG ReturnBufferSize, - ULONG *RequiredSize) -{ - INFSTATUS Status; - - Status = InfpGetBinaryField(Context, FieldIndex, ReturnBuffer, - ReturnBufferSize, RequiredSize); - if (INF_SUCCESS(Status)) - { - return 0; - } - else - { - errno = Status; - return -1; - } -} - - -int -InfHostGetIntField(PINFCONTEXT Context, - ULONG FieldIndex, - ULONG *IntegerValue) -{ - INFSTATUS Status; - - Status = InfpGetIntField(Context, FieldIndex, (PLONG)IntegerValue); - if (INF_SUCCESS(Status)) - { - return 0; - } - else - { - errno = Status; - return -1; - } -} - - -int -InfHostGetMultiSzField(PINFCONTEXT Context, - ULONG FieldIndex, - CHAR * ReturnBuffer, - ULONG ReturnBufferSize, - ULONG *RequiredSize) -{ - INFSTATUS Status; - - Status = InfpGetMultiSzField(Context, FieldIndex, ReturnBuffer, - ReturnBufferSize, RequiredSize); - if (INF_SUCCESS(Status)) - { - return 0; - } - else - { - errno = Status; - return -1; - } -} - - -int -InfHostGetStringField(PINFCONTEXT Context, - ULONG FieldIndex, - CHAR *ReturnBuffer, - ULONG ReturnBufferSize, - ULONG *RequiredSize) -{ - INFSTATUS Status; - - Status = InfpGetStringField(Context, FieldIndex, ReturnBuffer, - ReturnBufferSize, RequiredSize); - if (INF_SUCCESS(Status)) - { - return 0; - } - else - { - errno = Status; - return -1; - } -} - - -int -InfHostGetData(PINFCONTEXT Context, - CHAR **Key, - CHAR **Data) -{ - INFSTATUS Status; - - Status = InfpGetData(Context, Key, Data); - if (INF_SUCCESS(Status)) - { - return 0; - } - else - { - errno = Status; - return -1; - } -} - - -int -InfHostGetDataField(PINFCONTEXT Context, - ULONG FieldIndex, - CHAR **Data) -{ - INFSTATUS Status; - - Status = InfpGetDataField(Context, FieldIndex, Data); - if (INF_SUCCESS(Status)) - { - return 0; - } - else - { - errno = Status; - return -1; - } -} - -VOID -InfHostFreeContext(PINFCONTEXT Context) -{ - InfpFreeContext(Context); -} - -/* EOF */ diff --git a/reactos/lib/inflib/infhostput.c b/reactos/lib/inflib/infhostput.c deleted file mode 100644 index 3eb59704af8..00000000000 --- a/reactos/lib/inflib/infhostput.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * PROJECT: .inf file parser - * LICENSE: GPL - See COPYING in the top level directory - * COPYRIGHT: Copyright 2005 Ge van Geldorp - */ - -/* INCLUDES *****************************************************************/ - -#include "inflib.h" -#include "infhost.h" - -#define NDEBUG -#include - -int -InfHostWriteFile(HINF InfHandle, const CHAR *FileName, - const CHAR *HeaderComment) -{ - CHAR *Buffer; - ULONG BufferSize; - INFSTATUS Status; - FILE *File; - - Status = InfpBuildFileBuffer((PINFCACHE) InfHandle, &Buffer, &BufferSize); - if (! INF_SUCCESS(Status)) - { - errno = Status; - return -1; - } - - File = fopen(FileName, "wb"); - if (NULL == File) - { - FREE(Buffer); - DPRINT1("fopen() failed (errno %d)\n", errno); - return -1; - } - - DPRINT("fopen() successful\n"); - - if (NULL != HeaderComment && '\0' != *HeaderComment) - { - fprintf(File, "; %s\r\n\r\n", HeaderComment); - } - - if (BufferSize != fwrite(Buffer, (size_t)1, (size_t)BufferSize, File)) - { - DPRINT1("fwrite() failed (errno %d)\n", errno); - fclose(File); - FREE(Buffer); - return -1; - } - - fclose(File); - - FREE(Buffer); - - return 0; -} - -int -InfHostFindOrAddSection(HINF InfHandle, - const CHAR *Section, - PINFCONTEXT *Context) -{ - INFSTATUS Status; - - Status = InfpFindOrAddSection((PINFCACHE) InfHandle, Section, Context); - if (INF_SUCCESS(Status)) - { - return 0; - } - else - { - errno = Status; - return -1; - } -} - -int -InfHostAddLine(PINFCONTEXT Context, const CHAR *Key) -{ - INFSTATUS Status; - - Status = InfpAddLineWithKey(Context, Key); - if (INF_SUCCESS(Status)) - { - return 0; - } - else - { - errno = Status; - return -1; - } -} - -int -InfHostAddField(PINFCONTEXT Context, const CHAR *Data) -{ - INFSTATUS Status; - - Status = InfpAddField(Context, Data); - if (INF_SUCCESS(Status)) - { - return 0; - } - else - { - errno = Status; - return -1; - } -} - -/* EOF */ diff --git a/reactos/lib/inflib/inflib.h b/reactos/lib/inflib/inflib.h deleted file mode 100644 index 7dff17fa035..00000000000 --- a/reactos/lib/inflib/inflib.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * PROJECT: .inf file parser - * LICENSE: GPL - See COPYING in the top level directory - * COPYRIGHT: Copyright 2005 Ge van Geldorp - */ - -#include -#include -#include - -#include "builddep.h" -#include "infcommon.h" -#include "infpriv.h" - -/* EOF */ diff --git a/reactos/lib/inflib/infpriv.h b/reactos/lib/inflib/infpriv.h deleted file mode 100644 index e4424cc1575..00000000000 --- a/reactos/lib/inflib/infpriv.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - * PROJECT: .inf file parser - * LICENSE: GPL - See COPYING in the top level directory - * PROGRAMMER: Royce Mitchell III - * Eric Kohl - * Ge van Geldorp - */ - -#pragma once - -#ifndef FIELD_OFFSET -#define FIELD_OFFSET(t,f) ((ptrdiff_t)&(((t*)0)->f)) -#endif - -#define INF_STATUS_INSUFFICIENT_RESOURCES ((INFSTATUS)0xC000009A) -#define INF_STATUS_BAD_SECTION_NAME_LINE ((INFSTATUS)0xC0700001) -#define INF_STATUS_SECTION_NAME_TOO_LONG ((INFSTATUS)0xC0700002) -#define INF_STATUS_WRONG_INF_STYLE ((INFSTATUS)0xC0700003) -#define INF_STATUS_NOT_ENOUGH_MEMORY ((INFSTATUS)0xC0700004) - -typedef struct _INFCACHEFIELD -{ - struct _INFCACHEFIELD *Next; - struct _INFCACHEFIELD *Prev; - - TCHAR Data[1]; -} INFCACHEFIELD, *PINFCACHEFIELD; - -typedef struct _INFCACHELINE -{ - struct _INFCACHELINE *Next; - struct _INFCACHELINE *Prev; - - LONG FieldCount; - - PTSTR Key; - - PINFCACHEFIELD FirstField; - PINFCACHEFIELD LastField; - -} INFCACHELINE, *PINFCACHELINE; - -typedef struct _INFCACHESECTION -{ - struct _INFCACHESECTION *Next; - struct _INFCACHESECTION *Prev; - - PINFCACHELINE FirstLine; - PINFCACHELINE LastLine; - - LONG LineCount; - - TCHAR Name[1]; -} INFCACHESECTION, *PINFCACHESECTION; - -typedef struct _INFCACHE -{ - PINFCACHESECTION FirstSection; - PINFCACHESECTION LastSection; - - PINFCACHESECTION StringsSection; -} INFCACHE, *PINFCACHE; - -typedef struct _INFCONTEXT -{ - PINFCACHE Inf; - PINFCACHESECTION Section; - PINFCACHELINE Line; -} INFCONTEXT; - -typedef int INFSTATUS; - -/* FUNCTIONS ****************************************************************/ - -extern INFSTATUS InfpParseBuffer(PINFCACHE file, - const CHAR *buffer, - const CHAR *end, - PULONG error_line); -extern PINFCACHESECTION InfpFreeSection(PINFCACHESECTION Section); -extern PINFCACHESECTION InfpAddSection(PINFCACHE Cache, - PCTSTR Name); -extern PINFCACHELINE InfpAddLine(PINFCACHESECTION Section); -extern PVOID InfpAddKeyToLine(PINFCACHELINE Line, - PCTSTR Key); -extern PVOID InfpAddFieldToLine(PINFCACHELINE Line, - PCTSTR Data); -extern PINFCACHELINE InfpFindKeyLine(PINFCACHESECTION Section, - PCTSTR Key); -extern PINFCACHESECTION InfpFindSection(PINFCACHE Cache, - PCTSTR Section); - -extern INFSTATUS InfpBuildFileBuffer(PINFCACHE InfHandle, - PCHAR *Buffer, - PULONG BufferSize); - -extern INFSTATUS InfpFindFirstLine(PINFCACHE InfHandle, - PCTSTR Section, - PCTSTR Key, - PINFCONTEXT *Context); -extern INFSTATUS InfpFindNextLine(PINFCONTEXT ContextIn, - PINFCONTEXT ContextOut); -extern INFSTATUS InfpFindFirstMatchLine(PINFCONTEXT ContextIn, - PCTSTR Key, - PINFCONTEXT ContextOut); -extern INFSTATUS InfpFindNextMatchLine(PINFCONTEXT ContextIn, - PCTSTR Key, - PINFCONTEXT ContextOut); -extern LONG InfpGetLineCount(HINF InfHandle, - PCTSTR Section); -extern LONG InfpGetFieldCount(PINFCONTEXT Context); -extern INFSTATUS InfpGetBinaryField(PINFCONTEXT Context, - ULONG FieldIndex, - PUCHAR ReturnBuffer, - ULONG ReturnBufferSize, - PULONG RequiredSize); -extern INFSTATUS InfpGetIntField(PINFCONTEXT Context, - ULONG FieldIndex, - INT* IntegerValue); -extern INFSTATUS InfpGetMultiSzField(PINFCONTEXT Context, - ULONG FieldIndex, - PTSTR ReturnBuffer, - ULONG ReturnBufferSize, - PULONG RequiredSize); -extern INFSTATUS InfpGetStringField(PINFCONTEXT Context, - ULONG FieldIndex, - PTSTR ReturnBuffer, - ULONG ReturnBufferSize, - PULONG RequiredSize); -extern INFSTATUS InfpGetData(PINFCONTEXT Context, - PTCHAR *Key, - PTCHAR *Data); -extern INFSTATUS InfpGetDataField(PINFCONTEXT Context, - ULONG FieldIndex, - PTCHAR *Data); - -extern INFSTATUS InfpFindOrAddSection(PINFCACHE Cache, - PCTSTR Section, - PINFCONTEXT *Context); -extern INFSTATUS InfpAddLineWithKey(PINFCONTEXT Context, PCTSTR Key); -extern INFSTATUS InfpAddField(PINFCONTEXT Context, PCTSTR Data); - -extern VOID InfpFreeContext(PINFCONTEXT Context); - -/* EOF */ diff --git a/reactos/lib/inflib/infput.c b/reactos/lib/inflib/infput.c deleted file mode 100644 index 1d82fde1534..00000000000 --- a/reactos/lib/inflib/infput.c +++ /dev/null @@ -1,264 +0,0 @@ -/* - * PROJECT: .inf file parser - * LICENSE: GPL - See COPYING in the top level directory - * COPYRIGHT: Copyright 2005 Ge van Geldorp - */ - -/* INCLUDES *****************************************************************/ - -#include "inflib.h" - -#define NDEBUG -#include - -#define EOL _T("\r\n") -#define SIZE_INC 1024 - -typedef struct _OUTPUTBUFFER -{ - PCHAR Buffer; - PCHAR Current; - ULONG TotalSize; - ULONG FreeSize; - INFSTATUS Status; -} OUTPUTBUFFER, *POUTPUTBUFFER; - -static void -Output(POUTPUTBUFFER OutBuf, PCTSTR Text) -{ - ULONG Length; - PCHAR NewBuf; - ULONG NewSize; - - /* Skip mode? */ - if (! INF_SUCCESS(OutBuf->Status)) - { - return; - } - - /* Doesn't fit? */ - Length = (ULONG)_tcslen(Text); - if (OutBuf->FreeSize < Length + 1 && INF_SUCCESS(OutBuf->Status)) - { - DPRINT("Out of free space. TotalSize %u FreeSize %u Length %u\n", - (UINT)OutBuf->TotalSize, (UINT)OutBuf->FreeSize, (UINT)Length); - /* Round up to next SIZE_INC */ - NewSize = OutBuf->TotalSize + - (((Length + 1) - OutBuf->FreeSize + (SIZE_INC - 1)) / - SIZE_INC) * SIZE_INC; - DPRINT("NewSize %u\n", (UINT)NewSize); - NewBuf = MALLOC(NewSize); - /* Abort if failed */ - if (NULL == NewBuf) - { - DPRINT1("MALLOC() failed\n"); - OutBuf->Status = INF_STATUS_NO_MEMORY; - return; - } - - /* Need to copy old contents? */ - if (NULL != OutBuf->Buffer) - { - DPRINT("Copying %u bytes from old content\n", - (UINT)(OutBuf->TotalSize - OutBuf->FreeSize)); - MEMCPY(NewBuf, OutBuf->Buffer, OutBuf->TotalSize - OutBuf->FreeSize); - OutBuf->Current = NewBuf + (OutBuf->Current - OutBuf->Buffer); - FREE(OutBuf->Buffer); - } - else - { - OutBuf->Current = NewBuf; - } - OutBuf->Buffer = NewBuf; - OutBuf->FreeSize += NewSize - OutBuf->TotalSize; - OutBuf->TotalSize = NewSize; - DPRINT("After reallocation TotalSize %u FreeSize %u\n", - (UINT)OutBuf->TotalSize, (UINT)OutBuf->FreeSize); - } - - /* We're guaranteed to have enough room now. Copy char by char because of - possible "conversion" from Unicode to Ansi */ - while (Length--) - { - *OutBuf->Current++ = (char) *Text++; - OutBuf->FreeSize--; - } - *OutBuf->Current = '\0'; -} - -INFSTATUS -InfpBuildFileBuffer(PINFCACHE Cache, - PCHAR *Buffer, - PULONG BufferSize) -{ - OUTPUTBUFFER OutBuf; - PINFCACHESECTION CacheSection; - PINFCACHELINE CacheLine; - PINFCACHEFIELD CacheField; - PTCHAR p; - BOOLEAN NeedQuotes; - - OutBuf.Buffer = NULL; - OutBuf.Current = NULL; - OutBuf.FreeSize = 0; - OutBuf.TotalSize = 0; - OutBuf.Status = INF_STATUS_SUCCESS; - - /* Iterate through list of sections */ - CacheSection = Cache->FirstSection; - while (CacheSection != NULL) - { - DPRINT("Processing section " STRFMT "\n", CacheSection->Name); - if (CacheSection != Cache->FirstSection) - { - Output(&OutBuf, EOL); - } - Output(&OutBuf, _T("[")); - Output(&OutBuf, CacheSection->Name); - Output(&OutBuf, _T("]")); - Output(&OutBuf, EOL); - - /* Iterate through list of lines */ - CacheLine = CacheSection->FirstLine; - while (CacheLine != NULL) - { - if (NULL != CacheLine->Key) - { - DPRINT("Line with key " STRFMT "\n", CacheLine->Key); - Output(&OutBuf, CacheLine->Key); - Output(&OutBuf, _T(" = ")); - } - else - { - DPRINT("Line without key\n"); - } - - /* Iterate through list of lines */ - CacheField = CacheLine->FirstField; - while (CacheField != NULL) - { - if (CacheField != CacheLine->FirstField) - { - Output(&OutBuf, _T(",")); - } - p = CacheField->Data; - NeedQuotes = FALSE; - while (_T('\0') != *p && ! NeedQuotes) - { - NeedQuotes = (BOOLEAN)(_T(',') == *p || _T(';') == *p || - _T('\\') == *p); - p++; - } - if (NeedQuotes) - { - Output(&OutBuf, _T("\"")); - Output(&OutBuf, CacheField->Data); - Output(&OutBuf, _T("\"")); - } - else - { - Output(&OutBuf, CacheField->Data); - } - - /* Get the next field */ - CacheField = CacheField->Next; - } - - Output(&OutBuf, EOL); - /* Get the next line */ - CacheLine = CacheLine->Next; - } - - /* Get the next section */ - CacheSection = CacheSection->Next; - } - - if (INF_SUCCESS(OutBuf.Status)) - { - *Buffer = OutBuf.Buffer; - *BufferSize = OutBuf.TotalSize - OutBuf.FreeSize; - } - else if (NULL != OutBuf.Buffer) - { - FREE(OutBuf.Buffer); - } - - return INF_STATUS_SUCCESS; -} - -INFSTATUS -InfpFindOrAddSection(PINFCACHE Cache, - PCTSTR Section, - PINFCONTEXT *Context) -{ - DPRINT("InfpFindOrAddSection section " STRFMT "\n", Section); - - *Context = MALLOC(sizeof(INFCONTEXT)); - if (NULL == *Context) - { - DPRINT1("MALLOC() failed\n"); - return INF_STATUS_NO_MEMORY; - } - - (*Context)->Inf = Cache; - (*Context)->Section = InfpFindSection(Cache, Section); - (*Context)->Line = NULL; - if (NULL == (*Context)->Section) - { - DPRINT("Section not found, creating it\n"); - (*Context)->Section = InfpAddSection(Cache, Section); - if (NULL == (*Context)->Section) - { - DPRINT("Failed to create section\n"); - FREE(*Context); - return INF_STATUS_NO_MEMORY; - } - } - - return INF_STATUS_SUCCESS; -} - -INFSTATUS -InfpAddLineWithKey(PINFCONTEXT Context, PCTSTR Key) -{ - if (NULL == Context) - { - DPRINT1("Invalid parameter\n"); - return INF_STATUS_INVALID_PARAMETER; - } - - Context->Line = InfpAddLine(Context->Section); - if (NULL == Context->Line) - { - DPRINT("Failed to create line\n"); - return INF_STATUS_NO_MEMORY; - } - - if (NULL != Key && NULL == InfpAddKeyToLine(Context->Line, Key)) - { - DPRINT("Failed to add key\n"); - return INF_STATUS_NO_MEMORY; - } - - return INF_STATUS_SUCCESS; -} - -INFSTATUS -InfpAddField(PINFCONTEXT Context, PCTSTR Data) -{ - if (NULL == Context || NULL == Context->Line) - { - DPRINT1("Invalid parameter\n"); - return INF_STATUS_INVALID_PARAMETER; - } - - if (NULL == InfpAddFieldToLine(Context->Line, Data)) - { - DPRINT("Failed to add field\n"); - return INF_STATUS_NO_MEMORY; - } - - return INF_STATUS_SUCCESS; -} - -/* EOF */ diff --git a/reactos/lib/inflib/infros.h b/reactos/lib/inflib/infros.h deleted file mode 100644 index 6a723739080..00000000000 --- a/reactos/lib/inflib/infros.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * PROJECT: .inf file parser - * LICENSE: GPL - See COPYING in the top level directory - * PROGRAMMER: Royce Mitchell III - * Eric Kohl - * Ge van Geldorp - */ - -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#include - -extern NTSTATUS InfOpenBufferedFile(PHINF InfHandle, - PVOID Buffer, - ULONG BufferSize, - PULONG ErrorLine); -extern NTSTATUS InfOpenFile(PHINF InfHandle, - PUNICODE_STRING FileName, - PULONG ErrorLine); -extern NTSTATUS InfWriteFile(HINF InfHandle, - PUNICODE_STRING FileName, - PUNICODE_STRING HeaderComment); -extern BOOLEAN InfFindFirstLine(HINF InfHandle, - PCWSTR Section, - PCWSTR Key, - PINFCONTEXT *Context); -extern BOOLEAN InfFindFirstMatchLine(PINFCONTEXT ContextIn, - PCWSTR Key, - PINFCONTEXT ContextOut); -extern BOOLEAN InfFindNextMatchLine(PINFCONTEXT ContextIn, - PCWSTR Key, - PINFCONTEXT ContextOut); -extern LONG InfGetLineCount(HINF InfHandle, - PCWSTR Section); -extern LONG InfGetFieldCount(PINFCONTEXT Context); -extern BOOLEAN InfGetIntField(PINFCONTEXT Context, - ULONG FieldIndex, - PINT IntegerValue); -extern BOOLEAN InfGetData(PINFCONTEXT Context, - PWCHAR *Key, - PWCHAR *Data); -extern BOOLEAN InfGetDataField(PINFCONTEXT Context, - ULONG FieldIndex, - PWCHAR *Data); -extern BOOLEAN InfFindOrAddSection(HINF InfHandle, - PCWSTR Section, - PINFCONTEXT *Context); -extern BOOLEAN InfAddLine(PINFCONTEXT Context, PCWSTR Key); -extern BOOLEAN InfAddField(PINFCONTEXT Context, PCWSTR Data); -extern VOID InfFreeContext(PINFCONTEXT Context); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -/* EOF */ diff --git a/reactos/lib/inflib/infrosgen.c b/reactos/lib/inflib/infrosgen.c deleted file mode 100644 index 197a3767523..00000000000 --- a/reactos/lib/inflib/infrosgen.c +++ /dev/null @@ -1,267 +0,0 @@ -/* - * PROJECT: .inf file parser - * LICENSE: GPL - See COPYING in the top level directory - * PROGRAMMER: Royce Mitchell III - * Eric Kohl - * Ge van Geldorp - */ - -/* INCLUDES *****************************************************************/ - -#include "inflib.h" -#include "infros.h" - -#define NDEBUG -#include - -/* PRIVATE FUNCTIONS ********************************************************/ - -static int InfpHeapRefCount; - -static VOID -CheckHeap() -{ - if (NULL == InfpHeap) - { - InfpHeap = RtlCreateHeap(HEAP_GROWABLE, NULL, 0, 0, NULL, NULL); - } - if (0 <= InfpHeapRefCount) - { - InfpHeapRefCount++; - } -} - - -/* PUBLIC FUNCTIONS *********************************************************/ - -PVOID InfpHeap; - -VOID -InfSetHeap(PVOID Heap) -{ - if (NULL == InfpHeap) - { - InfpHeap = Heap; - InfpHeapRefCount = -1; - } -} - - -NTSTATUS -InfOpenBufferedFile(PHINF InfHandle, - PVOID Buffer, - ULONG BufferSize, - PULONG ErrorLine) -{ - INFSTATUS Status; - PINFCACHE Cache; - PCHAR FileBuffer; - - CheckHeap(); - - *InfHandle = NULL; - *ErrorLine = (ULONG)-1; - - /* Allocate file buffer */ - FileBuffer = MALLOC(BufferSize + 1); - if (FileBuffer == NULL) - { - DPRINT1("MALLOC() failed\n"); - return(INF_STATUS_INSUFFICIENT_RESOURCES); - } - - MEMCPY(FileBuffer, Buffer, BufferSize); - - /* Append string terminator */ - FileBuffer[BufferSize] = 0; - - /* Allocate infcache header */ - Cache = (PINFCACHE)MALLOC(sizeof(INFCACHE)); - if (Cache == NULL) - { - DPRINT("MALLOC() failed\n"); - FREE(FileBuffer); - return(INF_STATUS_INSUFFICIENT_RESOURCES); - } - - /* Initialize inicache header */ - ZEROMEMORY(Cache, - sizeof(INFCACHE)); - - /* Parse the inf buffer */ - Status = InfpParseBuffer (Cache, - FileBuffer, - FileBuffer + BufferSize, - ErrorLine); - if (!INF_SUCCESS(Status)) - { - FREE(Cache); - Cache = NULL; - } - - /* Free file buffer */ - FREE(FileBuffer); - - *InfHandle = (HINF)Cache; - - return(Status); -} - - -NTSTATUS -InfOpenFile(PHINF InfHandle, - PUNICODE_STRING FileName, - PULONG ErrorLine) -{ - OBJECT_ATTRIBUTES ObjectAttributes; - FILE_STANDARD_INFORMATION FileInfo; - IO_STATUS_BLOCK IoStatusBlock; - HANDLE FileHandle; - NTSTATUS Status; - PCHAR FileBuffer; - ULONG FileLength; - LARGE_INTEGER FileOffset; - PINFCACHE Cache; - - CheckHeap(); - - *InfHandle = NULL; - *ErrorLine = (ULONG)-1; - - /* Open the inf file */ - InitializeObjectAttributes(&ObjectAttributes, - FileName, - 0, - NULL, - NULL); - - Status = NtOpenFile(&FileHandle, - GENERIC_READ | SYNCHRONIZE, - &ObjectAttributes, - &IoStatusBlock, - FILE_SHARE_READ, - FILE_SYNCHRONOUS_IO_NONALERT | FILE_NON_DIRECTORY_FILE); - if (!INF_SUCCESS(Status)) - { - DPRINT("NtOpenFile() failed (Status %lx)\n", Status); - return(Status); - } - - DPRINT("NtOpenFile() successful\n"); - - /* Query file size */ - Status = NtQueryInformationFile(FileHandle, - &IoStatusBlock, - &FileInfo, - sizeof(FILE_STANDARD_INFORMATION), - FileStandardInformation); - if (!INF_SUCCESS(Status)) - { - DPRINT("NtQueryInformationFile() failed (Status %lx)\n", Status); - NtClose(FileHandle); - return(Status); - } - - FileLength = FileInfo.EndOfFile.u.LowPart; - - DPRINT("File size: %lu\n", FileLength); - - /* Allocate file buffer */ - FileBuffer = MALLOC(FileLength + 1); - if (FileBuffer == NULL) - { - DPRINT1("MALLOC() failed\n"); - NtClose(FileHandle); - return(INF_STATUS_INSUFFICIENT_RESOURCES); - } - - /* Read file */ - FileOffset.QuadPart = 0ULL; - Status = NtReadFile(FileHandle, - NULL, - NULL, - NULL, - &IoStatusBlock, - FileBuffer, - FileLength, - &FileOffset, - NULL); - - /* Append string terminator */ - FileBuffer[FileLength] = 0; - - NtClose(FileHandle); - - if (!INF_SUCCESS(Status)) - { - DPRINT("NtReadFile() failed (Status %lx)\n", Status); - FREE(FileBuffer); - return(Status); - } - - /* Allocate infcache header */ - Cache = (PINFCACHE)MALLOC(sizeof(INFCACHE)); - if (Cache == NULL) - { - DPRINT("MALLOC() failed\n"); - FREE(FileBuffer); - return(INF_STATUS_INSUFFICIENT_RESOURCES); - } - - /* Initialize inicache header */ - ZEROMEMORY(Cache, - sizeof(INFCACHE)); - - /* Parse the inf buffer */ - Status = InfpParseBuffer (Cache, - FileBuffer, - FileBuffer + FileLength, - ErrorLine); - if (!INF_SUCCESS(Status)) - { - FREE(Cache); - Cache = NULL; - } - - /* Free file buffer */ - FREE(FileBuffer); - - *InfHandle = (HINF)Cache; - - return(Status); -} - - -VOID -InfCloseFile(HINF InfHandle) -{ - PINFCACHE Cache; - - Cache = (PINFCACHE)InfHandle; - - if (Cache == NULL) - { - return; - } - - while (Cache->FirstSection != NULL) - { - Cache->FirstSection = InfpFreeSection(Cache->FirstSection); - } - Cache->LastSection = NULL; - - FREE(Cache); - - if (0 < InfpHeapRefCount) - { - InfpHeapRefCount--; - if (0 == InfpHeapRefCount) - { - RtlDestroyHeap(InfpHeap); - InfpHeap = NULL; - } - } -} - - -/* EOF */ diff --git a/reactos/lib/inflib/infrosget.c b/reactos/lib/inflib/infrosget.c deleted file mode 100644 index ee919cb4288..00000000000 --- a/reactos/lib/inflib/infrosget.c +++ /dev/null @@ -1,140 +0,0 @@ -/* - * PROJECT: .inf file parser - * LICENSE: GPL - See COPYING in the top level directory - * PROGRAMMER: Royce Mitchell III - * Eric Kohl - * Ge van Geldorp - */ - -/* INCLUDES *****************************************************************/ - -#include "inflib.h" -#include "infros.h" - -#define NDEBUG -#include - - -BOOLEAN -InfFindFirstLine(HINF InfHandle, - PCWSTR Section, - PCWSTR Key, - PINFCONTEXT *Context) -{ - return INF_SUCCESS(InfpFindFirstLine(InfHandle, Section, Key, Context)); -} - - -BOOLEAN -InfFindNextLine(PINFCONTEXT ContextIn, - PINFCONTEXT ContextOut) -{ - return INF_SUCCESS(InfpFindNextLine(ContextIn, ContextOut)); -} - - -BOOLEAN -InfFindFirstMatchLine(PINFCONTEXT ContextIn, - PCWSTR Key, - PINFCONTEXT ContextOut) -{ - return INF_SUCCESS(InfpFindFirstMatchLine(ContextIn, Key, ContextOut)); -} - - -BOOLEAN -InfFindNextMatchLine(PINFCONTEXT ContextIn, - PCWSTR Key, - PINFCONTEXT ContextOut) -{ - return INF_SUCCESS(InfpFindNextMatchLine(ContextIn, Key, ContextOut)); -} - - -LONG -InfGetLineCount(HINF InfHandle, - PCWSTR Section) -{ - return InfpGetLineCount(InfHandle, Section); -} - - -/* InfGetLineText */ - - -LONG -InfGetFieldCount(PINFCONTEXT Context) -{ - return InfpGetFieldCount(Context); -} - - -BOOLEAN -InfGetBinaryField(PINFCONTEXT Context, - ULONG FieldIndex, - PUCHAR ReturnBuffer, - ULONG ReturnBufferSize, - PULONG RequiredSize) -{ - return INF_SUCCESS(InfpGetBinaryField(Context, FieldIndex, ReturnBuffer, - ReturnBufferSize, RequiredSize)); -} - - -BOOLEAN -InfGetIntField(PINFCONTEXT Context, - ULONG FieldIndex, - PINT IntegerValue) -{ - return INF_SUCCESS(InfpGetIntField(Context, FieldIndex, IntegerValue)); -} - - -BOOLEAN -InfGetMultiSzField(PINFCONTEXT Context, - ULONG FieldIndex, - PWSTR ReturnBuffer, - ULONG ReturnBufferSize, - PULONG RequiredSize) -{ - return INF_SUCCESS(InfpGetMultiSzField(Context, FieldIndex, ReturnBuffer, - ReturnBufferSize, RequiredSize)); -} - - -BOOLEAN -InfGetStringField(PINFCONTEXT Context, - ULONG FieldIndex, - PWSTR ReturnBuffer, - ULONG ReturnBufferSize, - PULONG RequiredSize) -{ - return INF_SUCCESS(InfpGetStringField(Context, FieldIndex, ReturnBuffer, - ReturnBufferSize, RequiredSize)); -} - - -BOOLEAN -InfGetData(PINFCONTEXT Context, - PWCHAR *Key, - PWCHAR *Data) -{ - return INF_SUCCESS(InfpGetData(Context, Key, Data)); -} - - -BOOLEAN -InfGetDataField (PINFCONTEXT Context, - ULONG FieldIndex, - PWCHAR *Data) -{ - return INF_SUCCESS(InfpGetDataField(Context, FieldIndex, Data)); -} - -VOID -InfFreeContext(PINFCONTEXT Context) -{ - InfpFreeContext(Context); -} - -/* EOF */ diff --git a/reactos/lib/inflib/infrosput.c b/reactos/lib/inflib/infrosput.c deleted file mode 100644 index 1785b28b00e..00000000000 --- a/reactos/lib/inflib/infrosput.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * PROJECT: .inf file parser - * LICENSE: GPL - See COPYING in the top level directory - * COPYRIGHT: Copyright 2005 Ge van Geldorp - */ - -/* INCLUDES *****************************************************************/ - -#include "inflib.h" -#include "infros.h" - -#define NDEBUG -#include - -NTSTATUS -InfWriteFile(HINF InfHandle, - PUNICODE_STRING FileName, - PUNICODE_STRING HeaderComment) -{ - OBJECT_ATTRIBUTES ObjectAttributes; - IO_STATUS_BLOCK IoStatusBlock; - HANDLE FileHandle; - NTSTATUS Status; - INFSTATUS InfStatus; - PCHAR Buffer; - ULONG BufferSize; - PCHAR HeaderBuffer; - ULONG HeaderBufferSize; - UINT Index; - - InfStatus = InfpBuildFileBuffer((PINFCACHE) InfHandle, &Buffer, &BufferSize); - if (! INF_SUCCESS(InfStatus)) - { - DPRINT("Failed to create buffer (Status 0x%lx)\n", InfStatus); - return InfStatus; - } - - /* Open the inf file */ - InitializeObjectAttributes(&ObjectAttributes, - FileName, - 0, - NULL, - NULL); - - Status = NtOpenFile(&FileHandle, - GENERIC_WRITE | SYNCHRONIZE, - &ObjectAttributes, - &IoStatusBlock, - 0, - FILE_SYNCHRONOUS_IO_NONALERT | FILE_NON_DIRECTORY_FILE); - if (!INF_SUCCESS(Status)) - { - DPRINT1("NtOpenFile() failed (Status %lx)\n", Status); - FREE(Buffer); - return Status; - } - - DPRINT("NtOpenFile() successful\n"); - - if (NULL != HeaderComment && 0 != HeaderComment->Length) - { - /* This is just a comment header, don't abort on errors here */ - HeaderBufferSize = HeaderComment->Length / sizeof(WCHAR) + 7; - HeaderBuffer = MALLOC(HeaderBufferSize); - if (NULL != HeaderBuffer) - { - strcpy(HeaderBuffer, "; "); - for (Index = 0; Index < HeaderComment->Length / sizeof(WCHAR); Index++) - { - HeaderBuffer[2 + Index] = (CHAR) HeaderComment->Buffer[Index]; - } - strcpy(HeaderBuffer + (2 + HeaderComment->Length / sizeof(WCHAR)), - "\r\n\r\n"); - NtWriteFile(FileHandle, - NULL, - NULL, - NULL, - &IoStatusBlock, - HeaderBuffer, - HeaderBufferSize, - NULL, - NULL); - FREE(HeaderBuffer); - } - } - - /* Write main contents */ - Status = NtWriteFile(FileHandle, - NULL, - NULL, - NULL, - &IoStatusBlock, - Buffer, - BufferSize, - NULL, - NULL); - - NtClose(FileHandle); - FREE(Buffer); - - if (!INF_SUCCESS(Status)) - { - DPRINT1("NtWriteFile() failed (Status %lx)\n", Status); - FREE(Buffer); - return(Status); - } - - return STATUS_SUCCESS; -} - -BOOLEAN -InfFindOrAddSection(HINF InfHandle, - PCWSTR Section, - PINFCONTEXT *Context) -{ - return INF_SUCCESS(InfpFindOrAddSection((PINFCACHE) InfHandle, - Section, Context)); -} - -BOOLEAN -InfHostAddLine(PINFCONTEXT Context, PCWSTR Key) -{ - return INF_SUCCESS(InfpAddLineWithKey(Context, Key)); -} - -BOOLEAN -InfHostAddField(PINFCONTEXT Context, PCWSTR Data) -{ - return INF_SUCCESS(InfpAddField(Context, Data)); -} - -/* EOF */