Category : Linux Files
Archive   : UPC12BS1.ZIP
Filename : DCPSTATS.C

 
Output of file : DCPSTATS.C contained in archive : UPC12BS1.ZIP
/*--------------------------------------------------------------------*/
/* File transfer information for UUPC/extended */
/* */
/* Copyright (c) 1991, Andrew H. Derbyshire */
/*--------------------------------------------------------------------*/

/*--------------------------------------------------------------------*/
/* Changes Copyright (c) 1989-1993 by Kendra Electronic */
/* Wonderworks. */
/* */
/* All rights reserved except those explicitly granted by */
/* the UUPC/extended license agreement. */
/*--------------------------------------------------------------------*/

/*
* $Id: dcpstats.c 1.6 1993/09/20 04:41:54 ahd Exp $
*
* $Log: dcpstats.c $
* Revision 1.6 1993/09/20 04:41:54 ahd
* OS/2 2.x support
*
* Revision 1.5 1993/04/11 00:34:11 ahd
* Global edits for year, TEXT, etc.
*
* Revision 1.4 1993/03/06 23:04:54 ahd
* Lock host status file before updating
*
* Revision 1.3 1992/12/30 13:17:12 ahd
* Windows/NT changes
*
*/

/*--------------------------------------------------------------------*/
/* standard include files */
/*--------------------------------------------------------------------*/

#include
#include
#include
#include

/*--------------------------------------------------------------------*/
/* UUPC/extended include files */
/*--------------------------------------------------------------------*/

#include "lib.h"
#include "dcp.h"
#include "dcpstats.h"
#include "stater.h"
#include "hlib.h"
#include "hostable.h"
#include "hostatus.h"
#include "security.h"
#include "timestmp.h"
#include "ssleep.h"
#include "lock.h"

/*--------------------------------------------------------------------*/
/* Global variables */
/*--------------------------------------------------------------------*/

currentfile();

/*--------------------------------------------------------------------*/
/* d c s t a t s */
/* */
/* Report transmission information for a connection */
/*--------------------------------------------------------------------*/

void dcstats(void)
{
if (hostp == BADHOST)
{
printmsg(0,"dcstats: host structure pointer is NULL");
panic();
}

if (!equal(rmtname , hostp->hostname))
return;

if (remote_stats.lconnect > 0)
{
time_t connected;
unsigned long bytes;
unsigned long bps;

HostStatus();

connected = time(NULL) - remote_stats.lconnect;
remote_stats.connect += connected;
bytes = remote_stats.bsent + remote_stats.breceived;

if ( connected > 0 )
bps = bytes / (long unsigned) connected;
else
bps = 0;

printmsg(0,"%ld files sent, %ld files received, "
"%ld bytes sent, %ld bytes received",
remote_stats.fsent, remote_stats.freceived ,
remote_stats.bsent, remote_stats.breceived);
printmsg(0, "%ld packets transferred, %ld errors, "
"connection time %ld:%02ld, %ld bytes/second",
(long) remote_stats.packets,
(long) remote_stats.errors,
(long) connected / 60L, (long) connected % 60L, bps);

} /*if */
else
printmsg(0,"Unable to print information for host %s (%s)",
rmtname,
hostp->hostname);

if (remote_stats.lconnect > hostp->hstats->lconnect)
hostp->hstats->lconnect = remote_stats.lconnect;

if (remote_stats.ltime > hostp->hstats->ltime)
hostp->hstats->lconnect = remote_stats.lconnect;

hostp->hstats->connect += remote_stats.connect;
hostp->hstats->calls += remote_stats.calls;
hostp->hstats->fsent += remote_stats.fsent;
hostp->hstats->freceived += remote_stats.freceived;
hostp->hstats->bsent += remote_stats.bsent;
hostp->hstats->breceived += remote_stats.breceived;
hostp->hstats->errors += remote_stats.errors;
hostp->hstats->packets += remote_stats.packets;

} /* dcstats */

/*--------------------------------------------------------------------*/
/* d c u p d a t e */
/* */
/* Update the status of all known hosts */
/*--------------------------------------------------------------------*/

void dcupdate( void )
{
boolean firsthost = TRUE;
struct HostTable *host;
FILE *stream;
char fname[FILENAME_MAX];
long size;
unsigned short len1 = strlen(compilep );
unsigned short len2 = strlen(compilev );
boolean gotlock;
short retries = 30;
LOCKSTACK savelock;

mkfilename( fname, E_confdir, DCSTATUS );

/*--------------------------------------------------------------------*/
/* Save lock status, then lock host status file */
/*--------------------------------------------------------------------*/

PushLock( &savelock );

do {
gotlock = LockSystem( "*status", B_UUSTAT );
if ( ! gotlock )
ssleep(2);
} while ( ! gotlock && retries-- );

if ( ! gotlock )
{
printmsg(0,"Cannot obtain lock for %s", fname );
PopLock( &savelock );
return;
}

/*--------------------------------------------------------------------*/
/* Old previous status as required */
/*--------------------------------------------------------------------*/

HostStatus(); /* Get new data, if needed */

filebkup( fname ); /* Rename the file if desired */

if ((stream = FOPEN(fname, "w", BINARY_MODE)) == NULL)
{
printerr( fname );
return;
}

fwrite( &len1, sizeof len1, 1, stream );
fwrite( &len2, sizeof len2, 1, stream );
fwrite( compilep , 1, len1, stream);
fwrite( compilev , 1, len2, stream);
fwrite( &start_stats , sizeof start_stats , 1, stream);

while ((host = nexthost( firsthost )) != BADHOST)
{
len1 = strlen( host->hostname );
len2 = sizeof *(host->hstats);

firsthost = FALSE;

fwrite( &len1, sizeof len1, 1, stream );
fwrite( &len2, sizeof len2, 1, stream );
fwrite( host->hostname , sizeof hostp->hostname[0], len1, stream);
host->hstats->save_hstatus = ( host->hstatus == called ) ?
succeeded : host->hstatus;
fwrite( host->hstats , len2, 1, stream);
}

/*--------------------------------------------------------------------*/
/* Make we sure got end of file and not an I/O error */
/*--------------------------------------------------------------------*/

if (ferror( stream ))
{
printerr( fname );
clearerr( stream );
}

fclose( stream );

hstatus_age = stater( fname , &size );

/*--------------------------------------------------------------------*/
/* Restore locks and return */
/*--------------------------------------------------------------------*/

UnlockSystem( );
PopLock( &savelock );

} /* dcupdate */


  3 Responses to “Category : Linux Files
Archive   : UPC12BS1.ZIP
Filename : DCPSTATS.C

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/