gwenhywfar  5.10.1
Functions
parser.c File Reference
#include "gwenbuild/parser/parser.h"
#include "gwenbuild/parser/p_project.h"
#include "gwenbuild/utils.h"
#include <gwenhywfar/debug.h>
#include <gwenhywfar/syncio.h>
#include <gwenhywfar/process.h>
#include <gwenhywfar/directory.h>
#include <gwenhywfar/text.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
Include dependency graph for parser.c:

Go to the source code of this file.

Functions

static void _addBuildFileNameToGwBuild (GWENBUILD *gwbuild, const GWB_CONTEXT *currentContext, const char *fileName)
 
static void _appendVarValue (GWEN_DB_NODE *db, const char *name, const char *newValue)
 
static int _getAndCheckRequiredGwenVersion (GWEN_XMLNODE *xmlGwbuildNode)
 
static int _getFilePermissions (const char *fname)
 
static GWEN_BUFFER_getSourcePathForFileName (const GWB_CONTEXT *currentContext, const char *fileName)
 
static int _parseIfNotVarHasValue (GWB_PROJECT *project, GWB_CONTEXT *currentContext, GWEN_XMLNODE *n, GWB_PARSER_PARSE_ELEMENT_FN fn)
 
static int _parseIfNotVarMatches (GWB_PROJECT *project, GWB_CONTEXT *currentContext, GWEN_XMLNODE *n, GWB_PARSER_PARSE_ELEMENT_FN fn)
 
static int _parseIfVarHasValue (GWB_PROJECT *project, GWB_CONTEXT *currentContext, GWEN_XMLNODE *n, GWB_PARSER_PARSE_ELEMENT_FN fn)
 
static int _parseIfVarMatches (GWB_PROJECT *project, GWB_CONTEXT *currentContext, GWEN_XMLNODE *n, GWB_PARSER_PARSE_ELEMENT_FN fn)
 
static int _parseSetVar (GWB_CONTEXT *currentContext, GWEN_XMLNODE *xmlNode)
 
static int _parseSubdir (GWB_PROJECT *project, GWB_CONTEXT *currentContext, const char *sFolder, GWB_PARSER_PARSE_ELEMENT_FN fn)
 
static int _parseWriteFile (GWB_PROJECT *project, GWB_CONTEXT *currentContext, GWEN_XMLNODE *xmlNode)
 
static int _readModifyWriteFile (GWEN_XMLNODE *xmlNode, GWEN_DB_NODE *dbContextVars, const char *sSourceFile, const char *sDestFile)
 
static int _setFilePermissions (const char *fname, int perms)
 
static int _varHasValue (GWB_CONTEXT *currentContext, GWEN_XMLNODE *xmlNode)
 
GWB_TARGETGWB_Parser_AddTargetForSourceFile (GWB_PROJECT *project, GWB_CONTEXT *currentContext, GWBUILD_TARGETTYPE targetType, const char *fileName, const char *fileType, const char *builderName, const char *installPath)
 
GWB_CONTEXTGWB_Parser_CopyContextForSubdir (const GWB_CONTEXT *sourceContext, const char *folder)
 
GWB_CONTEXTGWB_Parser_CopyContextForTarget (const GWB_CONTEXT *sourceContext)
 
int GWB_Parser_ParseSourcesOrHeaders (GWB_PROJECT *project, GWB_CONTEXT *currentContext, GWEN_XMLNODE *xmlNode, uint32_t fileFlags, const char *defaultTypeName, const char *defaultBuilder)
 
int GWB_Parser_ParseSubdirs (GWB_PROJECT *project, GWB_CONTEXT *currentContext, GWEN_XMLNODE *xmlNode, GWB_PARSER_PARSE_ELEMENT_FN fn)
 
int GWB_Parser_ParseWellKnownElements (GWB_PROJECT *project, GWB_CONTEXT *currentContext, GWEN_XMLNODE *n, GWB_PARSER_PARSE_ELEMENT_FN fn)
 
GWEN_XMLNODEGWB_Parser_ReadBuildFile (GWENBUILD *gwbuild, const GWB_CONTEXT *currentContext, const char *fileName)
 
