eccodes/tests/tests.ecmwf/serialize.c

67 lines
1.2 KiB
C

#include "test.h"
#define READ_ANY
int main(int argc,char** argv)
{
#ifdef READ_ANY
char buffer[1024*1024*80];
long length = sizeof(buffer);
#endif
#ifdef GRIB_READ_ANY
char buffer[1024*1024*80];
size_t length= sizeof(buffer);
grib_context *gc=0;
#endif
#ifdef GRIB_READ_ANY_ALLOC
size_t length = 0;
unsigned char* buffer=0;
grib_context *gc=0;
#endif
FILE *f;
grib_handle *g = 0;
int e;
f = fopen(argc > 1 ? argv[1]: "data" ,"r");
if(!f)
{
perror(argc > 1 ? argv[1]: "data");
exit(1);
}
#ifdef READ_ANY
printf("#---- readany used ----\n");
while((e = readany(f,buffer,&length)) != -1)
#endif
#ifdef GRIB_READ_ANY
printf("#---- grib_read_any used ----\n");
while((e = grib_read_any(gc,f,buffer,&length)) != GRIB_END_OF_FILE)
#endif
#ifdef GRIB_READ_ANY_ALLOC
printf("#---- grib_read_any_alloc used ----\n");
while((e = grib_read_any_alloc(gc,f,&buffer,&length)) != GRIB_END_OF_FILE)
#endif
{
if(e != 0 )
{
printf("grib_read_any error %d\n",e);
exit(e);
}
g = grib_handle_new_from_message(0,buffer,length);
grib_dump_content(g,stdout,"serialize",0,NULL);
grib_handle_delete(g);
}
exit(0);
}