view src/database.h @ 288:c02c4eb95f95 noffle

[svn] * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user and noffle-group configs. * src/configfile.c,src/fetch.c,src/fetchlist.c,src/protocol.c, src/server.c: Replace strcpy() with Utl_cpyStr() where appropriate. See Debian bug 168128. * src/control.c,src/configfile.c,src/noffle.c: Replace [s]scanf("%s") with [s]scanf(MAXCHAR_FMT). * src/noffle.c: Log warning if noffle.conf is world readable. * src/noffle.c: Restrict most options to news admins; i.e. those who are root or news on running Noffle. * Makefile.in,acconfig.h,aclocal.m4,config.h.in,configure,configure.in, docs/Makefile.in,docs/noffle.conf.5,packages/Makefile.in, packages/redhat/Makefile.in,src/Makefile.am,src/Makefile.in, src/authenticate.c,src/authenticate.h,src/noffle.c,src/server.c: Add basic authentication using either Noffle-specific user file or authenticating via PAM (service 'noffle'). PAM authentication needs to run as root, so a Noffle server that needs PAM must be started by root. Helpful (?) error messages will be logged if not. Noffle will switch ruid and euid to 'news' (or whatever is configured) ASAP. * src/noffle.c: Add uid checking.
author bears
date Fri, 10 Jan 2003 23:25:45 +0000
parents 3477050e8d10
children a04c52f87b6e
line wrap: on
line source

/*
  database.h

  Article database.

  $Id: database.h 403 2002-11-10 11:32:17Z bears $
*/

#ifndef DB_H
#define DB_H

#if HAVE_CONFIG_H
#include <config.h>
#endif

#if TIME_WITH_SYS_TIME
#include <sys/time.h>
#include <time.h>
#else
#if HAVE_SYS_TIME_H
#include <sys/time.h>
#else
#include <time.h>
#endif
#endif

#include "common.h"
#include "dynamicstring.h"
#include "over.h"

/* Article status flags: */
#define DB_INTERESTING       0x01u  /* Was article ever tried to read? */
#define DB_NOT_DOWNLOADED    0x02u  /* Not fully downloaded */
#define DB_RETRIEVING_FAILED 0x04u  /* Retrieving of article failed */

/* Open database for r/w. Locking must be done by the caller! */
Bool
Db_open( void );

void
Db_close( void );

/*
  Creates an database entry for the article from the overview
  information. Xref is replaced by grp:numb.
*/
Bool
Db_prepareEntry( const Over *ov, const char *grp, int numb );

/* Store full article. Can only be used after Db_prepareEntry. */
Bool
Db_storeArt( const char *msgId, const char *artTxt );

void
Db_setStatus( const char *msgId, unsigned status );

void
Db_updateLastAccess( const char *msgId );

/* Xref header line without hostname */
void
Db_setXref( const char *msgId, const char *xref );

const char *
Db_header( const char *msgId );

const char *
Db_body( const char *msgId );

unsigned
Db_status( const char *msgId );

/* Get last modification time of entry. Returns -1, if msgId non-existing. */
time_t
Db_lastAccess( const char *msgId );

/* Value of the References header line */
const char *
Db_ref( const char *msgId );

/* Value of the From header line */
const char *
Db_from( const char *msgId );

/* Value of the Date header line */
const char *
Db_date( const char *msgId );

/* Xref header line without hostname */
const char *
Db_xref( const char *msgId );

/* Overview - need to del_Over result when finished with */
Over *
Db_over( const char *msgId );

Bool
Db_contains( const char *msgId );

/* Delete entry from database */
void
Db_delete( const char *msgId );

Bool
Db_first( const char** msgId );

Bool
Db_next( const char** msgId );

/* Compact database if appropriate - give deleted article space back to OS */
void
Db_compact( void );

/* Rebuild the article database. */
Bool
Db_rebuild( void );

#endif