changeset 2298:b5abfff07ca9

Add new DMGrowBuf helper functions dmGrowBufCopyOffsSize() and dmGrowBufConstCopyOffsSize().
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 04 Jul 2019 10:54:16 +0300
parents 39b4e06785f5
children ad019d930401
files src/dmgrowbuf.c src/dmgrowbuf.h
diffstat 2 files changed, 24 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/dmgrowbuf.c	Thu Jul 04 10:51:02 2019 +0300
+++ b/src/dmgrowbuf.c	Thu Jul 04 10:54:16 2019 +0300
@@ -144,6 +144,15 @@
 }
 
 
+DMGrowBuf * dmGrowBufConstCopyOffsSize(DMGrowBuf *dst, const DMGrowBuf *src, const size_t offs, const size_t len)
+{
+    if (src->len < offs + len)
+        return NULL;
+
+    return dmGrowBufConstCreateFrom(dst, src->data + offs, len);
+}
+
+
 DMGrowBuf * dmGrowBufCopyOffs(DMGrowBuf *dst, const DMGrowBuf *src, const size_t offs, const size_t enlarge)
 {
     DMGrowBuf tmp;
@@ -152,6 +161,18 @@
 }
 
 
+DMGrowBuf * dmGrowBufCopyOffsSize(DMGrowBuf *dst, const DMGrowBuf *src, const size_t offs, const size_t len, const size_t enlarge)
+{
+    DMGrowBuf tmp;
+
+    if (src->len < offs + len)
+        return NULL;
+
+    return dmGrowBufCopy(dst,
+        dmGrowBufConstCreateFrom(&tmp, src->data + offs, len), enlarge);
+}
+
+
 static BOOL dmGrowBufRealloc(DMGrowBuf *buf, const size_t nsize, const BOOL clear)
 {
     DM_DBG("dmGrowBufRealloc(%p):\n"
--- a/src/dmgrowbuf.h	Thu Jul 04 10:51:02 2019 +0300
+++ b/src/dmgrowbuf.h	Thu Jul 04 10:54:16 2019 +0300
@@ -38,8 +38,11 @@
 
 DMGrowBuf * dmGrowBufCopy(DMGrowBuf *dst, const DMGrowBuf *src, const size_t enlarge);
 DMGrowBuf * dmGrowBufCopyOffs(DMGrowBuf *dst, const DMGrowBuf *src, const size_t offs, const size_t enlarge);
+DMGrowBuf * dmGrowBufCopyOffsSize(DMGrowBuf *dst, const DMGrowBuf *src, const size_t offs, const size_t len, const size_t enlarge);
+
 DMGrowBuf * dmGrowBufConstCopy(DMGrowBuf *dst, const DMGrowBuf *src);
 DMGrowBuf * dmGrowBufConstCopyOffs(DMGrowBuf *dst, const DMGrowBuf *src, const size_t offs);
+DMGrowBuf * dmGrowBufConstCopyOffsSize(DMGrowBuf *dst, const DMGrowBuf *src, const size_t offs, const size_t len);
 DMGrowBuf * dmGrowBufConstCreateFrom(DMGrowBuf *buf, Uint8 *data, const size_t len);