|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T d
Length: 6691 (0x1a23)
Types: TextFile
Names: »defs.h«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit
└─⟦f1ce22008⟧ »EurOpenD3/news/newsxd2.5.0.tar.Z«
└─⟦caa165e81⟧
└─⟦this⟧ »defs.h«
/* Define everything that all of the various pieces of code will be using */
#include <stdio.h>
#include <signal.h>
#include <strings.h>
#include <syslog.h>
#include <nlist.h>
#include <errno.h>
#include <ctype.h>
#include <sys/param.h>
#include <sys/errno.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <varargs.h>
#include "newsxd.h"
#include "patchlevel.h"
/* If it's good enough for news 2.11, it's good enough for me ... */
#ifdef BSD4_2
#include <sys/time.h>
#else
#include <time.h>
#endif
#include <sys/resource.h>
#if defined(mips) & defined(ultrix)
#include <sys/../h/fixpoint.h>
#endif
void abort();
#define foreach(ctl, list) for (ctl = list; ctl != NULL; ctl = ctl->next)
int debug, /* is debugging enabled */
DEBUG, /* painfully verbose debugging is enabled */
newsxdebug, /* run xmitter synchronously with debugging? */
tallying, /* is use of a tally file enabled? */
locking, /* is use of a locking file enabled? */
CONFIGCHANGED, /* a new configuration was read in */
#ifdef FAKESYSLOG
CONFIGCHANGEDFILE, /* a new configuration was read in */
#endif
queueinterval, /* number of seconds between xmit checks */
daemon_idle, /* prevent newsxd from running queue if set */
pidlist[MAXXMITTERS]; /* map pid --> xmitter quicker */
struct host *pidmap[MAXXMITTERS];
char batchfile[MAXPATHLEN], /* file inews places article IDs/paths in */
workfile[MAXPATHLEN], /* file to use for transmitter work file */
/* perhostlock[MAXPATHLEN],/* where to place the transmitter locks */
xmitlogs[MAXPATHLEN], /* where to log the output of transmitters */
tallyfile[MAXPATHLEN], /* where the tally file can be found */
statusfile[MAXPATHLEN], /* where newsxd's status should be written */
pidfile[MAXPATHLEN], /* where newsxd's pid should be written */
#ifdef FAKESYSLOG
fakelogfile[MAXPATHLEN],/* where is the newsxd log file? */
#endif
configfile[MAXPATHLEN]; /* where is the newsxd configuration file? */
/* STRUCT OPTIONS
* Used to define the options controlling the starting of transmitters for
* classes and hosts.
*
* interval : minimum start-to-start interval for each host's transmitter
* startint : minimum interval between starting transmitters in this class
* ttl : maximum time-to-live (secs) for a transmitter in this class
* ttlpenalty : penalty time (secs) for a transmitter exceeding the ttl
* deltanice : amount to change nice before execing the transmitter
* maxload : maximum load where new xmitters can be started for this class
*
*/
typedef struct options {
int deltanice;
int interval;
int startint;
int ttl;
int ttlpenalty;
int maxload;
};
/*
* STRUCT CLASS
* Contains the current state and description of each class of transmitters
* that newsxd handles.
*
* classname : textual name of this transmission class
* maxxmits : maximum number of simultaneous transmitters for this class
* curxmits : current number of active transmitters for this class
* laststart : last time a transmitter was started for this class
* xmitsernum : transmission serial number used for fair news transmission
* options : defines default transmitter startup parameters for this class
* members : number of hosts that are a member of this class
* flags : special option flags for this class
* 0 : don't rename <batchfile> to <workfile>
* 1 : don't look for <batchfile> or <workfile>
* xpath : file path for an alternate transmission program
* xargv : arguments to be passed to the alternate transmitter
* xargc : number of arguments to be passed to the alternate xmitter
* valid : used to detect which classes are valid after a config update
* next : pointer to the next class descriptor in the list
*
*/
struct class {
char classname[MAXCLASSNAMELEN];
int maxxmits;
int curxmits;
int laststart;
int xmitsernum;
int members;
struct options options;
char slots[MAXCLASSXMITTERS];
int flags[MAXCLASSFLAGS];
char batchfile[MAXPATHLEN];
char workfile[MAXPATHLEN];
char xpath[MAXPATHLEN];
char *xargv[MAXEXECARGS];
int xargc;
int valid;
struct class *next;
};
/*
* STRUCT HOST
* Contains the current state and description of each host that newsxd
* will be communicating with.
*
* hostname : name of the host to pass to the transmitter
* class : name of the transmission class this host is in
* times : list of valid times to transmit in UUCP L.sys format
* pid : pid of forked transmitter
* lasttime : last time transmitter was forked off
* xmitsernum : transmission serial number used for fair news transmission
* penaltytime : host xmitted to past ttl; secs before penalty is over
* whynot : why is there no transmitter running for this host NOW?
* valid : used to detect which hosts are valid after a config update
* options : defines default transmitter startup parameters for this host
* next : pointer to next host in the list of all hosts
* xargv : arguments to be passed to the transmitter
* xargc : number of arguments to be passed to the transmitter
*
*/
struct host {
char hostname[MAXHOSTNAMELEN];
char class[MAXCLASSNAMELEN];
char times[MAXTIMENAMELEN];
int pid;
int lasttime;
int penaltytime;
int xmitsernum;
int whynot;
int valid;
int classslot;
struct options options;
char *xargv[MAXEXECARGS];
int xargc;
struct host *next;
};
struct class *classlist;
struct host *hostlist;
/* Predefine the return types of all of the functions */
void addclass();
void addhost();
void clear_invalid();
void daemon_start();
void debug_off();
void debug_on();
void dprintf();
void Dprintf();
void dump_config();
void dump_info();
void idle();
struct class *getclass();
void freeclassslot();
int getclassslot();
int getla();
void kill_children();
void log();
void logerr();
void make_invalid();
int parsetime();
void processarg();
void read_config();
void run_queue();
int validtime();
void xmit_done();