/************************* Main *********************/
/*                                                  */
/*  Joke: a random Joke selector                   */
/*                                                  */
/****************************************************/
#include <stdio.h>
extern int rand(),srand();
extern long time();
FILE *jokefile;
char buf[80],name[80];
short num,line;
#define ABS(x) ((x)>0?(x):(-(x)))

main(argc,argv)
int argc;
char *argv[];
{
   char *src;

   src = argv[1];
   if(src[0]=='?'||(argc!=2&&argc!=3))
   {
help:
      printf("\f"); /* clear screen (clear) */
      center(1,"     [7m                            [m");
      center(2,"     [7m J O K E  O F  T H E  D A Y [m");
      center(3,"     [7m                            [m");
      center(5,"Written by");
      center(7,"Charles Jeffery Carter");
      center(8,"4601 Wilshire Cove    ");
      center(9,"Huntsville, Ala. 35816");
      center(11,"This software may be freely distributed");
      center(12,"If you like this program, Let me know! ");
      center(14,"Joke is used to help select a random joke for the day!");
      center(16,"Usage--> Joke Type [Number]");
      center(18,"Types avaliable are in current directory as Type.Joke ");
      center(19,"File format is number of records followed by records. ");
      center(20,"Each record ends with a '/' in the first column. ;8^) ");
      center(22,"     [7m Press Return to Continue [m");
      getchar();
      printf("\f"); /* reset screen (clear) */
      exit(0);
   }
   strcpy(name,src);
   strcat(name,".Joke");
   jokefile=fopen(name,"r");
   if (jokefile==NULL)
   {
      printf("File %s not found! Hit Return\n",name);
      getchar();
      goto help;
   }
   fgets(buf,80,jokefile);
   num=atoi(buf);
   if(num==0)
   {
      printf("Invalid number [%s] in file %s\n",buf,name);
      fclose(jokefile);
      goto help;
   }
   srand((short)time(0L));
   if(argc==3) line=atoi(argv[2])-1;
   else line=rand();
   line=ABS(line);
   line%=num;
   printf("Number %d in %s\n",line+1,name);
   while(line && fgets(buf,80,jokefile)) if (buf[0]=='/') --line;
   while(fgets(buf,80,jokefile) && buf[0]!='/') printf(buf);
   fclose(jokefile);
}


/************************* center ***********************/
center(row,string)
int row;
char *string;
/* printf the string centered on given row */
{
int col;
   col = (76-strlen(string))/2;
   printf("[%d;%dH%s",row,col,string);
}