GWB_PROJECTGWB_Parser_ReadBuildTree (GWENBUILD *gwbuild, GWB_CONTEXT *currentContext, const char *srcDir, GWB_KEYVALUEPAIR_LIST *givenOptionList)
 
GWEN_BUFFERGWB_Parser_ReadNamedXmlDataIntoBufferAndExpand (GWEN_DB_NODE *db, GWEN_XMLNODE *xmlNode, const char *elem)
 
GWEN_BUFFERGWB_Parser_ReadXmlDataIntoBufferAndExpand (GWEN_DB_NODE *db, GWEN_XMLNODE *xmlNode)
 
GWEN_STRINGLISTGWB_Parser_ReadXmlDataIntoStringList (GWEN_DB_NODE *db, GWEN_XMLNODE *xmlNode)
 
int GWB_Parser_ReplaceVarsBetweenAtSigns (const char *s, GWEN_BUFFER *dbuf, GWEN_DB_NODE *db)
 
void GWB_Parser_SetItemValue (GWEN_DB_NODE *db, const char *sId, const char *suffix, const char *value)
 

Function Documentation

◆ _addBuildFileNameToGwBuild()

void _addBuildFileNameToGwBuild ( GWENBUILD gwbuild,
const GWB_CONTEXT currentContext,
const char *  fileName 
)
static

Definition at line 231 of file parser.c.

References GWB_Context_GetCurrentBuildDir(), GWB_Context_GetInitialSourceDir(), GWBUILD_AddBuildFilename(), GWEN_Buffer_AppendString(), GWEN_Buffer_free(), GWEN_Buffer_GetStart(), GWEN_Buffer_new(), and GWEN_DIR_SEPARATOR_S.

Referenced by GWB_Parser_ReadBuildFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _appendVarValue()

void _appendVarValue ( GWEN_DB_NODE db,
const char *  name,
const char *  newValue 
)
static

Definition at line 835 of file parser.c.

References GWEN_Buffer_AppendString(), GWEN_Buffer_free(), GWEN_Buffer_GetStart(), GWEN_Buffer_new(), GWEN_DB_FLAGS_OVERWRITE_VARS, GWEN_DB_GetCharValue(), GWEN_DB_SetCharValue(), and NULL.

Referenced by _parseSetVar().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _getAndCheckRequiredGwenVersion()

int _getAndCheckRequiredGwenVersion ( GWEN_XMLNODE xmlGwbuildNode)
static

Definition at line 253 of file parser.c.

References DBG_ERROR, GWB_Utils_VersionStringToInt(), GWEN_ERROR_GENERIC, GWEN_XMLNode_GetProperty(), GWENHYWFAR_VERSION_BUILD, GWENHYWFAR_VERSION_MAJOR, GWENHYWFAR_VERSION_MINOR, GWENHYWFAR_VERSION_PATCHLEVEL, and NULL.

Referenced by GWB_Parser_ReadBuildFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _getFilePermissions()

int _getFilePermissions ( const char *  fname)
static

Definition at line 803 of file parser.c.

References DBG_ERROR, GWEN_ERROR_IO, and NULL.

Referenced by _readModifyWriteFile().

Here is the caller graph for this function:

◆ _getSourcePathForFileName()

GWEN_BUFFER * _getSourcePathForFileName ( const GWB_CONTEXT currentContext,
const char *  fileName 
)
static

Definition at line 214 of file parser.c.

References GWB_Context_GetCurrentSourceDir(), GWEN_Buffer_AppendString(), GWEN_Buffer_new(), and GWEN_DIR_SEPARATOR_S.

Referenced by _parseWriteFile(), and GWB_Parser_ReadBuildFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _parseIfNotVarHasValue()

int _parseIfNotVarHasValue ( GWB_PROJECT project,
GWB_CONTEXT currentContext,
GWEN_XMLNODE n,
GWB_PARSER_PARSE_ELEMENT_FN  fn 
)
static

Definition at line 627 of file parser.c.

References _varHasValue(), GWEN_XMLNode_FindFirstTag(), and NULL.

Referenced by GWB_Parser_ParseWellKnownElements().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _parseIfNotVarMatches()

int _parseIfNotVarMatches ( GWB_PROJECT project,
GWB_CONTEXT currentContext,
GWEN_XMLNODE n,
GWB_PARSER_PARSE_ELEMENT_FN  fn 
)
static

