/* Archive fixer from the web */

#include <stdio.h>
#include <stdlib.h>
#include "swis.h"

#define name1 argv[2]?argv[1]:bakname
#define name2 argv[2]?argv[2]:argv[1]

int main(int argc, char *argv[])
{
 FILE *IN,*OUT;
 char ch=0,oldch=0;
 char bakname[]="ArcFixed/arc";
 printf("ArcFS (v1.02) archive fixer for web downloads\n");
 printf("By Paul F. Johnson : paulf.johnson@ukonline.co.uk\n\n");
 printf("This program should fix the problems which Windows based \n");
 printf("browsers spew up (text on screen instead of a file).\n\n");
 
 if (argc>=2) {
               if (!argv[2])
               {
                printf("Creating new file (%s).\n",bakname);
                if (rename(argv[1],bakname))
                 {
                  printf("I cannot rename the input file\n");
                  exit(1);
                 }
                }
                printf("%s --> %s\n",name1,name2);
                if (!(IN=fopen(name1,"rb")))
                {
                 printf("Unable to read the source file\n");
                 exit(1);
                }
                if (!(OUT=fopen(name2,"w+b")))
                {
                 printf("Unable to write the fixed file\n");
                 exit(1);
                }
                oldch=getc(IN);
                ch=getc(IN);
                while (!feof(IN)) 
                 {
                  if (ch == 0x0a) 
                  {
                   if (oldch==0x0d)
                   {
                    putc(ch,OUT);
                    ch=getc(IN);
                   }
                   else
                   putc(oldch,OUT);
                  }
                  else
                  putc(oldch,OUT);
                  oldch=ch;
                  ch=getc(IN);
                 }
                 putc(oldch,OUT);
                 fclose(IN);
                 fclose(OUT);
                 printf("Jobs a good 'un.\n\n");
                 _swi(OS_File,18,name1,0xddc)                 
                }
                else
                {
                 printf("Usage\n");
                 printf("\t\tArcFixer old/arc <new/arc> \n");
                 printf("Extensions are not required though\n");
                 exit(1);
                }
 return 0;
}
