Mercurial > noffle
view src/over.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
/* over.c $Id: over.c 51 2000-05-05 23:49:38Z uh1763 $ */ #if HAVE_CONFIG_H #include <config.h> #endif #include <errno.h> #include <time.h> #include "configfile.h" #include "content.h" #include "database.h" #include "fetchlist.h" #include "log.h" #include "util.h" #include "protocol.h" #include "pseudo.h" struct Over { int numb; /* message number of the overviewed article */ char *subj; char *from; char *date; char *msgId; char *ref; size_t bytes; size_t lines; time_t time; }; Over * new_Over( const char *subj, const char *from, const char *date, const char *msgId, char *ref, size_t bytes, size_t lines ) { Over *ov; if ( ! ( ov = malloc( sizeof( Over ) ) ) ) { Log_err( "Cannot allocate Over" ); exit( EXIT_FAILURE ); } ov->numb = 0; Utl_allocAndCpy( &ov->subj, subj ); Utl_allocAndCpy( &ov->from, from ); Utl_allocAndCpy( &ov->date, date ); Utl_allocAndCpy( &ov->msgId, msgId ); Utl_allocAndCpy( &ov->ref, ref ); ov->bytes = bytes; ov->lines = lines; return ov; } void del_Over( Over *self ) { if ( ! self ) return; free( self->subj ); self->subj = NULL; free( self->from ); self->from = NULL; free( self->date ); self->date = NULL; free( self->msgId ); self->msgId = NULL; free( self->ref ); self->ref = NULL; free( self ); } int Ov_numb( const Over *self ) { return self->numb; } const char * Ov_subj( const Over *self ) { return self->subj; } const char * Ov_from( const Over *self ) { return self->from; } const char * Ov_date( const Over *self ) { return self->date; } const char * Ov_msgId( const Over *self ) { return self->msgId; } const char * Ov_ref( const Over *self ) { return self->ref; } size_t Ov_bytes( const Over *self ) { return self->bytes; } size_t Ov_lines( const Over *self ) { return self->lines; } void Ov_setNumb( Over *self, int numb ) { self->numb = numb; } Bool Ov_write( const Over *self, FILE *f ) { return ( fprintf( f, "%i\t%s\t%s\t%s\t%s\t%s\t%d\t%d\n", self->numb, self->subj, self->from, self->date, self->msgId, self->ref, self->bytes, self->lines ) > 0 ); } static const char * readField( Str result, const char *p ) { size_t len; char *r; if ( ! p ) return NULL; r = result; *r = '\0'; len = 0; while ( *p != '\t' && *p != '\n' ) { if ( ! *p ) return p; *(r++) = *(p++); ++len; if ( len >= MAXCHAR - 1 ) { *r = '\0'; Log_err( "Field in overview too long: %s", r ); return ++p; } } *r = '\0'; return ++p; } /* read Over-struct from line */ Over * Ov_read( char *line ) { size_t bytes, lines; const char *p; Over *result; int numb; Str t, subj, from, date, msgId, ref; p = readField( t, line ); if ( sscanf( t, "%i", &numb ) != 1 ) return NULL; p = readField( subj, p ); p = readField( from, p ); p = readField( date, p ); p = readField( msgId, p ); p = readField( ref, p ); p = readField( t, p ); if ( sscanf( t, "%d", &bytes ) != 1 ) return NULL; p = readField( t, p ); if ( sscanf( t, "%d", &lines ) != 1 ) return NULL; result = new_Over( subj, from, date, msgId, ref, bytes, lines ); Ov_setNumb( result, numb ); return result; }