Source code

Revision control

Copy as Markdown

Other Tools

/* 7zBuf2.c -- Byte Buffer↩
2017-04-03 : Igor Pavlov : Public domain */
#include "Precomp.h"
#include <string.h>↩
#include "7zBuf.h"
void DynBuf_Construct(CDynBuf *p)↩
{↩
p->data = 0;↩
p->size = 0;↩
p->pos = 0;↩
}↩
void DynBuf_SeekToBeg(CDynBuf *p)↩
{↩
p->pos = 0;↩
}↩
int DynBuf_Write(CDynBuf *p, const Byte *buf, size_t size, ISzAllocPtr alloc)↩
{↩
if (size > p->size - p->pos)↩
{↩
size_t newSize = p->pos + size;↩
Byte *data;↩
newSize += newSize / 4;↩
data = (Byte *)ISzAlloc_Alloc(alloc, newSize);↩
if (!data)↩
return 0;↩
p->size = newSize;↩
if (p->pos != 0)↩
memcpy(data, p->data, p->pos);↩
ISzAlloc_Free(alloc, p->data);↩
p->data = data;↩
}↩
if (size != 0)↩
{↩
memcpy(p->data + p->pos, buf, size);↩
p->pos += size;↩
}↩
return 1;↩
}↩
void DynBuf_Free(CDynBuf *p, ISzAllocPtr alloc)↩
{↩
ISzAlloc_Free(alloc, p->data);↩
p->data = 0;↩
p->size = 0;↩
p->pos = 0;↩
}↩