#include <stdio.h>
#include "gribwlib.h"
#include "pds4.h"

/*
 * Add a bitmap to some grib files NCEP style grib
 *
 * 11/07                             Wesley Ebisuzaki
 */


#define MISSING      -9999.0
#define MISSING_LOW  -9999.9
#define MISSING_HIGH -9998.9

int main(int argc, char **argv) {

    long int pos = 0, pos_fixed = 0;
    int len_grib, i, j, ndata;
    unsigned char *pds, *gds, *bms, *bds;
    float *data;
    FILE *input, *output;

    /* preliminaries .. open up all files */

    if (argc != 3) {
	fprintf(stderr, "%s [in gribfile] [out gribfile]\n", argv[0]);
	fprintf(stderr, " modifies grib file\n");
	exit(6);
    }
    if ((input = fopen(argv[1],"rb")) == NULL) {
        fprintf(stderr,"could not open file: %s\n", argv[1]);
        exit(7);
    }
    if ((output = fopen(argv[2],"wb")) == NULL) {
        fprintf(stderr,"could not open file: %s\n", argv[2]);
        exit(8);
    }

    /* main loop */
    while ((len_grib = rd_grib_rec(input, pos, &pds, &gds, &data, &ndata)) > 0) {
	for (i =j = 0; i < ndata; i++) {
	    if (data[i] > MISSING_LOW && data[i] < MISSING_HIGH) {
		data[i] = UNDEFINED;
		j++;
	    }
	}
	wrt_grib_rec(pds, gds, data, ndata, output);
	printf("bitmap used for %d points\n",j);
	pos += len_grib;
    }
    return 0;
}