34#include <gwenhywfar/text.h>
35#include <gwenhywfar/debug.h>
36#include <gwenhywfar/stringlist.h>
37#include <gwenhywfar/dbio_be.h>
38#include <gwenhywfar/syncio_file.h>
39#include <gwenhywfar/fastbuffer.h>
57# define PRI_SIZET PRIu64
59# define PRI_SIZET PRIu32
62# define PRI_SIZET "zd"
86 while (*g && (
unsigned char)(*g)<33)
94 while (*s && (
unsigned char)(*s)<33)
98 while ((
unsigned char)(*s)>31 && i && *s!=
']' && *s!=
'#') {
116 DBG_DEBUG(0,
"Group \"%s\" is not available", name);
123 while (*s && (
unsigned char)(*s)<33)
127 while ((
unsigned char)(*s)>31 && i-- && *s!=
'=' && *s!=
'#') {
142 if ((
unsigned char)(name[i])<33)
151 if (name[i-1]==
'"' &&
158 if ((
unsigned char)(*s)<31 || *s==
'#') {
171 DBG_ERROR(0,
"Variable name must not be empty");
182 while ((
unsigned char)(*s)>31) {
186 while (*s && (
unsigned char)(*s)<33)
208 while (*s && (
unsigned char)(*s)<33)
213 i=GWEN_DBIO_OLDDB_MAXVALUE_LEN-1;
214 while ((
unsigned char)(*s)>31 && i) {
230 else if (*s==
'#' && !(quotes&1))
232 else if (*s==
',' && !(quotes&1))
242 DBG_ERROR(0,
"Value is too long (limit is %d chars)",
243 GWEN_DBIO_OLDDB_MAXVALUE_LEN-1);
248 DBG_ERROR(0,
"Unbalanced quotation marks");
253 DBG_WARN(0,
"Backslash at the end of the line");
262 if ((
unsigned char)(vp[i])<33)
331 DBG_ERROR(0,
"Error in input stream (line %d)", ln);
392 dbio=
GWEN_DBIO_new(
"OldDb",
"Imports and exports Old OpenHBCI data");
403 const char *fileName)
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_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_Group_new(const char *name)
GWEN_DB_NODE * GWEN_DB_GetGroup(GWEN_DB_NODE *n, uint32_t flags, const char *path)
int GWEN_DB_SetCharValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, const char *val)
void GWEN_DB_Group_free(GWEN_DB_NODE *n)
#define GWEN_DB_FLAGS_DEFAULT
struct GWEN_DB_NODE GWEN_DB_NODE
GWEN_PLUGIN * GWEN_DBIO_Plugin_new(GWEN_PLUGIN_MANAGER *pm, const char *name, const char *fileName)
void GWEN_DBIO_SetCheckFileFn(GWEN_DBIO *dbio, GWEN_DBIO_CHECKFILEFN f)
void GWEN_DBIO_SetImportFn(GWEN_DBIO *dbio, GWEN_DBIO_IMPORTFN f)
GWEN_DBIO * GWEN_DBIO_new(const char *name, const char *descr)
void GWEN_DBIO_Plugin_SetFactoryFn(GWEN_PLUGIN *pl, GWEN_DBIO_PLUGIN_FACTORYFN f)
void GWEN_DBIO_SetExportFn(GWEN_DBIO *dbio, GWEN_DBIO_EXPORTFN f)
GWEN_DBIO_CHECKFILE_RESULT
@ GWEN_DBIO_CheckFileResultUnknown
@ GWEN_DBIO_CheckFileResultNotOk
struct GWEN_DBIO GWEN_DBIO
#define DBG_VERBOUS(dbg_logger, format,...)
#define DBG_INFO(dbg_logger, format,...)
#define DBG_ERROR(dbg_logger, format,...)
#define DBG_ERROR_ERR(dbg_logger, dbg_err)
#define DBG_WARN(dbg_logger, format,...)
#define DBG_DEBUG(dbg_logger, format,...)
#define GWEN_ERROR_BAD_DATA
#define GWEN_ERROR_GENERIC
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)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
int GWEN_DBIO_OldDb_Import(GWEN_UNUSED GWEN_DBIO *dbio, GWEN_SYNCIO *sio, GWEN_DB_NODE *data, GWEN_UNUSED GWEN_DB_NODE *cfg, uint32_t flags)
int GWEN_DBIO_OldDb_Export(GWEN_UNUSED GWEN_DBIO *dbio, GWEN_UNUSED GWEN_SYNCIO *sio, GWEN_UNUSED GWEN_DB_NODE *data, GWEN_UNUSED GWEN_DB_NODE *cfg, GWEN_UNUSED uint32_t flags)
GWEN_DBIO_CHECKFILE_RESULT GWEN_DBIO_OldDb_CheckFile(GWEN_DBIO *dbio, const char *fname)
GWEN_DB_NODE * GWEN_DBIO_OldDb__ParseLine(GWEN_DB_NODE *root, GWEN_DB_NODE *group, const char *s, uint32_t mode)
GWEN_DBIO * GWEN_DBIO_OldDb_Factory(GWEN_UNUSED GWEN_PLUGIN *pl)
GWEN_PLUGIN * dbio_olddb_factory(GWEN_PLUGIN_MANAGER *pm, const char *modName, const char *fileName)
struct GWEN_PLUGIN_MANAGER GWEN_PLUGIN_MANAGER
struct GWEN_PLUGIN GWEN_PLUGIN
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_OpenExisting
GWENHYWFAR_API GWEN_SYNCIO * GWEN_SyncIo_File_new(const char *path, GWEN_SYNCIO_FILE_CREATIONMODE cm)
#define GWEN_SYNCIO_FILE_FLAGS_READ