/* Print
        Guenther Fleige
        Am Lohhof 22c
        2000 Wedel

        Version:1.0  6.12.88     */

#include <stdio.h>
#include <exec/types.h>


FILE *fopen(), *fprt,*fpar,*fpin;   /* Filepointer */

char *seq[]=
        {
         "reset*\034\100\033\121\113\033\154\005*",   /*  esc-sequences   */
         "black*\033\162\000*",                       /*  in octal        */
         "red*\033\162\001*",                         /*  for             */
         "blue*\033\162\002*",                        /*  NEC CP6         */
         "green*\033\162\006*",
         "usa*\033\122\000*",
         "germany*\033\122\002*",
         "nlq*\033\170\001*",
         "draft*\034\123\000\033\170\000*",
         "fast*\033\115\034\123\001*",
         "ulon*\033\055\001*",
         "uloff*\033\55\000*",
         "12cpi*\033\115*",
         "10cpi*\033\120*",
         "italon*\033\064*",
         "italoff*\033\065*",
         "boldon*\033\107*",
         "boldoff*\033\108*",
         "propor*\033\160\001*",
         "block*\033\141\003*",
         "ff*\014*",
         "###" };
                 /*     # = Endmark    */

main(argc,argv)
int argc;
char *argv[];      /* argv1 = Filename
                      argv2-n = Options */
{

int i=0,inchar;

if(argc < 2 || *argv[1] == '?') /* help required */
  {
  help();
  exit(66);
  }
while(argc > 2)             /* all options done ? */
  {
  option(argv[argc-1]);
  argc--;
  }

if((strcmp(argv[1],"none") != NULL))  /* none = nothing to print */
                                      /* set only options        */
   {
   if ((fprt = fopen("prt:","w")) == NULL)
      {
      printf("can't open prt:\n");
      exit(77);
      }
   if ((fpin = fopen(argv[1],"r")) == NULL)
      {
       printf("can't open %s\n",argv[1]);
       fclose(fprt);
       exit(88);
       }
   while((inchar = getc(fpin)) != EOF)
      {
        if ( inchar == '^')
           inchar = 27 ;               /* sent escape */



      putc(inchar,fprt);               /*   print file    */
      }
   fclose(fpin);
   fclose(fprt);
   }
return(0);
}


option(para)

char *para;

{
int i = 0,k = 0;
char temp[20];
char *ptemp;
ptemp = temp;

for(k=0;k<20;k++)
   *(ptemp+k) = '\0'; /* init temp with EOS  */

while(*(seq[i]) != '#')      /*  endmark ?  */
    {
    for(k=0;k < strlen(para);k++)
       *(ptemp+k) = *(seq[i]+k);
    if(strcmp(ptemp,para) == NULL)       /*  option valid ? */
      {
      if ((fpar = fopen("par:","w")) == NULL)
         {
         printf("can't open par:\n"); /* open printer for esc-sequence */
         exit(99);
         }
      while(*(seq[i]++) != '*');       /* skip seq-name  */
      while(*(seq[i]++) != '*')
        putc((*(seq[i] - 1)),fpar);
                                       /* escseq -> printer */
        fclose(fpar);
        return();
       }
      i++;
     }
printf("I'm sorry, I can't found the requested option <%s> !\n",para);
}

help()
{
int i=0,k=4;

printf("usage: print <filename> \n");
printf("       or\n       print <filename> option  option .....\n");
printf("       or\n       print none option  option .....\n");
printf("valid options are : \n");

while(*seq[i] != '#')
   {
   while(*(seq[i]++) != '*')
       putchar(*(seq[i]-1));
   if(((i+1) % k) != 0 )
      { putchar('\t');putchar('\t');}  /* TAB */
   else
       putchar('\n');                  /* CR  */
   i++;
   }
putchar('\n');
}

 

