#include <stdio.h>
#include <zlib.h>

extern FILE *a;
extern gzFile inFileA;

extern FILE *b;
extern gzFile inFileB;

extern FILE *dest;
extern gzFile outFileDest;

extern int compressFileInputA;
extern int compressFileInputB;
extern int compressFileOutput;

struct image_params {

  char * filename;
  int width;
  int height;
  /* max_val is the maximum colour component value - often 255 */
  int max_val;
  /* type is either '5' to indicate a P5 file or '6' to indicate a P6 file */
  int type;
  unsigned int numberOfImages;
  float exponent;
};

void get_image_params(FILE * ifs, struct image_params * params);

void get_image_type(FILE * ifs, struct image_params * params);
void get_image_params_preserve_comments(FILE * ifs, struct image_params * params,FILE *ofs);

int fileread( void *ptr, int size, int nmemb, FILE *stream);
int filewrite( const void *ptr, int size, int nmemb, FILE *stream);
char *filegets(char *s, int size, FILE *stream);
int filegetc(FILE *stream);
int fileeof(FILE *stream);


int isGZIPFile(char *fileName);
