/*ProfiPacket - packet radio terminal program
  Copyright (C) 1999  Alexander Feigl

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

  Author:

  Alexander Feigl
  Burachstraße 51

  D-88250 Weingarten

  Mail : Alexander.Feigl@gmx.de
*/


#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

unsigned char linebuffer[4096];

const unsigned char ConvertAmiga2PC[256]=
                       {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
                        0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
                        0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
                        0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
                        0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,
                        0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
                        0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
                        0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
                        0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,
                        0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
                        0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,
                        0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
                        0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,
                        0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
                        0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,
                        0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
                        0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
                        0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
                        0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
                        0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
                        0x20,0xAD,0x9B,0x9C,0x20,0x9D,0xB3,0x15,
                        0x20,0x63,0xA6,0xAE,0xAA,0xC4,0x72,0xDF,
                        0xF8,0xF1,0xFD,0x33,0x20,0xE6,0x14,0xFA,
                        0x20,0x31,0xA7,0xAF,0xAC,0xAB,0x20,0xA8,
                        0x85,0xA0,0x83,0x41,0x8E,0x8F,0x92,0x80,
                        0x8A,0x90,0x88,0x89,0x8D,0xA1,0x8C,0x8B,
                        0x44,0xA5,0x95,0xA2,0x93,0x4F,0x99,0x78,
                        0x4F,0x97,0xA3,0x96,0x9A,0x59,0x50,0xE1,
                        0x85,0xA0,0x83,0x61,0x84,0x86,0x91,0x87,
                        0x8A,0x82,0x88,0x89,0x8D,0xA1,0x8C,0x8B,
                        0x64,0xA4,0x95,0xA2,0x93,0x6F,0x94,0xF6,
                        0x6F,0x97,0xA3,0x96,0x81,0x79,0x70,0x98};


int main(int argc,char **argv)
 {
  FILE *source;
  FILE *target;
  int maincatalog=0;

  if (argc!=3)
   {
    fprintf(stderr,"Usage : %s <sourcefile> <targetfile>\n",argv[0]);
    exit(20);
   }

  source=fopen(argv[1],"r");
  if (source==NULL)
   {
    fprintf(stderr,"Cannot open source file:%s\n",argv[1]);
    exit(20);
   }

  if (strncmp("ProfiPacket",argv[0],11)==0)
   {
    maincatalog=1;
   }

  target=fopen(argv[2],"w");
  if (target==NULL)
   {
    fprintf(stderr,"Cannot open target file:%s\n",argv[2]);
    fclose(source);
    exit(20);
   }
  while (fgets(linebuffer,4096,source)!=NULL)
   {
    if ( linebuffer[0]!='#' && linebuffer[1]!='#' && maincatalog==0 )
     {
      unsigned char *convptr=linebuffer;
      while (*convptr!=0)
       {
        *convptr=ConvertAmiga2PC[*convptr];
        ++convptr;
       }
     }
    if (fputs(linebuffer,target)==EOF)
     {
      fprintf(stderr,"Write error on target file:%s\n",argv[2]);
      fclose(source);
      fclose(target);
      exit(20);
     }

   }
  return(0);
 }

