Annotation of sbbs/sbbs3/ctrl/statslogformunit.cpp, revision 1.1.1.2

1.1       root        1: /* Synchronet Control Panel (GUI Borland C++ Builder Project for Win32) */
                      2: 
1.1.1.2 ! root        3: /* $Id: StatsLogFormUnit.cpp,v 1.2 2004/05/28 23:48:07 rswindell Exp $ */
1.1       root        4: 
                      5: /****************************************************************************
                      6:  * @format.tab-size 4          (Plain Text/Source Code File Header)                    *
                      7:  * @format.use-tabs true       (see http://www.synchro.net/ptsc_hdr.html)              *
                      8:  *                                                                                                                                                     *
1.1.1.2 ! root        9:  * Copyright 2004 Rob Swindell - http://www.synchro.net/copyright.html         *
1.1       root       10:  *                                                                                                                                                     *
                     11:  * This program is free software; you can redistribute it and/or                       *
                     12:  * modify it under the terms of the GNU General Public License                         *
                     13:  * as published by the Free Software Foundation; either version 2                      *
                     14:  * of the License, or (at your option) any later version.                                      *
                     15:  * See the GNU General Public License for more details: gpl.txt or                     *
                     16:  * http://www.fsf.org/copyleft/gpl.html                                                                                *
                     17:  *                                                                                                                                                     *
                     18:  * Anonymous FTP access to the most recent released source is available at     *
                     19:  * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net     *
                     20:  *                                                                                                                                                     *
                     21:  * Anonymous CVS access to the development source and modification history     *
                     22:  * is available at cvs.synchro.net:/cvsroot/sbbs, example:                                     *
                     23:  * cvs -d :pserver:[email protected]:/cvsroot/sbbs login                       *
                     24:  *     (just hit return, no password is necessary)                                                     *
                     25:  * cvs -d :pserver:[email protected]:/cvsroot/sbbs checkout src                *
                     26:  *                                                                                                                                                     *
                     27:  * For Synchronet coding style and modification guidelines, see                                *
                     28:  * http://www.synchro.net/source.html                                                                          *
                     29:  *                                                                                                                                                     *
                     30:  * You are encouraged to submit any modifications (preferably in Unix diff     *
                     31:  * format) via e-mail to [email protected]                                                                      *
                     32:  *                                                                                                                                                     *
                     33:  * Note: If this box doesn't appear square, then you need to fix your tabs.    *
                     34:  ****************************************************************************/
                     35: 
                     36: //---------------------------------------------------------------------------
                     37: #include <vcl.h>
                     38: #pragma hdrstop
                     39: 
                     40: #include <io.h>                        // filelength()
                     41: #include <stdio.h>             // sprintf()
                     42: #include <time.h>              // time_t
                     43: #include <fcntl.h>             // O_RDONLY
                     44: #include <share.h>
                     45: #include "MainFormUnit.h"
                     46: #include "StatsLogFormUnit.h"
                     47: //---------------------------------------------------------------------------
                     48: #pragma package(smart_init)
                     49: #pragma resource "*.dfm"
                     50: TStatsLogForm *StatsLogForm;
                     51: //---------------------------------------------------------------------------
                     52: __fastcall TStatsLogForm::TStatsLogForm(TComponent* Owner)
                     53:        : TForm(Owner)
                     54: {
                     55: }
                     56: //---------------------------------------------------------------------------
                     57: void __fastcall TStatsLogForm::FormShow(TObject *Sender)
                     58: {
                     59:        char str[256],path[256],*p;
                     60:     BYTE *buf;
                     61:        int i,file;
                     62:     time_t timestamp;
                     63:     struct tm* tm;
                     64:     long l;
                     65:     DWORD   length,
                     66:             logons,
                     67:             timeon,
                     68:             posts,
                     69:             emails,
                     70:             fbacks,
                     71:             ulb,
                     72:             uls,
                     73:             dlb,
                     74:             dls;
                     75: 
1.1.1.2 ! root       76:     sprintf(path,"%sCSTS.DAB",MainForm->global.ctrl_dir);
1.1       root       77:     if((file=_sopen(path,O_RDONLY|O_BINARY,SH_DENYNO))==-1) {
                     78:         sprintf(str,"!Error opening %s",path);
                     79:         Log->Lines->Add(AnsiString(str));
                     80:         return;
                     81:     }
                     82:     length=filelength(file);
                     83:     if(length<40) {
                     84:         close(file);
                     85:         return;
                     86:     }
                     87:     if((buf=(char *)MALLOC(length))==NULL) {
                     88:         close(file);
                     89:         sprintf(str,"!Error allocating %lu bytes",length);
                     90:         Log->Lines->Add(AnsiString(str));
                     91:         return;
                     92:     }
                     93:     read(file,buf,length);
                     94:     close(file);
                     95:     l=length-4;
                     96:     while(l>-1L) {
                     97:         fbacks=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                     98:             |((long)buf[l+3]<<24);
                     99:         l-=4;
                    100:         emails=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    101:             |((long)buf[l+3]<<24);
                    102:         l-=4;
                    103:         posts=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    104:             |((long)buf[l+3]<<24);
                    105:         l-=4;
                    106:         dlb=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    107:             |((long)buf[l+3]<<24);
                    108:         l-=4;
                    109:         dls=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    110:             |((long)buf[l+3]<<24);
                    111:         l-=4;
                    112:         ulb=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    113:             |((long)buf[l+3]<<24);
                    114:         l-=4;
                    115:         uls=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    116:             |((long)buf[l+3]<<24);
                    117:         l-=4;
                    118:         timeon=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    119:             |((long)buf[l+3]<<24);
                    120:         l-=4;
                    121:         logons=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    122:             |((long)buf[l+3]<<24);
                    123:         l-=4;
                    124:         timestamp=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    125:             |((long)buf[l+3]<<24);
                    126:         l-=4;
                    127:         timestamp-=(24*60*60); /* 1 day less than stamp */
                    128:         tm=localtime(&timestamp);
                    129:         sprintf(str,"%2.2d/%2.2d/%2.2d T:%5lu   L:%3lu   P:%3lu   "
                    130:             "E:%3lu   F:%3lu   U:%6luk %3lu  D:%6luk %3lu"
                    131:             ,tm->tm_mon+1,tm->tm_mday,tm->tm_year%100,timeon,logons,posts,emails
                    132:             ,fbacks,ulb/1024,uls,dlb/1024,dls);
                    133:         Log->Lines->Add(AnsiString(str));
                    134:     }
                    135:        free(buf);
                    136: }
                    137: //---------------------------------------------------------------------------

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.