/*
 * Zpracovani binarniho souboru
 */
 
#include <stdio.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>

unsigned short int i,cislo;
FILE *f1, *f2;
char buffer[0x10000]; // = 65536 B = 64 kB
int precteno,zapsano;

int main(int argc, char *argv[]) {
//
// Uvodni kontroly
//
  if (argc<3) {
    printf("\n\
    Program zkopiruje soubor\n\
    Syntax: %s zdrojovy_soubor cilovy_soubor\n\n", argv[0]);
    return 1;
  }
  if ( (f1 = fopen(argv[1],"r"))== NULL ) {
    printf("\nCHYBA pri otevirani souboru %s - %s\n\n", argv[1], strerror(errno));
    return 1;
  }
  if ( (f2 = fopen(argv[2],"w"))== NULL ) {
    printf("\nCHYBA pri otevirani souboru %s - %s\n\n", argv[2], strerror(errno));
    return 1;
  }
//
// Hlavni cyklus          
//
  while ( (precteno=fread(buffer,1,sizeof(buffer),f1)) > 0 ) {
    zapsano=fwrite(buffer,1,precteno,f2);
    if (zapsano!=precteno) {
      printf("\nCHYBA pri kopirovani souboru\n\n");
      return 1;
    }
  }
//
// Zaverecne kontroly
//
  if ( fclose(f1)==EOF ){
    printf("\nCHYBA pri zavirani souboru %s - %s\n\n", argv[1], strerror(errno));
    return 1;
  }
  if ( fclose(f2)==EOF ){
    printf("\nCHYBA pri zavirani souboru %s - %s\n\n", argv[2], strerror(errno));
    return 1;
  }
  return 0;
}