Select Git revision
StatsLogFormUnit.cpp
-
Rob Swindell authored
Hunting down and destroying some super old SBBS code now. :-)
Rob Swindell authoredHunting down and destroying some super old SBBS code now. :-)
StatsLogFormUnit.cpp 3.24 KiB
/* Synchronet Control Panel (GUI Borland C++ Builder Project for Win32) */
/****************************************************************************
* @format.tab-size 4 (Plain Text/Source Code File Header) *
* @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) *
* *
* Copyright Rob Swindell - http://www.synchro.net/copyright.html *
* *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License *
* as published by the Free Software Foundation; either version 2 *
* of the License, or (at your option) any later version. *
* See the GNU General Public License for more details: gpl.txt or *
* http://www.fsf.org/copyleft/gpl.html *
* *
* For Synchronet coding style and modification guidelines, see *
* http://www.synchro.net/source.html *
* *
* Note: If this box doesn't appear square, then you need to fix your tabs. *
****************************************************************************/
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <stdio.h> // sprintf()
#include <time.h> // time_t
#include <share.h>
#include "MainFormUnit.h"
#include "StatsLogFormUnit.h"
#include "getstats.h"
#include "dat_file.h"
#include "xpdatetime.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TStatsLogForm *StatsLogForm;
//---------------------------------------------------------------------------
__fastcall TStatsLogForm::TStatsLogForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TStatsLogForm::FormShow(TObject *Sender)
{
char str[256],path[256],*p;
char ulbytes[32];
char dlbytes[32];
FILE* fp;
time_t timestamp;
struct tm* tm;
stats_t stats = {0};
SAFEPRINTF(path, "%scsts.tab", MainForm->global.ctrl_dir);
if((fp = _fsopen(path, "rb", SH_DENYNO)) == NULL) {
SAFEPRINTF(str, "!Error opening %s", path);
Log->Lines->Add(AnsiString(str));
return;
}
str_list_t columns = NULL;
Screen->Cursor=crHourGlass;
str_list_t* records = tabReadFile(fp, &columns);
fclose(fp);
long l;
COUNT_LIST_ITEMS(records, l);
for(--l; l >= 0; --l) {
parse_cstats(records[l], &stats);
timestamp=isoDateTime_to_time(strtoul(records[l][CSTATS_DATE], NULL, 10), 0);
timestamp-=(24*60*60); /* 1 day less than stamp */
tm=localtime(×tamp);
sprintf(str,"%u/%2.2d/%2.2d T:%5lu L:%3lu P:%3lu "
"E:%3lu F:%3lu U:%5s %5lu D:%5s %5lu N:%3lu"
,1900 + tm->tm_year,tm->tm_mon+1,tm->tm_mday
,stats.ttoday,stats.ltoday,stats.ptoday,stats.etoday
,stats.ftoday
,byte_estimate_to_str(stats.ulb, ulbytes, sizeof(ulbytes), 1, 0), stats.uls
,byte_estimate_to_str(stats.dlb, dlbytes, sizeof(dlbytes), 1, 0), stats.dls
,stats.nusers
);
Log->Lines->Add(AnsiString(str));
}
tabListFree(records);
strListFree(&columns);
Screen->Cursor=crDefault;
}
//---------------------------------------------------------------------------