%% options copyright owner = Dirk Krause copyright year = 2015-xxxx license = bsd %% header /** @file dk4membs.h Save buffer data to stream. */ #include "dk4membuf.h" #include "dk4strm.h" #ifdef __cplusplus extern "C" { #endif /** Save buffer contents to file. @param strm Output stream. @param mbptr Buffer containing data to write. @param erp Error report, may be NULL. @return 1 on success, 0 on error. */ int dk4membuf_to_stream(dk4_stream_t *strm, dk4_membuf_t *mbptr, dk4_er_t *erp); #ifdef __cplusplus } #endif %% module #include "dk4membs.h" int dk4membuf_to_stream(dk4_stream_t *strm, dk4_membuf_t *mbptr, dk4_er_t *erp) { dk4_membuf_cell_t *pc = NULL; dk4_membuf_cell_t *pn = NULL; int back = 0; if ((NULL != strm) && (NULL != mbptr)) { back = 1; pc = mbptr->first; while (NULL != pc) { pn = pc->next; if (0 < pc->used) { if (0 == dk4stream_write(strm, pc->buf, pc->used, erp)) { back = 0; } } pc = pn; } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } return back; }