////////////////////////////////////////////////////////////////////////////////
//Copyright (C) Aviral Mittal.
////////////////////////////////////////////////////////////////////////////////
// This program converts a Hex file into a Binary file.
// The input is hex file with one byte per line e.g
// Note only capital letters are to be used for writing hex numbers.
// The program removes the '\n' char from every line before converting it to
// a binary file. In fact it is just reverse of bin2hex.c
//----
// FF
// FA
// A1
// 00
// .
// .
//----
// Output is a binary file.
////////////////////////////////////////////////////////////////////////////////
#include <stdio.h>
int main(int argc, char* argv[]){

  FILE *stream, *fopen();
  FILE *fi;//fi = fopen(argv[1], "r");;
  FILE *fo;
  unsigned char data; 
  unsigned char datao; 
  char i;
  unsigned int j;
  i = '0';

  if (argc == 3) {
    printf("ok\n");
    if ( (fi = fopen(argv[1],"r")) == NULL) {  
      printf("Can't open %s",argv[1]);
      exit(1);
    }
    else { //of if ( (fi = fopen(argv[1],"r")) == NULL)
      j = 0;
      fo = fopen(argv[2], "w");
      while(feof(fi) == 0) {
        fread(&data, 1, 1, fi);
        j++;
        if( j == 1) {
          if(data>=48 && data<=57) {
            datao = (data-48)*16;
          }
          else {  
            datao = (data-55)*16;
          }
          //else {
          //  printf("Error: input not OK\n");
          //}
        }
        else if (j==2) {
          if(data>=48 && data<=57) {
            datao = datao+(data-48);
          }
          else {
            datao = datao+(data-55);
          }
          //else {
          //  printf("Error: input not OK\n");
          //}
        } 
        else if (j=3) {
          fprintf(fo, "%c",datao);
          //fprintf(fo, "\n");
          j=0;
        }
      }//while(feof(fi) == 0)
      fclose(fo);
    }//else of if ( (fi = fopen(argv[1],"r")) == NULL)
  }// if (argc == 3)
  else {
    printf("Usage: a.out <input_binary_file> <output_hex_file>\n");
  }
}
