Index: third_party/lzma_sdk/C/7zBuf2.c |
=================================================================== |
--- third_party/lzma_sdk/C/7zBuf2.c (revision 0) |
+++ third_party/lzma_sdk/C/7zBuf2.c (revision 0) |
@@ -0,0 +1,45 @@ |
+/* 7zBuf2.c -- Byte Buffer |
+2008-10-04 : Igor Pavlov : Public domain */ |
+ |
+#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, ISzAlloc *alloc) |
+{ |
+ if (size > p->size - p->pos) |
+ { |
+ size_t newSize = p->pos + size; |
+ Byte *data; |
+ newSize += newSize / 4; |
+ data = (Byte *)alloc->Alloc(alloc, newSize); |
+ if (data == 0) |
+ return 0; |
+ p->size = newSize; |
+ memcpy(data, p->data, p->pos); |
+ alloc->Free(alloc, p->data); |
+ p->data = data; |
+ } |
+ memcpy(p->data + p->pos, buf, size); |
+ p->pos += size; |
+ return 1; |
+} |
+ |
+void DynBuf_Free(CDynBuf *p, ISzAlloc *alloc) |
+{ |
+ alloc->Free(alloc, p->data); |
+ p->data = 0; |
+ p->size = 0; |
+ p->pos = 0; |
+} |
Property changes on: third_party\lzma_sdk\C\7zBuf2.c |
___________________________________________________________________ |
Added: svn:executable |
+ * |
Added: svn:eol-style |
+ LF |