Definition at line 549 of file parser.c.

References DBG_ERROR, DBG_INFO, GWB_Context_GetVars(), GWEN_DB_GetCharValue(), GWEN_ERROR_GENERIC, GWEN_Text_ComparePattern(), GWEN_XMLNode_FindFirstTag(), GWEN_XMLNode_GetProperty(), and NULL.

Referenced by GWB_Parser_ParseWellKnownElements().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _parseIfVarHasValue()

int _parseIfVarHasValue ( GWB_PROJECT project,
GWB_CONTEXT currentContext,
GWEN_XMLNODE n,
GWB_PARSER_PARSE_ELEMENT_FN  fn 
)
static

Definition at line 604 of file parser.c.

References _varHasValue(), GWEN_XMLNode_FindFirstTag(), and NULL.

Referenced by GWB_Parser_ParseWellKnownElements().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _parseIfVarMatches()

int _parseIfVarMatches ( GWB_PROJECT project,
GWB_CONTEXT currentContext,
GWEN_XMLNODE n,
GWB_PARSER_PARSE_ELEMENT_FN  fn 
)
static

Definition at line 494 of file parser.c.

References DBG_ERROR, DBG_INFO, GWB_Context_GetVars(), GWEN_DB_GetCharValue(), GWEN_ERROR_GENERIC, GWEN_Text_ComparePattern(), GWEN_XMLNode_FindFirstTag(), GWEN_XMLNode_GetProperty(), and NULL.

Referenced by GWB_Parser_ParseWellKnownElements().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _parseSetVar()

int _parseSetVar ( GWB_CONTEXT currentContext,
GWEN_XMLNODE xmlNode 
)
static

◆ _parseSubdir()

int _parseSubdir ( GWB_PROJECT project,
GWB_CONTEXT currentContext,
const char *  sFolder,
GWB_PARSER_PARSE_ELEMENT_FN  fn 
)
static

◆ _parseWriteFile()

int _parseWriteFile ( GWB_PROJECT project,
GWB_CONTEXT currentContext,
GWEN_XMLNODE xmlNode 
)
static

◆ _readModifyWriteFile()

int _readModifyWriteFile ( GWEN_XMLNODE xmlNode,
GWEN_DB_NODE dbContextVars,
const char *  sSourceFile,
const char *  sDestFile 
)
static

◆ _setFilePermissions()

int _setFilePermissions ( const char *  fname,
int  perms 
)
static

Definition at line 823 of file parser.c.

References DBG_ERROR, GWEN_ERROR_IO, and NULL.

Referenced by _readModifyWriteFile().

Here is the caller graph for this function:

◆ _varHasValue()

int _varHasValue ( GWB_CONTEXT currentContext,
GWEN_XMLNODE xmlNode 
)
static

Definition at line 650 of file parser.c.

References DBG_ERROR, GWB_Context_GetVars(), GWEN_DB_GetCharValue(), GWEN_ERROR_GENERIC, GWEN_Text_ComparePattern(), GWEN_XMLNode_GetProperty(), and NULL.

Referenced by _parseIfNotVarHasValue(), and _parseIfVarHasValue().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWB_Parser_AddTargetForSourceFile()

GWB_TARGET* GWB_Parser_AddTargetForSourceFile ( GWB_PROJECT project,
GWB_CONTEXT currentContext,
GWBUILD_TARGETTYPE  targetType,
const char *  fileName,
const char *  fileType,
const char *  builderName,
const char *  installPath 
)

◆ GWB_Parser_CopyContextForSubdir()

GWB_CONTEXT* GWB_Parser_CopyContextForSubdir ( const GWB_CONTEXT sourceContext,
const char *  folder 
)

◆ GWB_Parser_CopyContextForTarget()

GWB_CONTEXT* GWB_Parser_CopyContextForTarget ( const GWB_CONTEXT sourceContext)

Definition at line 153 of file parser.c.

References GWB_Context_ClearDefineList(), GWB_Context_ClearIncludeList(), GWB_Context_ClearSourceFileList2(), and GWB_Context_dup().

Referenced by GWB_Parser_AddTargetForSourceFile(), and GWB_ParseTarget().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWB_Parser_ParseSourcesOrHeaders()

