34 #include <gwenhywfar/text.h> 35 #include <gwenhywfar/debug.h> 36 #include <gwenhywfar/stringlist.h> 37 #include <gwenhywfar/xml.h> 38 #include <gwenhywfar/dbio_be.h> 39 #include <gwenhywfar/syncio_file.h> 44 #include <sys/types.h> 70 assert(tname && *tname);
73 if (strcasecmp(s,
"group")==0) {
88 else if (strcasecmp(s,
"var")==0) {
151 assert(vname && *vname);
166 if (strcasecmp(s,
"char")==0) {
174 else if (strcasecmp(s,
"int")==0) {
177 if (1!=sscanf(d,
"%i", &val)) {
189 else if (strcasecmp(s,
"bin")==0) {
213 "Unhandled value type \"%s\"", s);
243 const char *rootName=0;
268 "Root node in XML file is not \"%s\"", rootName);
277 "No root node in XML file");
451 "Unsupported variable type %d",
474 const char *rootName=0;
537 "File \"%s\" is not supported by this plugin",
547 "File \"%s\" is supported by this plugin",
577 const char *fileName)
struct GWEN_PLUGIN_MANAGER GWEN_PLUGIN_MANAGER
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
int GWEN_DBIO_XmlDb_Export(GWEN_DBIO *dbio, GWEN_SYNCIO *sio, GWEN_DB_NODE *data, GWEN_DB_NODE *cfg, GWEN_UNUSED uint32_t flags)
int GWEN_SyncIo_Connect(GWEN_SYNCIO *sio)
void GWEN_XMLNode_AddHeader(GWEN_XMLNODE *n, GWEN_XMLNODE *nh)
struct GWEN_DB_NODE GWEN_DB_NODE
struct GWEN_PLUGIN GWEN_PLUGIN
GWEN_DBIO * GWEN_DBIO_new(const char *name, const char *descr)
#define GWEN_XML_FLAGS_DEFAULT
#define GWEN_ERROR_INVALID
uint32_t GWEN_Buffer_GetUsedBytes(const GWEN_BUFFER *bf)
#define GWEN_SYNCIO_FILE_FLAGS_READ
#define GWEN_XML_FLAGS_SIMPLE
const char * GWEN_XMLNode_GetProperty(const GWEN_XMLNODE *n, const char *name, const char *defaultValue)
GWEN_XMLNODE * GWEN_XMLNode_GetNextData(const GWEN_XMLNODE *n)
GWEN_XMLNODE * GWEN_XMLNode_FindNextTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
int GWEN_SyncIo_Read(GWEN_SYNCIO *sio, uint8_t *buffer, uint32_t size)
int GWEN_DBIO__XmlDb_ImportVar(GWEN_UNUSED GWEN_DBIO *dbio, uint32_t flags, GWEN_DB_NODE *data, GWEN_UNUSED GWEN_DB_NODE *cfg, GWEN_XMLNODE *node)
GWEN_XMLNODE * GWEN_XMLNode_GetFirstData(const GWEN_XMLNODE *n)
uint32_t GWEN_DB_GetNodeFlags(const GWEN_DB_NODE *n)
void GWEN_XMLNode_SetProperty(GWEN_XMLNODE *n, const char *name, const char *value)
void GWEN_DBIO_SetCheckFileFn(GWEN_DBIO *dbio, GWEN_DBIO_CHECKFILEFN f)
GWEN_DB_NODE * GWEN_DB_GetNextValue(GWEN_DB_NODE *n)
int GWEN_DBIO_XmlDb__ExportVar(GWEN_UNUSED GWEN_DBIO *dbio, GWEN_DB_NODE *data, GWEN_XMLNODE *node)
GWENHYWFAR_API int GWEN_XMLNode_WriteToStream(const GWEN_XMLNODE *n, GWEN_XML_CONTEXT *ctx, GWEN_SYNCIO *sio)
void GWEN_DBIO_SetImportFn(GWEN_DBIO *dbio, GWEN_DBIO_IMPORTFN f)
GWEN_XMLNODE * GWEN_XMLNode_new(GWEN_XMLNODE_TYPE t, const char *data)
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
GWEN_DBIO_CHECKFILE_RESULT GWEN_DBIO_XmlDb_CheckFile(GWEN_DBIO *dbio, const char *fname)
void GWEN_Buffer_Reset(GWEN_BUFFER *bf)
int GWEN_DBIO_XmlDb__ExportGroup(GWEN_DBIO *dbio, GWEN_DB_NODE *data, GWEN_XMLNODE *node, const char *newName)
void GWEN_XmlCtx_free(GWEN_XML_CONTEXT *ctx)
#define GWEN_ERROR_BAD_DATA
GWEN_XMLNODE * GWEN_XMLNode_FindFirstTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
GWEN_DB_NODE * GWEN_DB_GetFirstVar(GWEN_DB_NODE *n)
int GWEN_DB_SetBinValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, const void *val, unsigned int valSize)
struct GWEN_SYNCIO GWEN_SYNCIO
#define DBG_DEBUG(dbg_logger, format, args...)
const char * GWEN_DB_GroupName(GWEN_DB_NODE *n)
GWEN_XMLNODE * GWEN_XMLNode_GetNextTag(const GWEN_XMLNODE *n)
GWEN_DB_NODE * GWEN_DB_GetNextGroup(GWEN_DB_NODE *n)
const void * GWEN_DB_GetBinValueFromNode(const GWEN_DB_NODE *n, unsigned int *size)
GWEN_XML_CONTEXT * GWEN_XmlCtxStore_new(GWEN_XMLNODE *n, uint32_t flags)
int GWEN_Buffer_AppendByte(GWEN_BUFFER *bf, char c)
const char * GWEN_DB_GetCharValue(GWEN_DB_NODE *n, const char *path, int idx, const char *defVal)
const char * GWEN_DB_VariableName(GWEN_DB_NODE *n)
GWEN_DBIO * GWEN_DBIO_XmlDb_Factory(GWEN_UNUSED GWEN_PLUGIN *pl)
int GWEN_Text_UnescapeXmlToBuffer(const char *src, GWEN_BUFFER *buf)
GWEN_DB_NODE * GWEN_DB_GetGroup(GWEN_DB_NODE *n, uint32_t flags, const char *path)
void GWEN_DBIO__XmlDb_ReadDataTags(GWEN_XMLNODE *node, GWEN_BUFFER *buf)
int GWEN_Text_EscapeXmlToBuffer(const char *src, GWEN_BUFFER *buf)
GWEN_PLUGIN * dbio_xmldb_factory(GWEN_PLUGIN_MANAGER *pm, const char *modName, const char *fileName)
void GWEN_Buffer_free(GWEN_BUFFER *bf)
void GWEN_XMLNode_free(GWEN_XMLNODE *n)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
void GWEN_SyncIo_free(GWEN_SYNCIO *sio)
void GWEN_SyncIo_AddFlags(GWEN_SYNCIO *sio, uint32_t fl)
void GWEN_DBIO_Plugin_SetFactoryFn(GWEN_PLUGIN *pl, GWEN_DBIO_PLUGIN_FACTORYFN f)
#define DBG_ERROR(dbg_logger, format, args...)
GWEN_XMLNODE * GWEN_XMLNode_GetFirstTag(const GWEN_XMLNODE *n)
const char * GWEN_XMLNode_GetData(const GWEN_XMLNODE *n)
struct GWEN_DBIO GWEN_DBIO
int GWEN_SyncIo_Disconnect(GWEN_SYNCIO *sio)
GWENHYWFAR_API int GWEN_XMLContext_ReadFromIo(GWEN_XML_CONTEXT *ctx, GWEN_SYNCIO *io)
void GWEN_DBIO_SetExportFn(GWEN_DBIO *dbio, GWEN_DBIO_EXPORTFN f)
int GWEN_Text_ComparePattern(const char *w, const char *p, int sensecase)
int GWEN_DB_SetCharValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, const char *val)
GWEN_DB_NODE * GWEN_DB_GetFirstValue(GWEN_DB_NODE *n)
GWEN_DBIO_CHECKFILE_RESULT
#define DBG_INFO(dbg_logger, format, args...)
GWEN_DB_NODE * GWEN_DB_GetNextVar(GWEN_DB_NODE *n)
#define GWEN_DB_NODE_FLAGS_VOLATILE
#define GWEN_XML_FLAGS_HANDLE_HEADERS
GWENHYWFAR_API GWEN_SYNCIO * GWEN_SyncIo_File_new(const char *path, GWEN_SYNCIO_FILE_CREATIONMODE cm)
GWEN_DB_NODE * GWEN_DB_GetFirstGroup(GWEN_DB_NODE *n)
int GWEN_DB_SetIntValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, int val)
int GWEN_DBIO__XmlDb_ImportGroup(GWEN_DBIO *dbio, uint32_t flags, GWEN_DB_NODE *data, GWEN_DB_NODE *cfg, GWEN_XMLNODE *node)
int GWEN_DB_GetIntValueFromNode(const GWEN_DB_NODE *n)
int GWEN_Text_FromHexBuffer(const char *src, GWEN_BUFFER *buf)
int GWEN_DBIO_XmlDb_Import(GWEN_DBIO *dbio, GWEN_SYNCIO *sio, GWEN_DB_NODE *data, GWEN_DB_NODE *cfg, uint32_t flags)
int GWEN_Text_ToHexBuffer(const char *src, unsigned l, GWEN_BUFFER *buf, unsigned int groupsize, char delimiter, int skipLeadingZeroes)
struct GWEN__XMLNODE GWEN_XMLNODE
struct GWEN_XML_CONTEXT GWEN_XML_CONTEXT
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
GWEN_DB_NODE_TYPE GWEN_DB_GetValueType(GWEN_DB_NODE *n)
void GWEN_XMLNode_AddChild(GWEN_XMLNODE *n, GWEN_XMLNODE *child)
GWEN_PLUGIN * GWEN_DBIO_Plugin_new(GWEN_PLUGIN_MANAGER *pm, const char *name, const char *fileName)
const char * GWEN_DB_GetCharValueFromNode(const GWEN_DB_NODE *n)