Mercurial > noffle
diff src/over.c @ 43:2842f50feb55 noffle
[svn] * client.c, client.h, common.h, config.c, config.h, content.c, content.h,
control.c, control.h, database.c, database.h, dynamicstring.c,
dynamicstring.h, fetch.c, fetch.h, fetchlist.c, fetchlist.h, group.c,
group.h, itemlist.c, itemlist.h, lock.c, lock.h, log.c, log.h, noffle.c,
online.c, online.h, outgoing.c, outgoing.h, over.c, over.h, post.c, post.h,
protocol.c, protocol.h, pseudo.c, pseudo.h, request.c, request.h, server.c,
server.h, util.c, util.h, wildmat.c, wildmat.h: Moved files to the
subdirectory src/
* Makefile.am, acconfig.h, configure.in, docs/Makefile.am, src/Makefile.am,
Makefile.in, aclocal.m4, config.h.in, configure, install-sh, missing,
mkinstalldirs, stamp-h.in, docs/Makefile.in, src/Makefile.in: Added files.
They are used by aclocal, autoheader, autoconf and automake.
* src/config.c, src/config.h: Renamed to configfile.c and configfile.h,
because configure will generate a config.h file itself.
* src/client.c, src/content.c, src/database.c, src/fetch.c, src/fetchlist.c,
src/group.c, src/lock.c, src/noffle.c, src/online.c, src/outgoing.c,
src/over.c, src/pseudo.c, src/request.c, src/server.c, src/util.c:
Changed '#include "config.h"' to '#include "configfile.h"'.
* src/client.c, src/content.c, src/database.c, src/fetch.c, src/fetchlist.c,
src/group.c, src/lock.c, src/online.c, src/outgoing.c, src/post.c,
src/protocol.c, src/request.c, src/server.c: Files now #include <config.h>.
Added missing <stdio.h>. This removes the warnings about snprintf() not
being declared.
* Makefile: Removed. This is now generated by configure.
author | uh1763 |
---|---|
date | Fri, 05 May 2000 22:45:56 +0100 |
parents | |
children | 32ba1198c6fa |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/over.c Fri May 05 22:45:56 2000 +0100 @@ -0,0 +1,191 @@ +/* + over.c + + $Id: over.c 49 2000-05-05 21:45:56Z uh1763 $ +*/ + +#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 = (Over *)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; +}