//main.c
#include <stdio.h>
#include <stdlib.h>
#include "functions.h"

int main(int argc, char** argv){
    FILE* pfile = NULL;
    FILE* csvpfile = NULL;
    char* csvFileName;

    if (argc != 2){
      printf ("File name error! Enter full path!\n");
      exit (INPUT_FILE_NAME_ERROR);
    }

    pfile = fileOpen(argv [1]);
    csvFileName = csvCreateFileName (argv [1]);
    csvpfile = fopen (csvFileName, "w");

    textToCSVConverter(pfile, csvpfile);

    fclose (pfile);
    fclose (csvpfile);
    return EXIT_STATUS_OK;
}


//functions.c
#include "functions.h"

FILE* fileOpen(char* filePath){
  FILE* pfile = NULL;
  if ((pfile = fopen(filePath, "r")) == NULL){
    printf ("Error opening file!\n");
    exit (FILE_OPEN_ERROR);//Could not open stream
  }
  return pfile;
}

FILE* fileCreate(char* filePath){
  FILE* pfile = NULL;
  if ((pfile = fopen(filePath, "w")) == NULL){
    printf ("Error creating file!\n");
    exit (FILE_CREATE_ERROR);//Could not create stream
  }
  return pfile;
}

void textToCSVConverter (FILE* txtpfile, FILE* csvpfile){
  char tmpChar;
  unsigned short int check = 0;

  while ((tmpChar = fgetc (txtpfile)) != EOF){
    if ((char) tmpChar == ';'){
      strcpy(&tmpChar, ",");
      fwrite (&tmpChar, 1, 1, csvpfile);
      putc(tmpChar, stdout);
    }
    if (!(check = fwrite (&tmpChar, 1, 1, csvpfile)))
      printf ("No byte written!\n");
  }
}

char* csvCreateFileName (char* FileName){
  size_t pathLen = strlen (FileName);
  char fileExt [4] = {'c', 's', 'v', '\0'};
  unsigned short int i, j;

  printf ("TXT File Name: %s\n", FileName);
  for (i = pathLen - 3, j = 0; i < pathLen; i++, j++)
    FileName [i] = fileExt [j];
  printf ("CSV File Name: %s\n", FileName);

  return FileName;
}

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

#define BUFFER 128

#define INPUT_FILE_NAME_ERROR -3
#define FILE_OPEN_ERROR       -2
#define FILE_CREATE_ERROR     -1
#define EXIT_STATUS_OK         0

FILE* fileOpen                (char* filePath);
FILE* fileCreate              (char* filePath);
void  textToCSVConverter      (FILE* txtpfile, FILE* csvpfile);
char* csvCreateFileName       (char* txtFileName);