Allow sample file specification with extension

This commit is contained in:
Shahram Najm 2022-03-14 15:16:16 +00:00
parent a2cb76c7ec
commit aa7e202083
3 changed files with 14 additions and 10 deletions

View File

@ -55,7 +55,10 @@ static grib_handle* try_template(grib_context* c, const char* dir, const char* n
grib_handle* g = NULL; grib_handle* g = NULL;
int err = 0; int err = 0;
sprintf(path, "%s/%s.tmpl", dir, name); if (string_ends_with(name, ".tmpl"))
sprintf(path, "%s/%s", dir, name);
else
sprintf(path, "%s/%s.tmpl", dir, name);
if (c->debug) { if (c->debug) {
fprintf(stderr, "ECCODES DEBUG try_template path='%s'\n", path); fprintf(stderr, "ECCODES DEBUG try_template path='%s'\n", path);
@ -83,7 +86,10 @@ static grib_handle* try_bufr_template(grib_context* c, const char* dir, const ch
grib_handle* g = NULL; grib_handle* g = NULL;
int err = 0; int err = 0;
sprintf(path, "%s/%s.tmpl", dir, name); if (string_ends_with(name, ".tmpl"))
sprintf(path, "%s/%s", dir, name);
else
sprintf(path, "%s/%s.tmpl", dir, name);
if (c->debug) { if (c->debug) {
fprintf(stderr, "ECCODES DEBUG try_template path='%s'\n", path); fprintf(stderr, "ECCODES DEBUG try_template path='%s'\n", path);
@ -108,8 +114,10 @@ static grib_handle* try_bufr_template(grib_context* c, const char* dir, const ch
static char* try_template_path(grib_context* c, const char* dir, const char* name) static char* try_template_path(grib_context* c, const char* dir, const char* name)
{ {
char path[2048]; char path[2048];
if (string_ends_with(name, ".tmpl"))
sprintf(path, "%s/%s.tmpl", dir, name); sprintf(path, "%s/%s", dir, name);
else
sprintf(path, "%s/%s.tmpl", dir, name);
if (codes_access(path, F_OK) == 0) { if (codes_access(path, F_OK) == 0) {
return grib_context_strdup(c, path); return grib_context_strdup(c, path);

View File

@ -31,7 +31,7 @@ int main(int argc, char* argv[])
double zval[ILCHAM]; double zval[ILCHAM];
int m, n, k; int m, n, k;
GRIB_CHECK(((h = grib_handle_new_from_samples(NULL, "sh_ml_grib2")) == NULL), 0); GRIB_CHECK(((h = grib_handle_new_from_samples(NULL, "sh_ml_grib2.tmpl")) == NULL), 0);
/* Meteo-France settings */ /* Meteo-France settings */
GRIB_CHECK(grib_set_long(h, "centre", 85), 0); GRIB_CHECK(grib_set_long(h, "centre", 85), 0);

View File

@ -58,10 +58,6 @@ int main(int argc, char* argv[])
} }
if (resource_type == SAMPLE) { if (resource_type == SAMPLE) {
char* t = strstr(resource_path, ".tmpl");
if (t) {
*t = '\0'; /* get rid of sample file extension (if there) */
}
full_path = grib_external_template_path(c, resource_path); full_path = grib_external_template_path(c, resource_path);
} }
else if (resource_type == DEFINITION) { else if (resource_type == DEFINITION) {
@ -101,7 +97,7 @@ int main(int argc, char* argv[])
grib_context_free(c, full_path); grib_context_free(c, full_path);
printf("Resource written out to file '%s'.\n", out_file); printf("Resource exported to file '%s'.\n", out_file);
return 0; return 0;
} }