#include<stdio.h>
extern unsigned char verbose;

FILE *open_file (filename, flag)
char *filename,*flag;
  {
  FILE *fd;
  if (verbose != 0) fprintf (stderr,"opening file %s \n",filename);
  if ((fd = fopen (filename,flag)) == NULL)
    {
    fprintf (stderr,"could not find %s -- exiting \n",filename);
    exit(1);
    } 
  else return fd;
  }


FILE *open_file_noquit (filename, flag)
char *filename,*flag;
  {
  FILE *fd;
  if ((fd = fopen (filename,flag)) == NULL)
    if (verbose != 0) fprintf (stderr,"problems opening %s\n",filename);
  return fd;
  }



int get_file_size  (fd)
FILE *fd;
  {   
  int size;       

  fseek(fd,0L,2);
  size = ftell(fd);
  fseek(fd,0L,0);
  return size;
  
  }

unsigned char *read_image (size,fd)
FILE  *fd;
int    size;
  { 
  unsigned char *data;
  data = (unsigned char *) malloc (size);
  if (verbose != 0) fprintf (stderr,"reading %d bytes from file \n",size);
  if (fread (data,1,size,fd) != size)
      {
      fprintf (stderr,"problems reading data -- exiting\n\n");
      fclose (fd);
      exit(1);
      }
  return data;
  }

unsigned char *read_entire_file_into_buffer (filename)
char *filename;
  {
  int    size;
  FILE   *fd;
  unsigned char *buffer;

  fd = open_file (filename,"r");
  size = get_file_size (fd);
  buffer = read_image (size,fd);
  return buffer;
  }


write_image (data,size,fd)
unsigned char *data;
FILE  *fd;
int    size;
  {
  printf ("writing %d bytes data\n",size);
  if (fwrite (data,1,size,fd) != size)
      {
      fprintf (stderr,"problems writing data -- exiting\n");
      fclose (fd);
      exit(-1);
      }
  }

