Emoslib is now deprecated

A C function which can retrieve GRIB products from an unblocked binary file. The return value must be checked after calling the function.

The products are delivered one per call to a user buffer.

The format and arguments for the function are:

      long readgrib( FILE * file, char * buffer,long * grib_len)

 

readgrib arguments
fileC file pointer
bufferBuffer big enough to hold the product, or NULL. If this argument is a NULL pointer, the function will pass back the length of the next GRIB product and will position the file on the byte following the end of the product pointer
grib_lenSize of the buffer on input; changes to become the size in BYTES of the product read. If end-of-file is hit, the value is returned unchanged (ie when the function return code is -1)
readgrib return value
0A GRIB product has been successfully read
-1End-of-file was hit before a product was read. (Note that EOF does not cause a program fail. This value must be explicitly detected by the caller to avoid looping at EOF)
-2Error in the file-handling (eg if the file contains a truncated product)
-3The size of buffer is not sufficient for the product. In this case, the buffer is filled with bytes from the product and the file is positioned at the beginning of the following GRIB product, if any.
-4The user buffer is too small to allow any processing of the product at all (ie less than 8 bytes long)
-5The GRIB product did not have the 7777 terminator in its expected place. This means the product has been seriously corrupted.