int GWB_Parser_ParseSourcesOrHeaders ( GWB_PROJECT project,
GWB_CONTEXT currentContext,
GWEN_XMLNODE xmlNode,
uint32_t  fileFlags,
const char *  defaultTypeName,
const char *  defaultBuilder 
)

◆ GWB_Parser_ParseSubdirs()

int GWB_Parser_ParseSubdirs ( GWB_PROJECT project,
GWB_CONTEXT currentContext,
GWEN_XMLNODE xmlNode,
GWB_PARSER_PARSE_ELEMENT_FN  fn 
)

◆ GWB_Parser_ParseWellKnownElements()

int GWB_Parser_ParseWellKnownElements ( GWB_PROJECT project,
GWB_CONTEXT currentContext,
GWEN_XMLNODE n,
GWB_PARSER_PARSE_ELEMENT_FN  fn 
)

Definition at line 942 of file parser.c.

References _parseIfNotVarHasValue(), _parseIfNotVarMatches(), _parseIfVarHasValue(), _parseIfVarMatches(), _parseSetVar(), _parseWriteFile(), DBG_DEBUG, DBG_ERROR, GWEN_LOGDOMAIN, GWEN_XMLNode_GetData(), and NULL.

Referenced by _parseChildNodes().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWB_Parser_ReadBuildFile()

GWEN_XMLNODE* GWB_Parser_ReadBuildFile ( GWENBUILD gwbuild,
const GWB_CONTEXT currentContext,
const char *  fileName 
)

◆ GWB_Parser_ReadBuildTree()

GWB_PROJECT* GWB_Parser_ReadBuildTree ( GWENBUILD gwbuild,
GWB_CONTEXT currentContext,
const char *  srcDir,
GWB_KEYVALUEPAIR_LIST *  givenOptionList 
)

◆ GWB_Parser_ReadNamedXmlDataIntoBufferAndExpand()

GWEN_BUFFER* GWB_Parser_ReadNamedXmlDataIntoBufferAndExpand ( GWEN_DB_NODE db,
GWEN_XMLNODE xmlNode,
const char *  elem 
)

Definition at line 345 of file parser.c.

References GWB_Parser_ReadXmlDataIntoBufferAndExpand(), GWEN_Buffer_free(), GWEN_Buffer_GetUsedBytes(), GWEN_XMLNode_FindFirstTag(), and NULL.

Referenced by GWB_ParseOption().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWB_Parser_ReadXmlDataIntoBufferAndExpand()

GWEN_BUFFER* GWB_Parser_ReadXmlDataIntoBufferAndExpand ( GWEN_DB_NODE db,
GWEN_XMLNODE xmlNode 
)

◆ GWB_Parser_ReadXmlDataIntoStringList()

GWEN_STRINGLIST* GWB_Parser_ReadXmlDataIntoStringList ( GWEN_DB_NODE db,
GWEN_XMLNODE xmlNode 
)

◆ GWB_Parser_ReplaceVarsBetweenAtSigns()

int GWB_Parser_ReplaceVarsBetweenAtSigns ( const char *  s,
GWEN_BUFFER dbuf,
GWEN_DB_NODE db 
)

Definition at line 873 of file parser.c.

References DBG_ERROR, DBG_INFO, DBG_WARN, GWEN_Buffer_AppendByte(), GWEN_Buffer_AppendString(), GWEN_DB_Dump(), GWEN_DB_GetCharValue(), GWEN_ERROR_BAD_DATA, GWEN_LOGDOMAIN, and NULL.

Referenced by _readModifyWriteFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWB_Parser_SetItemValue()

void GWB_Parser_SetItemValue ( GWEN_DB_NODE db,
const char *  sId,
const char *  suffix,
const char *  value 
)

Definition at line 856 of file parser.c.

References GWEN_Buffer_AppendString(), GWEN_Buffer_free(), GWEN_Buffer_GetStart(), GWEN_Buffer_new(), GWEN_DB_FLAGS_OVERWRITE_VARS, and GWEN_DB_SetCharValue().

Referenced by _callPkgConfig(), _checkVersion(), _parseLib(), _parseProg(), _setVarFunctionExists(), and _setVarHeaderExists().

Here is the call graph for this function:
Here is the caller graph for this function: