/* fichier lecture.c
créé par Yann GUIDON (whygee@f-cpu.org)
Fri Jul 29 10:46:21 CEST 2005

 fonction :
   lire un fichier le plus vite possible

 compilation :
   gcc -Wall -g -o lecture lecture.c

 invocation :
   lecture nom_du_fichier
*/

#define _FILE_OFFSET_BITS 64
#define _LARGEFILE_SOURCE
#define _LARGEFILE64_SOURCE

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>  /* open() */
#include <errno.h>  /* perror() */
#include <stdio.h>  /* fprintf(), fflush() */
#include <stdlib.h> /* malloc() */
#include <unistd.h> /* exit(), read() */

#ifndef BUFFER_SIZE
#define BUFFER_SIZE (64*1024)
#endif

int main (int argc, char *argv[]) {
  off_t total_lu=0, buffsize=BUFFER_SIZE;
  int fd_in;
  ssize_t t=0;
  char *buffer;

  fd_in = open(argv[1], O_RDONLY);
  if (fd_in == -1) {
    perror("Erreur à l'ouverture de la source");
    exit(EXIT_FAILURE);
  }

  buffer=malloc(buffsize);
  if (buffer == NULL) {
    perror("Erreur de malloc() ");
    exit(EXIT_FAILURE);
  }

  while ( (t = read(fd_in, buffer, buffsize)) >0 ) {
    total_lu+=t;
/*    fprintf(stderr,"%lld%c", total_lu, 0xD);
    fflush(NULL); */
  }

  if (t < 0) {
    perror("Erreur de lecture ");
    exit(EXIT_FAILURE);
  }

  exit(EXIT_SUCCESS);
}
