diff --git a/src/bufr_util.cc b/src/bufr_util.cc index 0b4ffb0e7..95ff8eeb2 100644 --- a/src/bufr_util.cc +++ b/src/bufr_util.cc @@ -220,7 +220,7 @@ static int bufr_decode_extra_rdb_keys(const void* message, long offset_section2, DEBUG_ASSERT(hdr->ecmwfLocalSectionPresent); - if (hdr->rdbType == 2 || hdr->rdbType == 3 || hdr->rdbType == 8 || hdr->rdbType == 12) { + if (hdr->rdbType == 2 || hdr->rdbType == 3 || hdr->rdbType == 8 || hdr->rdbType == 12 || hdr->rdbType == 30) { isSatelliteType = true; } if (isSatelliteType || hdr->numberOfSubsets > 1) { diff --git a/src/grib_index.cc b/src/grib_index.cc index 1be83df79..b6eb0b3a2 100644 --- a/src/grib_index.cc +++ b/src/grib_index.cc @@ -1254,7 +1254,7 @@ static int codes_index_add_file_internal(grib_index* index, const char* filename if (warn_about_duplicates) { const bool offset_is_unique = map_of_offsets.insert( std::pair(h->offset, h) ).second; if (!offset_is_unique) { - fprintf(stderr, "ECCODES WARNING : File '%s': field offset %lld is not unique.\n", filename, h->offset); + fprintf(stderr, "ECCODES WARNING : File '%s': field offset %ld is not unique.\n", filename, (long)h->offset); long edition = 0; if (grib_get_long(h, "edition", &edition) == GRIB_SUCCESS && edition == 2) { fprintf(stderr, "ECCODES WARNING : This can happen if the file contains multi-field GRIB messages.\n"); diff --git a/tests/bufr_ecc-1785.sh b/tests/bufr_ecc-1785.sh index a09751e8b..1a4ae4a2c 100755 --- a/tests/bufr_ecc-1785.sh +++ b/tests/bufr_ecc-1785.sh @@ -20,7 +20,6 @@ label="bufr_ecc-1785_test" tempBufr=temp.$label.bufr tempFilt=temp.$label.filt tempLog=temp.$label.log -tempRef=temp.$label.ref sample_bufr4=$ECCODES_SAMPLES_PATH/BUFR3_local_satellite.tmpl @@ -32,4 +31,4 @@ result=$(${tools_dir}/bufr_get -p isSatelliteType,isSatellite,satelliteID $tempB [ "$result" = "1 1 78" ] # Clean up -rm -f $tempBufr $tempFilt $tempLog $tempRef +rm -f $tempBufr $tempFilt $tempLog diff --git a/tests/bufr_extract_headers.sh b/tests/bufr_extract_headers.sh index 0d518d732..481a5cd2f 100755 --- a/tests/bufr_extract_headers.sh +++ b/tests/bufr_extract_headers.sh @@ -14,6 +14,8 @@ label="bufr_extract_headers_test" temp1="temp.${label}.1" temp2="temp.${label}.2" +tempBufr=temp.$label.bufr +tempFilt=temp.$label.filt # Multi-message BUFR # -------------------- @@ -190,6 +192,14 @@ ${tools_dir}/bufr_set -s restricted=1 $input $temp1 r=`$EXEC ${test_dir}/bufr_extract_headers restricted $temp1` [ "$r" = "1" ] +# ECC-1785 Allow encoding satelliteID when rdbType=30 +# ---------------------------------------------------- +sample_bufr4=$ECCODES_SAMPLES_PATH/BUFR3_local_satellite.tmpl +echo 'set numberOfSubsets=1; set rdbType=30; set satelliteID=78; write;' > $tempFilt +${tools_dir}/codes_bufr_filter -o $tempBufr $tempFilt $sample_bufr4 +r=$(${test_dir}/bufr_extract_headers isSatellite,satelliteID $tempBufr) +[ "$r" = "1 78" ] + echo "Test with invalid inputs..." # --------------------------------- @@ -234,3 +244,4 @@ grep -q "No BUFR messages in file" $temp2 # Clean up rm -f $temp1 $temp2 +rm -f $tempBufr $tempFilt