/* cookindx.c -- Creates an index file for the fortune cookie program */
/* Lars "ZAP" Hamre 30/08-1990                                        */

#include "stdio.h"
#include "stdlib.h"

#define SEEK_SET 0

long index, cookies;
FILE *fp1, *fp2;
char ch, lastch;
char str[100];

void PutNum(long num, FILE *);

void main(int argc, char **argv)
{
   if (argc<3)
   {
      printf("cookindx -- Lars \"ZAP\" Hamre 1990\n");
      printf("Creates an index file for the fortune cookie program.\n");
      printf("usage: cookindx <cookiefile> <indexfile>\n");
      exit(0);
   }

   fp1 = fopen(argv[1],"rb");
   if (fp1==NULL)
   {
      printf("cookindx: Can't open cookiefile '%s'!\n",argv[1]);
      exit(20);
   }

   fp2 = fopen(argv[2],"wb");
   if (fp2==NULL)
   {
      printf("cookindx: Can't open indexfile '%s'!\n",argv[2]);
      exit(20);
   }

   putc(0,fp2); putc(0,fp2); putc(0,fp2); putc(0,fp2);

   for (;;)
   {
      ch = getc(fp1);
      if (ch==EOF) break;

      if (ch=='%')
      {
         if (lastch=='%')
         {
            cookies++;
            PutNum(index-1, fp2);
            printf("-- Cookie %ld at %ld\r", cookies, index-1);
         }
      }
      lastch = ch;
      index++;
   }

   fseek(fp2, 0, SEEK_SET);
   PutNum(cookies, fp2);

   fclose(fp1);
   fclose(fp2);
}


void PutNum(long num, FILE *fp)
{
   putc( num >> 24,        fp);
   putc((num >> 16) & 255, fp);
   putc((num >> 8)  & 255, fp);
   putc( num        & 255, fp);
}

/* End of File */
