Select Git revision
camellia-invert-key.c
Forked from
Nettle / nettle
Source project has a limited visibility.
-
Niels Möller authoredNiels Möller authored
dynamic_buffer.c 4.34 KiB
/*
|| This file is part of Pike. For copyright information see COPYRIGHT.
|| Pike is distributed under GPL, LGPL and MPL. See the file COPYING
|| for more information.
*/
#include "global.h"
#include "dynamic_buffer.h"
#include "stralloc.h"
#include "pike_error.h"
#include "pike_memory.h"
PMOD_EXPORT dynamic_buffer pike_global_buffer;
PMOD_EXPORT char *low_make_buf_space(ptrdiff_t space, dynamic_buffer *buf)
{
char *ret;
#ifdef PIKE_DEBUG
if(!buf->s.str) Pike_fatal("ARRRRGH! Deadly Trap!\n");
#endif
if(buf->s.len+space >= buf->bufsize)
{
if(!buf->bufsize) buf->bufsize=1;
do{
buf->bufsize*=2;
}while(buf->s.len+space >= buf->bufsize);
buf->s.str=realloc(buf->s.str, buf->bufsize);
if(!buf->s.str)
Pike_fatal("Out of memory.\n");
}
ret = buf->s.str + buf->s.len;
buf->s.len += space;
return ret;
}
PMOD_EXPORT void low_my_putchar(int b,dynamic_buffer *buf)
{
#ifdef PIKE_DEBUG
if(!buf->s.str)
Pike_fatal("Error in internal buffering.\n");
#endif
low_make_buf_space(1,buf)[0]=b;
}
PMOD_EXPORT void low_my_binary_strcat(const char *b, size_t l,
dynamic_buffer *buf)
{
#ifdef PIKE_DEBUG
if(!buf->s.str)
Pike_fatal("Error in internal buffering.\n");
#endif
MEMCPY(low_make_buf_space(l, buf),b, l);
}
PMOD_EXPORT void debug_initialize_buf(dynamic_buffer *buf)
{
buf->s.str=xalloc((buf->bufsize=BUFFER_BEGIN_SIZE));
*(buf->s.str)=0;
buf->s.len=0;
}
PMOD_EXPORT void low_reinit_buf(dynamic_buffer *buf)
{
if(!buf->s.str)
{
initialize_buf(buf);