/* kbs - Simple, easily fooled, POP3 spam filter Copyright (C) 2003 Ian Cowburn (ianc@noddybox.demon.co.uk) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------- Dynamic strings */ static const char id[]="$Id$"; #include #include #include #include #include #include #include #include #include #include #include #include "global.h" #include "dstring.h" #include "util.h" static const char header_id[]=KBS_DSTRING_H; /* ---------------------------------------- CONSTANTS */ #define BLOCKSIZE 512 /* ---------------------------------------- INTERFACES */ DString DSInit(void) { DString ds; ds=Malloc(sizeof *ds); ds->len=0; ds->text=Malloc(BLOCKSIZE); ds->text[0]=0; return ds; } void DSFree(DString ds) { if (ds) { free(ds->text); free(ds); } } DString DSReset(DString ds) { DSFree(ds); return DSInit(); } DString DSAddChar(DString to, char c) { if (((to->len+2)%BLOCKSIZE)==0) { to->text=Realloc(to->text,(((to->len+2)/BLOCKSIZE)+1)*BLOCKSIZE); } to->text[to->len++]=c; to->text[to->len]=0; return to; } DString DSAddCP(DString to, const char *from) { to->len+=strlen(from); to->text=Realloc(to->text,(((to->len+1)/BLOCKSIZE)+1)*BLOCKSIZE); strcat(to->text,from); return to; } DString DSAddDS(DString to, const DString from) { DSAddCP(to,from->text); return to; } /* END OF FILE */