
/* Quickie to convert postscript from stdin to eexec format on stdout */

#include "stdio.h"

static unsigned short buffer = 0xd971;
static unsigned long startup = 0xac7252f3; /* 00000000or whatever you want */

main(argc,argv)
char *argv[];
int argc;
{
  unsigned char input;
  unsigned char output;
  int init = 4;
  int i;
  int result;
  FILE *infile,*outfile;

	if(argc !=4)
		{
		printf("usage: encrypt startkey(long hex) infile outfile\n");
		}
	infile=fopen(argv[2],"r");
#ifdef MSDOS
	outfile=fopen(argv[3],"wb");
#else
	outfile=fopen(argv[3],"w");
#endif
	sscanf(argv[1],"%lx",&startup);
		
  fprintf(outfile,"%08lx",startup);
  for (i=0;i<4;++i)
    {
      input = (startup >> ((3-i)*8));
      buffer = (input + buffer) * 0xce6d + 0x58bf;
    }  

  for(;;)
    {
      for (i=0;i<(32-init);++i)
        {
          input = result = fgetc(infile);
          if ((int)result == EOF)
            break;
          output = (input ^ (buffer>>8));
          buffer = (output + buffer) * 0xce6d + 0x58bf;
          fprintf(outfile,"%02.2x",output);
        }
      init = 0;
      fprintf(outfile,"\n");
      if ((int) result == EOF)
      break;
    }
    fclose(infile);
    fclose(outfile);
}

