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;
+}