35 x=(
unsigned char)*src;
52 c=(((
unsigned char)(*src))>>4)&0xf;
57 c=((
unsigned char)(*src))&0xf;
85 if (isxdigit((
int)src[1]) && isxdigit((
int)src[2])) {
89 d1=(
unsigned char)(toupper(*src));
93 d2=(
unsigned char)(toupper(*src));
198 n=GWEN_DB_Node_List_First(node->children);
221 for (i=0; i<insert; i++) {
257 for (i=0; i<insert; i++) {
286 if (GWEN_DB_Node_List_Next(n)) {
301 cn=GWEN_DB_Node_List_First(n->children);
312 char *binbuffer=
NULL;
314 const char *pvalue=
NULL;
320 pvalue=cn->data.dataChar;
345 bbsize=cn->dataSize*2+1;
373 for (i=0; i<insert; i++) {
468 cn=GWEN_DB_Node_List_Next(cn);
489 n=GWEN_DB_Node_List_Next(n);
550 "Could not apply lock to file \"%s\" (%d)",
608 "Could not remove lock on file \"%s\" (%d)",
621 const char *typeName,
634 if (strcasecmp(typeName,
"int")==0)
636 else if (strcasecmp(typeName,
"char")==0)
638 else if (strcasecmp(typeName,
"bin")==0)
657 while (*p && isspace(*p))
708 if (*p==
',' || *p==
';' || *p==
'#')
726 if (1!=sscanf(v,
"%d", &i)) {
758 while (*p && isspace(*p))
760 if (!*p || *p==
';' || *p==
'#')
818 while (*p && isspace(*p))
844 while (*p && !isspace(*p) &&
861 while (*p && isspace(*p))
893 else if (*p==
'=' || *p==
':') {
905 else if (*p==
',' || *p==
';') {
930 while (*p && isspace(*p))
939 if (*p!=
'=' && *p!=
':') {
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
void GWEN_Buffer_Reset(GWEN_BUFFER *bf)
void GWEN_Buffer_Dump(GWEN_BUFFER *bf, unsigned int insert)
void GWEN_Buffer_free(GWEN_BUFFER *bf)
uint32_t GWEN_Buffer_GetUsedBytes(const GWEN_BUFFER *bf)
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
int GWEN_Buffer_AppendByte(GWEN_BUFFER *bf, char c)
GWEN_DB_NODE * GWEN_DB_GetNode(GWEN_DB_NODE *n, const char *path, uint32_t flags)
GWEN_DB_NODE * GWEN_DB_ValueInt_new(int data)
GWEN_DB_NODE * GWEN_DB_GetGroup(GWEN_DB_NODE *n, uint32_t flags, const char *path)
void GWEN_DB_Node_Append(GWEN_DB_NODE *parent, GWEN_DB_NODE *n)
GWEN_DB_NODE * GWEN_DB_ValueChar_new(const char *data)
GWEN_DB_NODE * GWEN_DB_ValueBin_new(const void *data, unsigned int datasize)
#define GWEN_DB_FLAGS_QUOTE_VALUES
#define GWEN_DB_DEFAULT_LOCK_TIMEOUT
#define GWEN_DB_FLAGS_WRITE_SUBGROUPS
#define GWEN_DB_NODE_FLAGS_VOLATILE
#define GWEN_DB_FLAGS_DETAILED_GROUPS
#define GWEN_DB_FLAGS_OMIT_TYPES
#define GWEN_DB_FLAGS_ADD_GROUP_NEWLINES
#define GWEN_DB_FLAGS_ESCAPE_CHARVALUES
#define GWEN_DB_FLAGS_INDEND
#define GWEN_DB_FLAGS_UNTIL_EMPTY_LINE
@ GWEN_DB_NodeType_ValueInt
@ GWEN_DB_NodeType_ValueChar
@ GWEN_DB_NodeType_ValuePtr
@ GWEN_DB_NodeType_ValueBin
#define GWEN_DB_FLAGS_DOSMODE
#define GWEN_DB_FLAGS_USE_COLON
#define GWEN_DB_FLAGS_LOCKFILE
#define GWEN_DB_FLAGS_QUOTE_VARNAMES
#define GWEN_DB_FLAGS_APPEND_FILE
struct GWEN_DB_NODE GWEN_DB_NODE
#define GWEN_DB_FLAGS_ALLOW_EMPTY_STREAM
int GWEN_DBIO_ExportToFile(GWEN_DBIO *dbio, const char *fname, GWEN_DB_NODE *db, GWEN_DB_NODE *params, uint32_t dbflags)
int GWEN_DBIO_Import(GWEN_DBIO *dbio, GWEN_SYNCIO *sio, GWEN_DB_NODE *db, GWEN_DB_NODE *params, uint32_t flags)
GWEN_DBIO * GWEN_DBIO_GetPlugin(const char *modname)
struct GWEN_DBIO GWEN_DBIO
int GWEN_DB_EscapeToBufferTolerant(const char *src, GWEN_BUFFER *buf)
int GWEN_DB_ReadFromIo(GWEN_DB_NODE *n, GWEN_SYNCIO *sio, uint32_t dbflags)
int GWEN_DB__ReadValues(GWEN_DB_NODE *n, uint32_t dbflags, const char *typeName, const char *varName, uint8_t *p)
int GWEN_DB_WriteFileAs(GWEN_DB_NODE *db, const char *fname, const char *type, GWEN_DB_NODE *params, uint32_t dbflags)
int GWEN_DB_ReadFromString(GWEN_DB_NODE *n, const char *str, int len, uint32_t dbflags)
int GWEN_DB_UnescapeToBufferTolerant(const char *src, GWEN_BUFFER *buf)
int GWEN_DB_WriteToFastBuffer(GWEN_DB_NODE *node, GWEN_FAST_BUFFER *fb, uint32_t dbflags)
int GWEN_DB_ReadFileAs(GWEN_DB_NODE *db, const char *fname, const char *type, GWEN_DB_NODE *params, uint32_t dbflags)
int GWEN_DB_ReadFile(GWEN_DB_NODE *n, const char *fname, uint32_t dbflags)
int GWEN_DB_ReadFromFastBuffer(GWEN_DB_NODE *n, GWEN_FAST_BUFFER *fb, uint32_t dbflags)
int GWEN_DB_WriteFile(GWEN_DB_NODE *n, const char *fname, uint32_t dbflags)
int GWEN_DB_WriteToIo(GWEN_DB_NODE *node, GWEN_SYNCIO *sio, uint32_t dbflags)
int GWEN_DB_WriteToBuffer(GWEN_DB_NODE *n, GWEN_BUFFER *buf, uint32_t dbflags)
int GWEN_DB_WriteGroupToIoLayer(GWEN_DB_NODE *node, GWEN_FAST_BUFFER *fb, uint32_t dbflags, int insert)
#define DBG_DEBUG(dbg_logger, format, args...)
#define DBG_WARN(dbg_logger, format, args...)
#define DBG_VERBOUS(dbg_logger, format, args...)
#define DBG_INFO(dbg_logger, format, args...)
#define DBG_ERROR(dbg_logger, format, args...)
#define GWEN_ERROR_BAD_DATA
#define GWEN_ERROR_GENERIC
#define GWEN_ERROR_NOT_SUPPORTED
void GWEN_FastBuffer_free(GWEN_FAST_BUFFER *fb)
GWEN_FAST_BUFFER * GWEN_FastBuffer_new(uint32_t bsize, GWEN_SYNCIO *io)
int GWEN_FastBuffer_ReadLineToBuffer(GWEN_FAST_BUFFER *fb, GWEN_BUFFER *buf)
void GWEN_FastBuffer_AddFlags(GWEN_FAST_BUFFER *fb, uint32_t fl)
#define GWEN_FAST_BUFFER_FLAGS_DOSMODE
#define GWEN_FASTBUFFER_WRITEBYTE(fb, var, chr)
#define GWEN_FASTBUFFER_FLUSH(fb, var)
#define GWEN_FASTBUFFER_WRITELINE(fb, var, p)
#define GWEN_FASTBUFFER_WRITEFORCED(fb, var, p, len)
GWENHYWFAR_API void GWEN_FSLock_free(GWEN_FSLOCK *fl)
struct GWEN_FSLOCK GWEN_FSLOCK
GWENHYWFAR_API GWEN_FSLOCK * GWEN_FSLock_new(const char *fname, GWEN_FSLOCK_TYPE t)
GWENHYWFAR_API GWEN_FSLOCK_RESULT GWEN_FSLock_Lock(GWEN_FSLOCK *fl, int timeout, uint32_t gid)
GWENHYWFAR_API GWEN_FSLOCK_RESULT GWEN_FSLock_Unlock(GWEN_FSLOCK *fl)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
void * GWEN_Memory_malloc(size_t wsize)
void GWEN_Memory_dealloc(void *p)
#define GWEN_PATH_FLAGS_VARIABLE
int GWEN_SyncIo_Connect(GWEN_SYNCIO *sio)
void GWEN_SyncIo_AddFlags(GWEN_SYNCIO *sio, uint32_t fl)
void GWEN_SyncIo_free(GWEN_SYNCIO *sio)
int GWEN_SyncIo_Disconnect(GWEN_SYNCIO *sio)
struct GWEN_SYNCIO GWEN_SYNCIO
@ GWEN_SyncIo_File_CreationMode_CreateAlways
@ GWEN_SyncIo_File_CreationMode_OpenExisting
#define GWEN_SYNCIO_FILE_FLAGS_UWRITE
GWENHYWFAR_API GWEN_SYNCIO * GWEN_SyncIo_File_new(const char *path, GWEN_SYNCIO_FILE_CREATIONMODE cm)
#define GWEN_SYNCIO_FILE_FLAGS_READ
#define GWEN_SYNCIO_FILE_FLAGS_UREAD
#define GWEN_SYNCIO_FILE_FLAGS_APPEND
#define GWEN_SYNCIO_FILE_FLAGS_WRITE
GWEN_SYNCIO * GWEN_SyncIo_Memory_new(GWEN_BUFFER *buffer, int take)
GWEN_SYNCIO * GWEN_SyncIo_Memory_fromBuffer(const uint8_t *buffer, int size)
int GWEN_Text_EscapeToBufferTolerant(const char *src, GWEN_BUFFER *buf)
int GWEN_Text_FromHexBuffer(const char *src, GWEN_BUFFER *buf)
char * GWEN_Text_ToHex(const char *src, unsigned l, char *buffer, unsigned int maxsize)
int GWEN_Text_NumToString(int num, char *buffer, unsigned int bufsize, int fillchar)