29#define DISABLE_DEBUGLOG
36#include <gwenhywfar/misc.h>
37#include <gwenhywfar/debug.h>
61 sio->typeName=strdup(typeName);
72 assert(sio->refCount);
81 assert(sio->refCount);
82 if (sio->refCount==1) {
100 assert(sio->refCount);
102 return sio->connectFn(sio);
112 assert(sio->refCount);
113 if (sio->disconnectFn)
114 return sio->disconnectFn(sio);
124 assert(sio->refCount);
126 return sio->flushFn(sio);
138 assert(sio->refCount);
140 return sio->readFn(sio, buffer, size);
148 const uint8_t *buffer,
152 assert(sio->refCount);
154 return sio->writeFn(sio, buffer, size);
164 assert(sio->refCount);
173 assert(sio->refCount);
182 assert(sio->refCount);
191 assert(sio->refCount);
200 assert(sio->refCount);
209 assert(sio->refCount);
218 assert(sio->refCount);
219 return sio->typeName;
227 assert(sio->refCount);
238 assert(sio->refCount);
242 if (baseIo->typeName && strcasecmp(baseIo->typeName, typeName)==0)
244 baseIo=baseIo->baseIo;
257 assert(sio->refCount);
270 assert(sio->refCount);
271 of=sio->disconnectFn;
272 sio->disconnectFn=fn;
283 assert(sio->refCount);
296 assert(sio->refCount);
309 assert(sio->refCount);
318 const uint8_t *buffer,
590 int64_t bytesWritten=0;
608 while (bytesLeft>0) {
669 uint8_t transferBuffer[1024];
674 l=
sizeof(transferBuffer);
int GWEN_Buffer_IncrementPos(GWEN_BUFFER *bf, uint32_t i)
uint32_t GWEN_Buffer_GetMaxUnsegmentedWrite(GWEN_BUFFER *bf)
int GWEN_Buffer_AdjustUsedBytes(GWEN_BUFFER *bf)
char * GWEN_Buffer_GetPosPointer(const GWEN_BUFFER *bf)
int GWEN_Buffer_AllocRoom(GWEN_BUFFER *bf, uint32_t size)
#define DBG_INFO(dbg_logger, format,...)
#define DBG_ERROR(dbg_logger, format,...)
#define GWEN_ERROR_BROKEN_PIPE
#define GWEN_ERROR_INTERRUPTED
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
#define GWEN_INHERIT_FUNCTIONS(t)
#define GWEN_INHERIT_INIT(t, element)
#define GWEN_INHERIT_FINI(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)
struct GWEN_STRINGLISTSTRUCT GWEN_STRINGLIST
void GWEN_SyncIo_SetFlags(GWEN_SYNCIO *sio, uint32_t fl)
uint32_t GWEN_SyncIo_GetFlags(const GWEN_SYNCIO *sio)
int GWEN_SyncIo_WriteString(GWEN_SYNCIO *sio, const char *s)
int GWEN_SyncIo_Connect(GWEN_SYNCIO *sio)
void GWEN_SyncIo_AddFlags(GWEN_SYNCIO *sio, uint32_t fl)
GWEN_SYNCIO * GWEN_SyncIo_new(const char *typeName, GWEN_SYNCIO *baseIo)
int GWEN_SyncIo_Helper_WriteFile(const char *fName, const uint8_t *ptrSource, uint64_t lenSource)
int GWEN_SyncIo_Helper_ReadFileToStringList(const char *fname, int maxLines, GWEN_STRINGLIST *sl)
int GWEN_SyncIo_Write(GWEN_SYNCIO *sio, const uint8_t *buffer, uint32_t size)
GWEN_SYNCIO_READ_FN GWEN_SyncIo_SetReadFn(GWEN_SYNCIO *sio, GWEN_SYNCIO_READ_FN fn)
GWEN_SYNCIO_FLUSH_FN GWEN_SyncIo_SetFlushFn(GWEN_SYNCIO *sio, GWEN_SYNCIO_FLUSH_FN fn)
void GWEN_SyncIo_Attach(GWEN_SYNCIO *sio)
GWEN_SYNCIO * GWEN_SyncIo_GetBaseIo(const GWEN_SYNCIO *sio)
int GWEN_SyncIo_ReadForced(GWEN_SYNCIO *sio, uint8_t *buffer, uint32_t size)
GWEN_SYNCIO_DISCONNECT_FN GWEN_SyncIo_SetDisconnectFn(GWEN_SYNCIO *sio, GWEN_SYNCIO_DISCONNECT_FN fn)
void GWEN_SyncIo_SubFlags(GWEN_SYNCIO *sio, uint32_t fl)
int GWEN_SyncIo_Helper_CopyFile(const char *srcPath, const char *destPath)
int GWEN_SyncIo_Helper_PartiallyReadFile(const char *fName, uint8_t *buffer, uint32_t size)
GWEN_SYNCIO * GWEN_SyncIo_GetBaseIoByTypeName(const GWEN_SYNCIO *sio, const char *typeName)
int GWEN_SyncIo_WriteChar(GWEN_SYNCIO *sio, char s)
int GWEN_SyncIo_Helper_ReadFile(const char *fName, GWEN_BUFFER *dbuf)
GWEN_SYNCIO_WRITE_FN GWEN_SyncIo_SetWriteFn(GWEN_SYNCIO *sio, GWEN_SYNCIO_WRITE_FN fn)
int GWEN_SyncIo_WriteLine(GWEN_SYNCIO *sio, const char *s)
int GWEN_SyncIo_WriteForced(GWEN_SYNCIO *sio, const uint8_t *buffer, uint32_t size)
void GWEN_SyncIo_free(GWEN_SYNCIO *sio)
GWEN_SYNCIO_STATUS GWEN_SyncIo_GetStatus(const GWEN_SYNCIO *sio)
int GWEN_SyncIo_Read(GWEN_SYNCIO *sio, uint8_t *buffer, uint32_t size)
GWEN_SYNCIO_CONNECT_FN GWEN_SyncIo_SetConnectFn(GWEN_SYNCIO *sio, GWEN_SYNCIO_CONNECT_FN fn)
const char * GWEN_SyncIo_GetTypeName(const GWEN_SYNCIO *sio)
void GWEN_SyncIo_SetStatus(GWEN_SYNCIO *sio, GWEN_SYNCIO_STATUS st)
int GWEN_SyncIo_Disconnect(GWEN_SYNCIO *sio)
int GWEN_SyncIo_Flush(GWEN_SYNCIO *sio)
#define GWEN_SYNCIO_FLAGS_DOSMODE
GWENHYWFAR_CB int(* GWEN_SYNCIO_DISCONNECT_FN)(GWEN_SYNCIO *sio)
GWENHYWFAR_CB int(* GWEN_SYNCIO_READ_FN)(GWEN_SYNCIO *sio, uint8_t *buffer, uint32_t size)
GWENHYWFAR_CB int(* GWEN_SYNCIO_CONNECT_FN)(GWEN_SYNCIO *sio)
GWENHYWFAR_CB int(* GWEN_SYNCIO_FLUSH_FN)(GWEN_SYNCIO *sio)
GWENHYWFAR_CB int(* GWEN_SYNCIO_WRITE_FN)(GWEN_SYNCIO *sio, const uint8_t *buffer, uint32_t size)
struct GWEN_SYNCIO GWEN_SYNCIO
GWEN_SYNCIO * GWEN_SyncIo_Buffered_new(GWEN_SYNCIO *baseIo)
int GWEN_SyncIo_Buffered_ReadLinesToStringList(GWEN_SYNCIO *sio, int maxLines, GWEN_STRINGLIST *sl)
@ GWEN_SyncIo_File_CreationMode_CreateNew
@ GWEN_SyncIo_File_CreationMode_TruncateExisting
@ 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
GWENHYWFAR_API int64_t GWEN_SyncIo_File_Seek(GWEN_SYNCIO *sio, int64_t pos, GWEN_SYNCIO_FILE_WHENCE whence)
#define GWEN_SYNCIO_FILE_FLAGS_WRITE
@ GWEN_SyncIo_File_Whence_Set
@ GWEN_SyncIo_File_Whence_End