/*
 *  RESIZE_BUFFER.C
 *
 *  (c)Copyright 1992 by Tobias Ferber,  All Rights Reserved
 */

#include <string.h>

#define MAXIMUM_BUFFERSIZE (64*1024)




int resize_buffer(buffer, oldsize, newsize)
unsigned char **buffer;
unsigned long oldsize, newsize;
{
  char *newbuf= (char *)0L;

  if(newsize <= MAXIMUM_BUFFERSIZE)
  {
    if( newbuf= (char *)malloc(newsize) )
    {
      if(*buffer)
      {
        if(oldsize >= newsize)
        {
          memcpy(newbuf, *buffer, newsize);
        }
        else /* oldsize < newsize */
        {
          memcpy(newbuf, *buffer, oldsize);
          memset(&newbuf[oldsize], '\0', newsize-oldsize);
        }

        free(*buffer);
      }

      *buffer= newbuf;
    }
  }

  return newbuf ? 1 : 0;
}