mirror of https://github.com/ecmwf/eccodes.git
Tools: Print hint about product when wrong tool used
This commit is contained in:
parent
f199569e1f
commit
9c71ac509c
|
@ -119,6 +119,25 @@ result=`${tools_dir}/bufr_get -p unpack:d,heightOfStation aaen_55.bufr`
|
||||||
result=`${tools_dir}/bufr_get -p unpack:s,heightOfStation aaen_55.bufr`
|
result=`${tools_dir}/bufr_get -p unpack:s,heightOfStation aaen_55.bufr`
|
||||||
[ "$result" = "0 858000" ]
|
[ "$result" = "0 858000" ]
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# Wrong message type
|
||||||
|
# ----------------------------------------
|
||||||
|
f=$data_dir/sample.grib2
|
||||||
|
set +e
|
||||||
|
${tools_dir}/bufr_get -p edition $f > $fLog 2>&1
|
||||||
|
status=$?
|
||||||
|
set -e
|
||||||
|
[ $status -ne 0 ]
|
||||||
|
grep -q "Input file seems to be GRIB" $fLog
|
||||||
|
|
||||||
|
f=$ECCODES_SAMPLES_PATH/budg.tmpl
|
||||||
|
set +e
|
||||||
|
${tools_dir}/bufr_get -p edition $f > $fLog 2>&1
|
||||||
|
status=$?
|
||||||
|
set -e
|
||||||
|
[ $status -ne 0 ]
|
||||||
|
grep -q "Input file seems to be GRIB" $fLog
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
# Unreadable message
|
# Unreadable message
|
||||||
|
|
|
@ -88,5 +88,16 @@ grep -q "unreadable message" $tempText
|
||||||
rm -f $outfile
|
rm -f $outfile
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------
|
||||||
|
# Wrong message type
|
||||||
|
# ----------------------
|
||||||
|
set +e
|
||||||
|
${tools_dir}/grib_get -p edition $ECCODES_SAMPLES_PATH/BUFR3.tmpl > $tempText 2>&1
|
||||||
|
status=$?
|
||||||
|
set -e
|
||||||
|
[ $status -ne 0 ]
|
||||||
|
grep -q "Input file seems to be BUFR" $tempText
|
||||||
|
|
||||||
|
|
||||||
# Clean up
|
# Clean up
|
||||||
rm -f $tempText
|
rm -f $tempText
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
|
|
||||||
#include "grib_tools.h"
|
#include "grib_tools.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
#if HAVE_LIBJASPER
|
#if HAVE_LIBJASPER
|
||||||
/* Remove compiler warnings re macros being redefined */
|
/* Remove compiler warnings re macros being redefined */
|
||||||
|
@ -308,6 +309,29 @@ static int grib_tool_with_orderby(grib_runtime_options* options)
|
||||||
|
|
||||||
static char iobuf[1024 * 1024];
|
static char iobuf[1024 * 1024];
|
||||||
|
|
||||||
|
// Read the first few bytes of the file to guess what kind of product
|
||||||
|
// it could be. Returns an empty string if it fails
|
||||||
|
static std::string guess_file_product(const std::string& filename)
|
||||||
|
{
|
||||||
|
std::string result;
|
||||||
|
char buffer[5] = {0,};
|
||||||
|
FILE* fin = fopen(filename.c_str(), "rb");
|
||||||
|
if (fin) {
|
||||||
|
size_t bytes = fread(buffer, 1, sizeof(buffer), fin);
|
||||||
|
if (bytes == sizeof(buffer)) {
|
||||||
|
if (strncmp(buffer, "GRIB", 4)==0) {
|
||||||
|
result = "GRIB";
|
||||||
|
} else if (strncmp(buffer, "BUDG", 4)==0) {
|
||||||
|
result = "GRIB";
|
||||||
|
} else if (strncmp(buffer, "BUFR", 4)==0) {
|
||||||
|
result = "BUFR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(fin);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
static int grib_tool_without_orderby(grib_runtime_options* options)
|
static int grib_tool_without_orderby(grib_runtime_options* options)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
@ -419,6 +443,10 @@ static int grib_tool_without_orderby(grib_runtime_options* options)
|
||||||
|
|
||||||
if (infile->handle_count == 0) {
|
if (infile->handle_count == 0) {
|
||||||
fprintf(stderr, "%s: No messages found in %s\n", tool_name, infile->name);
|
fprintf(stderr, "%s: No messages found in %s\n", tool_name, infile->name);
|
||||||
|
std::string product = guess_file_product(infile->name);
|
||||||
|
if (!product.empty()) {
|
||||||
|
fprintf(stderr, "%s: Input file seems to be %s\n", tool_name, product.c_str());
|
||||||
|
}
|
||||||
if (options->fail)
|
if (options->fail)
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue