Mercurial > noffle
view src/dynamicstring.c @ 45:32ba1198c6fa noffle
[svn] * Makefile.in, configure, configure.in, docs/Makefile.in, src/Makefile.in:
Added checks for the mail and sort programs. ./configure will abort if
they're not found.
* README: Removed the paragraph about news client software, as it's the same
as the one in docs/NOTES.
* TODO: Removed 'expiring by groups' and
'move some text from noffle.1 to noffle.conf.5'.
* docs/NOTES: Changed the text about -DDEBUG to explain one should use
'./configure --enable-debug'.
* docs/noffle.1, docs/noffle.conf.5: Minor fixes. Added myself and Jim Hague
to the AUTHORS section :-)
* src/client.h, src/common.h, src/configfile.h, src/content.c, src/content.h,
src/control.c, src/control.h, src/database.h, src/dynamicstring.c,
src/dynamicstring.h, src/fetch.h, src/fetchlist.h, src/group.h,
src/itemlist.c, src/itemlist.h, src/lock.h, src/log.c, src/log.h,
src/noffle.c, src/online.h, src/outgoing.h, src/over.c, src/over.h,
src/post.h, src/protocol.h, src/pseudo.h, src/request.h, src/server.h,
src/util.c, src/util.h: Added the <config.h> include.
* src/content.c: Added missing include "content.h". Added a missing 'void'
in the declaration of clearCont().
* src/fetchlist.c: Casted fetchlist.size to (size_t) in a call to qsort(),
as qsort() expects a size_t. This removes a warning.
* src/noffle.c: Made doRequested() static. Added missing void to
enableCorefiles().
* src/log.c, src/protocol.c, src/online.c, src/pseudo.c: Added missing
includes.
* src/pseudo.c: Made genOv() and genPseudo() static.
* src/server.c: Added missing void to postArts(). Made touchArticle() static.
* src/util.c: Casted arguments of malloc() and memcpy() to size_t.
* src/dynamicstring.c, src/itemlist.c, src/over.c, src/request.c, src/util.c:
Removed casting of the result of malloc(). This is not necessary and
can hide a missing include of <stdlib.h>.
author | uh1763 |
---|---|
date | Sat, 06 May 2000 00:49:38 +0100 |
parents | 2842f50feb55 |
children | 125d79c9e586 |
line wrap: on
line source
/* dynamicstring.c $Id: dynamicstring.c 51 2000-05-05 23:49:38Z uh1763 $ */ #if HAVE_CONFIG_H #include <config.h> #endif #include "dynamicstring.h" #include <sys/types.h> #include "log.h" struct DynStr { size_t len; /* Current length (without trailing '\0') */ size_t max; /* Max length that fits into buffer (incl. trailing '\0') */ char *str; }; static void reallocStr( DynStr *self, size_t max ) { if ( max <= self->max ) return; if ( ! ( self->str = (char *)realloc( self->str, max ) ) ) { Log_err( "Realloc of DynStr failed" ); exit( EXIT_FAILURE ); } if ( self->max == 0 ) /* First allocation? */ *(self->str) = '\0'; self->max = max; } DynStr * new_DynStr( size_t reserve ) { DynStr *s; if ( ! ( s = malloc( sizeof( DynStr ) ) ) ) { Log_err( "Allocation of DynStr failed" ); exit( EXIT_FAILURE ); } s->len = 0; s->max = 0; s->str = NULL; if ( reserve > 0 ) reallocStr( s, reserve + 1 ); return s; } void del_DynStr( DynStr *self ) { if ( ! self ) return; free( self->str ); self->str = NULL; free( self ); } size_t DynStr_len( const DynStr *self ) { return self->len; } const char * DynStr_str( const DynStr *self ) { return self->str; } void DynStr_app( DynStr *self, const char *s ) { size_t len; len = strlen( s ); if ( self->len + len + 1 > self->max ) reallocStr( self, self->len * 2 + len + 1 ); strcpy( self->str + self->len, s ); self->len += len; } void DynStr_appDynStr( DynStr *self, const DynStr *s ) { if ( self->len + s->len + 1 > self->max ) reallocStr( self, self->len * 2 + s->len + 1 ); memcpy( self->str + self->len, s->str, s->len + 1 ); self->len += s->len; } void DynStr_appLn( DynStr *self, const char *s ) { DynStr_app( self, s ); DynStr_app( self, "\n" ); } void DynStr_appN( DynStr *self, const char *s, size_t n ) { size_t len = self->len; if ( len + n + 1 > self->max ) reallocStr( self, len * 2 + n + 1 ); strncat( self->str + len, s, n ); self->len = len + strlen( self->str + len ); } void DynStr_clear( DynStr *self ) { self->len = 0; if ( self->max > 0 ) *(self->str) = '\0'; }