/*
* $Id: suck_server.c,v 1.3 2002/06/06 22:36:38 conrads Exp $
*/
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "msuck.h"
extern FILE *sucklog;
void
suck_server(SERVER * server)
{
int conn;
pid_t pid;
/* read newsrc for this server */
if ((server->numgroups = load_newsrc(server)) <= 0)
exit(EXIT_FAILURE);
fprintf(sucklog, "Sucking %d groups from %s using %d connections\n",
server->numgroups, server->hostname, server->maxconns);
for (conn = 0; conn < server->maxconns; ++conn)
{
pid = fork();
switch (pid)
{
case -1: /* fork error */
{
perror("suck_server(): fork() error");
exit(EXIT_FAILURE);
}
case 0: /* child */
{
do_suck(server); /* never returns */
}
default: /* parent */
{
sleep(5);
}
}
}
exit(EXIT_SUCCESS);
}
/*
* continuously suck all groups
*/
void
do_suck(SERVER * server)
{
int i;
/* do forever */
for (;;)
{
/* suck all the groups */
for (i = 0; i < server->numgroups; ++i)
{
suck_group(server, i);
sleep(5);
}
}
}
syntax highlighted by Code2HTML, v. 0.9.1