StatsLogFormUnit.cpp 3.24 KB
Newer Older
1 2 3 4 5 6
/* 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)		*
 *																			*
7
 * Copyright Rob Swindell - http://www.synchro.net/copyright.html			*
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
 *																			*
 * 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"
31 32 33 34
#include "getstats.h"
#include "dat_file.h"
#include "xpdatetime.h"

35 36 37 38 39 40 41 42 43 44 45 46 47
//---------------------------------------------------------------------------
#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;
48 49 50
	char ulbytes[32];
	char dlbytes[32];
	FILE* fp;
51 52
    time_t timestamp;
    struct tm* tm;
53
	stats_t stats = {0};
54

55 56 57
    SAFEPRINTF(path, "%scsts.tab", MainForm->global.ctrl_dir);
    if((fp = _fsopen(path, "rb", SH_DENYNO)) ==  NULL) {
        SAFEPRINTF(str, "!Error opening %s", path);
58 59 60
        Log->Lines->Add(AnsiString(str));
        return;
    }
61 62 63 64 65 66 67 68 69
	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);
70 71
        timestamp-=(24*60*60); /* 1 day less than stamp */
        tm=localtime(&timestamp);
72 73 74 75 76 77 78 79 80
        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
			);
81 82
        Log->Lines->Add(AnsiString(str));
    }
83 84 85
	tabListFree(records);
	strListFree(&columns);
	Screen->Cursor=crDefault;
86 87
}
//---------------------------------------------------------------------------