15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 7zBuf.c -- Byte Buffer 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)2008-03-28 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Igor Pavlov 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Public domain */ 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "7zBuf.h" 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void Buf_Init(CBuf *p) 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) p->data = 0; 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) p->size = 0; 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)int Buf_Create(CBuf *p, size_t size, ISzAlloc *alloc) 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) p->size = 0; 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (size == 0) 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) p->data = 0; 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 1; 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) p->data = (Byte *)alloc->Alloc(alloc, size); 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (p->data != 0) 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) p->size = size; 2653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return 1; 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return 0; 2953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 3053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 3153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)void Buf_Free(CBuf *p, ISzAlloc *alloc) 3253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){ 33e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) alloc->Free(alloc, p->data); 3453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) p->data = 0; 3553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) p->size = 0; 3653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 3753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)