/*
.--------------.--------------.
| SKEL-RS v1.2 | Record Stats |
`--------------^--------------'

/**********************/
/*****  Includes  *****/
/**********************/

#include <proto/all.h>
#include <stdio.h>

#include <string.h>
#include <skeleton/commas.h>
#include <tempest/headers.h>
#include <tempest/Skel-Data.h>
#include <tempest/Skel-Current.h>

/************************/
/*****  Structures  *****/
/************************/

struct User User;
struct SKEL SKEL;
struct Current Current;

char *mon[]={ "Jan","Feb","Mar","Apr","May","Jun",
              "Jul","Aug","Sep","Oct","Nov","Dec" };

/**************************/
/*****  Main Program  *****/
/**************************/

void main(int argc,char *argv[])
{
/************************/
/*****  Variables  ******/
/************************/

 char Outname[120],shit1[200],string1[60],string2[50],string3[50];
 char Date[9][15];
 int i=1,Month;
 int fd;
 FILE *out2;

/****************************/
/*****  CLI Interface  ******/
/****************************/

 sprintf(shit1,"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"");
 if(argc != 3)
  {
   PutStr("\n[m[1m    _______ _________\n");
   PutStr("   / ___/ [4m/[m[1m/ / ___/ /    [[32mSKEL-RS v3.27[m[1m] - [3mRecord Stats[m\n");
   PutStr("[1m  [4m/[m[1m__  /   _/ ___/ [4m/[m[1m__\n");
   PutStr("[1m [4m/[m[1m____[4m/[m[1m_/\\_[4m)[m[1m____[4m/[m[1m____/   For Tempest BBS - [Programmer: Michael Bockert]\n");
   PutStr(shit1);
   PutStr("\n[m   USAGE: SKEL-RS [BBS Path] [OutFile]\n");
   PutStr(" EXAMPLE: SKEL-RS TEMPEST: RAM:TEST\n\n");
   PutStr("[BBSPath] Path to BBS Files and Setup Directory\n\n");
   PutStr("[OutFile] Path & Name of the created file\n\n");
   exit(0);
  }

/*************************************/
/*****  Load Skel-Current.Data  ******/
/*************************************/

 fd=Open("S:SKEL-Current.Data",MODE_OLDFILE);
 if(fd==0)
  {
   PutStr("\nS:Skel-Current.Data not found!\nRun Skel-Updater Util!\n");
   exit(0);
  }
 Read(fd,(char *)&Current, sizeof(struct Current));
 Close(fd);

/*********************************/
/*****  Load Skel-Data.Data  *****/
/*********************************/

 sprintf(Outname,"%sSetup/Skel-Data.Data",argv[1]);
 fd=Open(Outname,MODE_OLDFILE);
 if(fd==0)
  {
   PutStr("\nSkel-Data.Data not found!\nRun Skel-Updater Util!\n");
   exit(0);
  }
 Read(fd,(char *)&SKEL, sizeof(struct SKEL));
 Close(fd);

/********************/
/*****  Output  *****/
/********************/

 out2=fopen(argv[2],"w");
 if(out2==NULL)
  {
   PutStr("Error writing output file!\n");
   exit(0);
  }
/*
 Dates[1] = Calls
 Dates[2] = Messages
 Dates[3] = Busy
 Dates[4] = NewUser
 Dates[5] = UL
 Dates[6] = ULKB
 Dates[7] = DL
 Dates[8] = DLKB
*/

 do
  {
   strmid(SKEL.RDates[i],string1,3,2);
   Month = atoi(string1);
   strcpy(string1,mon[Month-1]);
   strmid(SKEL.RDates[i],string2,1,2);
   strmid(SKEL.RDates[i],string3,5,2);
   sprintf(Date[i],"%s %2s,19%s",string1,string2,string3);
   i++;
  }
 while(i<9);
 fprintf(out2,"\f~+                       [36mRecord Stats for [33m[ [0m%d[33m] [36mNode(s)\n",
                                             Current.Nodes);
 fprintf(out2,"[34m%s\"\"\"\"\"\"\"\n",shit1);
 fprintf(out2,"[34m.-------------.----------------------.   .-------------.----------------------.\n");
 fprintf(out2,"[34m| [33mRecord Date [34m| [33mAll Time Records     [34m|   | [33mRecord Date [34m| [33mAll Time Records     [34m|\n");
 fprintf(out2,"[34m|-------------|----------------------|   |-------------|----------------------|\n");
 fprintf(out2,"[34m| [32m%s [34m|  [35m[[0m%4d[35m]  [36mCalls       [34m|[36m  /[34m| [32m%s [34m|     [35m[[0m%4d[35m] [36mUploads   [34m|\n",
                Date[1],SKEL.RCalls,Date[5],SKEL.RUL);
 fprintf(out2,"[34m| [32m%s [34m|  [35m[[0m%4d[35m]  [36mMessages    [34m|[36m\\/ [34m| [32m%s [34m| [35m[ [0m%7s[35m] [36mUL KB     [34m|\n",
                Date[2],SKEL.RMessages,Date[6],commas(SKEL.RULKB,buff));
 fprintf(out2,"[34m| [32m%s [34m|   [35m[[0m%3d[35m]  [36mNew Users   [34m|   | [32m%s [34m|     [35m[[0m%4d[35m] [36mDownloads [34m|\n",
                Date[4],SKEL.RNewUsers,Date[7],SKEL.RDL);
 fprintf(out2,"[34m| [32m%s [34m| [35m[[0m%5d[35m]  [36mMins Busy   [34m|   | [32m%s [34m| [35m[ [0m%7s[35m] [36mDL KB     [34m|\n",
                Date[3],SKEL.RBusy,Date[8],commas(SKEL.RDLKB,buff));
 fprintf(out2,"[34m`---[0m.[34m---------^------------------[0m.[34m---'   `---[0m.[34m---------^------------------[0m.[34m---'\n");
 fprintf(out2,"    [0mO                            O            O                           O\n");
 fprintf(out2,"    [0mO                            O            O                           O\n");
 fprintf(out2,"[34m.---[0m`[34m----------------------------[0m'[34m---.   .---[0m`[34m----------------------------[0m'[34m---.\n");
 fprintf(out2,"[34m|       [33m-+- Today's  Stats -+-       [34m|   |     [33m-+- Yesterday's  Stats -+-     [34m|\n");
 fprintf(out2,"[34m|------------------------------------|   |------------------------------------|\n");
 fprintf(out2,"[34m| [36mCalls     [35m[[0m%4d[35m] [36mNew Users   [35m[[0m%3d[35m] [34m|[36m/\\ [34m| [36mCalls     [35m[[0m%4d[35m] [36mNew Users   [35m[[0m%3d[35m] [34m|\n",
                           Current.Calls,Current.NewUsers,SKEL.HCalls[1],SKEL.HNewUsers[1]);
 fprintf(out2,"[34m| [36mMessages  [35m[[0m%4d[35m] [36mMins Busy [35m[ [0m%4d[35m] [34m|  [36m\\[34m| [36mMessages  [35m[[0m%4d[35m] [36mMins Busy [35m[ [0m%4d[35m] [34m|\n",
                          Current.Messages,Current.Busy,SKEL.HMessages[1],SKEL.HBusy[1]);
 fprintf(out2,"[34m| [36mUploads   [35m[[0m%4d[35m] [36mUL KB  [35m[ [0m%7s[35m] [34m|   | [36mUploads   [35m[[0m%4d[35m] [36mUL KB  [35m[ ",
                          Current.UL,commas(Current.ULKB,buff),SKEL.HUL[1]);
 fprintf(out2,"[0m%7s[35m] [34m|\n",
              commas(SKEL.HULKB[1],buff));
 fprintf(out2,"[34m| [36mDownloads [35m[[0m%4d[35m] [36mDL KB  [35m[ [0m%7s[35m] [34m|   | [36mDownloads [35m[[0m%4d[35m] [36mDL KB  [35m[ ",
                          Current.DL,commas(Current.DLKB,buff),SKEL.HDL[1]);
 fprintf(out2,"[0m%7s[35m] [34m|\n",
              commas(SKEL.HDLKB[1],buff));
 fprintf(out2,"[34m`------------------------------------'   `------------------------------------'[0m~r\n");
 fclose(out2);
 PutStr("\nSKEL-RS Done!\n");
 exit(0);
}
