Annotation of sbbs/sbbs2/slog/slog.c, revision 1.1.1.2

1.1       root        1: /* SLOG.C */
                      2: 
                      3: /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */
                      4: 
                      5: #include <stdio.h>
                      6: #include <stdlib.h>
                      7: #include <fcntl.h>
                      8: #include <sys\stat.h>
                      9: #include <io.h>
                     10: #include <dos.h>
                     11: #include <alloc.h>
                     12: #include <time.h>
                     13: #include <errno.h>
                     14: 
                     15: #include "sbbsdefs.h"
                     16: 
                     17: /****************************************************************************/
                     18: /* Network open function. Opens all files DENYALL and retries LOOP_NOPEN    */
                     19: /* number of times if the attempted file is already open or denying access  */
                     20: /* for some other reason.      All files are opened in BINARY mode.                    */
                     21: /****************************************************************************/
                     22: int nopen(char *str, int access)
                     23: {
                     24:        char    logstr[256];
                     25:        int     file,share,count=0;
                     26: 
                     27: if(access==O_RDONLY) share=O_DENYWRITE;
                     28:        else share=O_DENYALL;
                     29: while(((file=open(str,O_BINARY|share|access,S_IWRITE))==-1)
                     30:        && errno==EACCES && count++<LOOP_NOPEN);
                     31: if(count)
                     32:        printf("NOPEN COLLISION - File: %s Count: %d"
                     33:                ,str,count);
                     34: if(file==-1 && errno==EACCES)
                     35:        printf("\7\r\nNOPEN: ACCESS DENIED\r\n\7");
                     36: return(file);
                     37: }
                     38: 
                     39: 
                     40: /****************************************************************************/
                     41: /* Lists system statistics for everyday the bbs has been running.           */
                     42: /* Either for the current node (node=1) or the system (node=0)              */
                     43: /****************************************************************************/
                     44: int main(int argc, char **argv)
                     45: {
                     46:        char str[256],dir[256]={""},*p;
                     47:     uchar *buf;
                     48:        int i,file,pause=0,lncntr=0;
                     49:     time_t timestamp;
                     50:     long l;
                     51:     ulong   length,
                     52:             logons,
                     53:             timeon,
                     54:             posts,
                     55:             emails,
                     56:             fbacks,
                     57:             ulb,
                     58:             uls,
                     59:             dlb,
                     60:             dls;
                     61:         struct date date;
                     62:         struct time curtime;
                     63: 
                     64: 
1.1.1.2 ! root       65: printf("\nSynchronet System/Node Statistics Log Viewer v1.02\n\n");
1.1       root       66: 
                     67: for(i=1;i<argc;i++)
                     68:        if(!stricmp(argv[i],"/P"))
                     69:                pause=1;
                     70:        else
                     71:                strcpy(dir,argv[1]);
                     72: if(!dir[0]) {
                     73:        p=getenv("SBBSCTRL");
                     74:        if(p!=NULL)
                     75:                strcpy(dir,p); }
                     76: 
                     77: if(dir[0] && dir[strlen(dir)-1]!='\\')
                     78:        strcat(dir,"\\");
                     79: 
                     80: sprintf(str,"%sCSTS.DAB",dir);
                     81: if((file=nopen(str,O_RDONLY))==-1) {
                     82:        printf("Error opening %s\r\n",str);
                     83:        return(1); }
                     84: length=filelength(file);
                     85: if(length<40) {
                     86:     close(file);
                     87:        return(1); }
                     88: if((buf=(char *)MALLOC(length))==0) {
                     89:     close(file);
                     90:        printf("error allocating %lu bytes\r\n",length);
                     91:        return(1); }
                     92: read(file,buf,length);
                     93: close(file);
                     94: l=length-4;
                     95: while(l>-1L) {
                     96:     fbacks=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                     97:         |((long)buf[l+3]<<24);
                     98:     l-=4;
                     99:     emails=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    100:         |((long)buf[l+3]<<24);
                    101:     l-=4;
                    102:     posts=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    103:         |((long)buf[l+3]<<24);
                    104:     l-=4;
                    105:     dlb=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    106:         |((long)buf[l+3]<<24);
                    107:     l-=4;
                    108:     dls=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    109:         |((long)buf[l+3]<<24);
                    110:     l-=4;
                    111:     ulb=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    112:         |((long)buf[l+3]<<24);
                    113:     l-=4;
                    114:     uls=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    115:         |((long)buf[l+3]<<24);
                    116:     l-=4;
                    117:     timeon=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    118:         |((long)buf[l+3]<<24);
                    119:     l-=4;
                    120:     logons=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    121:         |((long)buf[l+3]<<24);
                    122:     l-=4;
                    123:     timestamp=buf[l]|((long)buf[l+1]<<8)|((long)buf[l+2]<<16)
                    124:         |((long)buf[l+3]<<24);
                    125:     l-=4;
                    126:     unixtodos(timestamp-(24*60*60),&date,&curtime); /* 1 day less than stamp */
                    127:        printf("%2.2d/%2.2d/%2.2d T:%5lu   L:%3lu   P:%3lu   "
                    128:                "E:%3lu   F:%3lu   U:%6luk %3lu  D:%6luk %3lu\n"
1.1.1.2 ! root      129:                ,date.da_mon,date.da_day,date.da_year%100,timeon,logons,posts,emails
1.1       root      130:                ,fbacks,ulb/1024,uls,dlb/1024,dls);
                    131:        lncntr++;
                    132:        if(pause && lncntr>=20) {
                    133:                printf("[Hit a key]");
                    134:                if(getch()==3)
                    135:                        break;
                    136:                printf("\r");
                    137:                lncntr=0; } }
                    138: FREE(buf);
                    139: return(0);
                    140: }

unix.superglobalmegacorp.com

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