30#define DISABLE_DEBUGLOG
33#include <gwenhywfar/gwenhywfar.h>
34#include <gwenhywfar/misc.h>
35#include <gwenhywfar/debug.h>
36#include <gwenhywfar/path.h>
37#include <gwenhywfar/text.h>
38#include <gwenhywfar/directory.h>
39#include <gwenhywfar/syncio.h>
40#include <gwenhywfar/syncio_file.h>
41#include <gwenhywfar/syncio_memory.h>
42#include <gwenhywfar/fslock.h>
43#include <gwenhywfar/pathmanager.h>
133 "Could not unregister DBIO plugin manager (%d)", rv);
149 const char *fileName)
152 GWEN_DBIO_PLUGIN *pldbio;
166 GWEN_DBIO_PLUGIN *pldbio;
168 pldbio=(GWEN_DBIO_PLUGIN *)p;
176 GWEN_DBIO_PLUGIN *pldbio;
182 assert(pldbio->factoryFn);
183 return pldbio->factoryFn(pl);
191 GWEN_DBIO_PLUGIN *pldbio;
215 dbio->name=strdup(name);
217 dbio->descr=strdup(descr);
229 if (--(dbio->usage)==0) {
268 return dbio->importFn(dbio, sio, db, params, flags);
288 return dbio->exportFn(dbio, sio, db, params, flags);
303 if (dbio->checkFileFn)
304 return dbio->checkFileFn(dbio, fname);
373 "Plugin did not create a GWEN_DBIO");
399 "Could not apply lock to file \"%s\" (%d)",
457 "Could not remove lock on file \"%s\" (%d)",
511 "Could not apply lock to file \"%s\" (%d)",
555 "Could not remove lock on file \"%s\" (%d)",
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)
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
#define GWEN_DB_DEFAULT_LOCK_TIMEOUT
#define GWEN_DB_FLAGS_LOCKFILE
#define GWEN_DB_FLAGS_APPEND_FILE
struct GWEN_DB_NODE GWEN_DB_NODE
int GWEN_DBIO_ExportToBuffer(GWEN_DBIO *dbio, GWEN_BUFFER *buf, GWEN_DB_NODE *db, GWEN_DB_NODE *params, uint32_t flags)
int GWEN_DBIO_ExportToFile(GWEN_DBIO *dbio, const char *fname, GWEN_DB_NODE *db, GWEN_DB_NODE *params, uint32_t dbflags)
GWEN_PLUGIN * GWEN_DBIO_Plugin_new(GWEN_PLUGIN_MANAGER *pm, const char *name, const char *fileName)
int GWEN_DBIO_ModuleInit(void)
int GWEN_DBIO_ImportFromFile(GWEN_DBIO *dbio, const char *fname, GWEN_DB_NODE *db, GWEN_DB_NODE *params, uint32_t dbflags)
void GWEN_DBIO_SetCheckFileFn(GWEN_DBIO *dbio, GWEN_DBIO_CHECKFILEFN f)
void GWEN_DBIO_free(GWEN_DBIO *dbio)
void GWEN_DBIO_SetImportFn(GWEN_DBIO *dbio, GWEN_DBIO_IMPORTFN f)
int GWEN_DBIO_Import(GWEN_DBIO *dbio, GWEN_SYNCIO *sio, GWEN_DB_NODE *db, GWEN_DB_NODE *params, uint32_t flags)
const char * GWEN_DBIO_GetDescription(const GWEN_DBIO *dbio)
void GWEN_DBIO_Attach(GWEN_DBIO *dbio)
GWEN_DBIO * GWEN_DBIO_GetPlugin(const char *modname)
GWEN_DBIO * GWEN_DBIO_new(const char *name, const char *descr)
void GWEN_DBIO_Plugin_SetFactoryFn(GWEN_PLUGIN *pl, GWEN_DBIO_PLUGIN_FACTORYFN f)
const char * GWEN_DBIO_GetName(const GWEN_DBIO *dbio)
void GWENHYWFAR_CB GWEN_DBIO_Plugin_FreeData(GWEN_UNUSED void *bp, void *p)
GWEN_DBIO_CHECKFILE_RESULT GWEN_DBIO_CheckFile(GWEN_DBIO *dbio, const char *fname)
int GWEN_DBIO_ModuleFini(void)
int GWEN_DBIO_Export(GWEN_DBIO *dbio, GWEN_SYNCIO *sio, GWEN_DB_NODE *db, GWEN_DB_NODE *params, uint32_t flags)
GWEN_DBIO * GWEN_DBIO_Plugin_Factory(GWEN_PLUGIN *pl)
void GWEN_DBIO_SetExportFn(GWEN_DBIO *dbio, GWEN_DBIO_EXPORTFN f)
GWEN_DBIO_CHECKFILE_RESULT
@ GWEN_DBIO_CheckFileResultUnknown
struct GWEN_DBIO GWEN_DBIO
GWEN_DBIO *(* GWEN_DBIO_PLUGIN_FACTORYFN)(GWEN_PLUGIN *pl)
int(* GWEN_DBIO_IMPORTFN)(GWEN_DBIO *dbio, GWEN_SYNCIO *sio, GWEN_DB_NODE *db, GWEN_DB_NODE *params, uint32_t flags)
GWEN_DBIO_CHECKFILE_RESULT(* GWEN_DBIO_CHECKFILEFN)(GWEN_DBIO *dbio, const char *fname)
int(* GWEN_DBIO_EXPORTFN)(GWEN_DBIO *dbio, GWEN_SYNCIO *sio, GWEN_DB_NODE *db, GWEN_DB_NODE *params, uint32_t flags)
#define DBG_INFO(dbg_logger, format,...)
#define DBG_ERROR(dbg_logger, format,...)
#define DBG_WARN(dbg_logger, format,...)
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.
#define GWEN_PM_PLUGINDIR
#define GWEN_INHERIT_FUNCTIONS(t)
#define GWEN_INHERIT_INIT(t, element)
#define GWEN_INHERIT_FINI(t, element)
#define GWEN_INHERIT_SETDATA(bt, t, element, data, fn)
#define GWEN_INHERIT(bt, t)
#define GWEN_INHERIT_GETDATA(bt, t, element)
#define GWEN_LIST_FINI(t, element)
#define GWEN_LIST_FUNCTIONS(t, pr)
#define GWEN_LIST_INIT(t, element)
#define GWEN_FREE_OBJECT(varname)
#define GWEN_NEW_OBJECT(typ, varname)
GWEN_STRINGLIST * GWEN_PathManager_GetPaths(const char *destLib, const char *pathName)
GWEN_PLUGIN_MANAGER * GWEN_PluginManager_new(const char *name, const char *destLib)
void GWEN_PluginManager_free(GWEN_PLUGIN_MANAGER *pm)
int GWEN_PluginManager_AddPath(GWEN_PLUGIN_MANAGER *pm, const char *callingLib, const char *s)
GWEN_PLUGIN_MANAGER * GWEN_PluginManager_FindPluginManager(const char *s)
int GWEN_PluginManager_Unregister(GWEN_PLUGIN_MANAGER *pm)
GWEN_PLUGIN * GWEN_PluginManager_GetPlugin(GWEN_PLUGIN_MANAGER *pm, const char *s)
GWEN_PLUGIN * GWEN_Plugin_new(GWEN_PLUGIN_MANAGER *pm, const char *name, const char *fileName)
int GWEN_PluginManager_Register(GWEN_PLUGIN_MANAGER *pm)
struct GWEN_PLUGIN_MANAGER GWEN_PLUGIN_MANAGER
struct GWEN_PLUGIN GWEN_PLUGIN
void GWEN_StringList_free(GWEN_STRINGLIST *sl)
const char * GWEN_StringListEntry_Data(const GWEN_STRINGLISTENTRY *se)
GWEN_STRINGLISTENTRY * GWEN_StringListEntry_Next(const GWEN_STRINGLISTENTRY *se)
GWEN_STRINGLISTENTRY * GWEN_StringList_FirstEntry(const GWEN_STRINGLIST *sl)
struct GWEN_STRINGLISTENTRYSTRUCT GWEN_STRINGLISTENTRY
struct GWEN_STRINGLISTSTRUCT GWEN_STRINGLIST
int GWEN_SyncIo_Connect(GWEN_SYNCIO *sio)
void GWEN_SyncIo_AddFlags(GWEN_SYNCIO *sio, uint32_t fl)
void GWEN_SyncIo_free(GWEN_SYNCIO *sio)
GWEN_SYNCIO_STATUS GWEN_SyncIo_GetStatus(const GWEN_SYNCIO *sio)
const char * GWEN_SyncIo_GetTypeName(const GWEN_SYNCIO *sio)
int GWEN_SyncIo_Disconnect(GWEN_SYNCIO *sio)
struct GWEN_SYNCIO GWEN_SYNCIO
@ GWEN_SyncIo_Status_Connected
@ 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)