From 244a24104ded3a4573aeffa32160af21f76cbce6 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 15 Dec 2020 00:51:46 +0100 Subject: Revise error codes to have a reduced set exposed in the public API. Fixes #2482 And also add proj_context_errno_string() Revise gie 'expect failure errno XXXX' strings --- src/conversions/unitconvert.cpp | 42 ++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-) (limited to 'src/conversions/unitconvert.cpp') diff --git a/src/conversions/unitconvert.cpp b/src/conversions/unitconvert.cpp index 61bccbf1..fec8caac 100644 --- a/src/conversions/unitconvert.cpp +++ b/src/conversions/unitconvert.cpp @@ -443,7 +443,7 @@ PJ *CONVERSION(unitconvert,0) { int z_out_is_linear = -1; /* unknown */ if (nullptr==Q) - return pj_default_destructor (P, ENOMEM); + return pj_default_destructor (P, PROJ_ERR_INVALID_OP /*ENOMEM*/); P->opaque = (void *) Q; P->fwd4d = forward_4d; @@ -473,7 +473,10 @@ PJ *CONVERSION(unitconvert,0) { } else { f = pj_param (P->ctx, P->params, "dxy_in").f; if (f == 0.0 || 1.0 / f == 0.0) - return pj_default_destructor(P, PJD_ERR_UNKNOWN_UNIT_ID); + { + proj_log_error(P, _("unitconvert: unknown xy_in unit")); + return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); + } } Q->xy_factor = f; if (normalized_name != nullptr) { @@ -492,7 +495,10 @@ PJ *CONVERSION(unitconvert,0) { } else { f = pj_param (P->ctx, P->params, "dxy_out").f; if (f == 0.0 || 1.0 / f == 0.0) - return pj_default_destructor(P, PJD_ERR_UNKNOWN_UNIT_ID); + { + proj_log_error(P, _("unitconvert: unknown xy_out unit")); + return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); + } } Q->xy_factor /= f; if (normalized_name != nullptr) { @@ -505,8 +511,8 @@ PJ *CONVERSION(unitconvert,0) { if( xy_in_is_linear >= 0 && xy_out_is_linear >= 0 && xy_in_is_linear != xy_out_is_linear ) { - proj_log_debug(P, "inconsistent unit type between xy_in and xy_out"); - return pj_default_destructor(P, PJD_ERR_INCONSISTENT_UNIT); + proj_log_error(P, _("unitconvert: inconsistent unit type between xy_in and xy_out")); + return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); } if ((name = pj_param (P->ctx, P->params, "sz_in").s) != nullptr) { @@ -517,7 +523,10 @@ PJ *CONVERSION(unitconvert,0) { } else { f = pj_param (P->ctx, P->params, "dz_in").f; if (f == 0.0 || 1.0 / f == 0.0) - return pj_default_destructor(P, PJD_ERR_UNKNOWN_UNIT_ID); + { + proj_log_error(P, _("unitconvert: unknown z_in unit")); + return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); + } } Q->z_factor = f; } @@ -530,21 +539,28 @@ PJ *CONVERSION(unitconvert,0) { } else { f = pj_param (P->ctx, P->params, "dz_out").f; if (f == 0.0 || 1.0 / f == 0.0) - return pj_default_destructor(P, PJD_ERR_UNKNOWN_UNIT_ID); + { + proj_log_error(P, _("unitconvert: unknown z_out unit")); + return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); + } } Q->z_factor /= f; } if( z_in_is_linear >= 0 && z_out_is_linear >= 0 && z_in_is_linear != z_out_is_linear ) { - proj_log_debug(P, "inconsistent unit type between z_in and z_out"); - return pj_default_destructor(P, PJD_ERR_INCONSISTENT_UNIT); + proj_log_error(P, _("unitconvert: inconsistent unit type between z_in and z_out")); + return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); } if ((name = pj_param (P->ctx, P->params, "st_in").s) != nullptr) { for (i = 0; (s = time_units[i].id) && strcmp(name, s) ; ++i); - if (!s) return pj_default_destructor(P, PJD_ERR_UNKNOWN_UNIT_ID); /* unknown unit conversion id */ + if (!s) + { + proj_log_error(P, _("unitconvert: unknown t_in unit")); + return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); + } Q->t_in_id = i; proj_log_trace(P, "t_in unit: %s", time_units[i].name); @@ -554,7 +570,11 @@ PJ *CONVERSION(unitconvert,0) { if ((name = pj_param (P->ctx, P->params, "st_out").s) != nullptr) { for (i = 0; (s = time_units[i].id) && strcmp(name, s) ; ++i); - if (!s) return pj_default_destructor(P, PJD_ERR_UNKNOWN_UNIT_ID); /* unknown unit conversion id */ + if (!s) + { + proj_log_error(P, _("unitconvert: unknown t_out unit")); + return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); + } Q->t_out_id = i; proj_log_trace(P, "t_out unit: %s", time_units[i].name); -- cgit v1.2.3 From df96a13d2c9b70bc18cec1b08eea5b2b068127d7 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 15 Dec 2020 15:32:40 +0100 Subject: Various operations: remove explicit short name prefixing in log messages now that it is automatically added --- src/conversions/unitconvert.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/conversions/unitconvert.cpp') diff --git a/src/conversions/unitconvert.cpp b/src/conversions/unitconvert.cpp index fec8caac..58a60c37 100644 --- a/src/conversions/unitconvert.cpp +++ b/src/conversions/unitconvert.cpp @@ -474,7 +474,7 @@ PJ *CONVERSION(unitconvert,0) { f = pj_param (P->ctx, P->params, "dxy_in").f; if (f == 0.0 || 1.0 / f == 0.0) { - proj_log_error(P, _("unitconvert: unknown xy_in unit")); + proj_log_error(P, _("unknown xy_in unit")); return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); } } @@ -496,7 +496,7 @@ PJ *CONVERSION(unitconvert,0) { f = pj_param (P->ctx, P->params, "dxy_out").f; if (f == 0.0 || 1.0 / f == 0.0) { - proj_log_error(P, _("unitconvert: unknown xy_out unit")); + proj_log_error(P, _("unknown xy_out unit")); return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); } } @@ -511,7 +511,7 @@ PJ *CONVERSION(unitconvert,0) { if( xy_in_is_linear >= 0 && xy_out_is_linear >= 0 && xy_in_is_linear != xy_out_is_linear ) { - proj_log_error(P, _("unitconvert: inconsistent unit type between xy_in and xy_out")); + proj_log_error(P, _("inconsistent unit type between xy_in and xy_out")); return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); } @@ -524,7 +524,7 @@ PJ *CONVERSION(unitconvert,0) { f = pj_param (P->ctx, P->params, "dz_in").f; if (f == 0.0 || 1.0 / f == 0.0) { - proj_log_error(P, _("unitconvert: unknown z_in unit")); + proj_log_error(P, _("unknown z_in unit")); return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); } } @@ -540,7 +540,7 @@ PJ *CONVERSION(unitconvert,0) { f = pj_param (P->ctx, P->params, "dz_out").f; if (f == 0.0 || 1.0 / f == 0.0) { - proj_log_error(P, _("unitconvert: unknown z_out unit")); + proj_log_error(P, _("unknown z_out unit")); return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); } } @@ -549,7 +549,7 @@ PJ *CONVERSION(unitconvert,0) { if( z_in_is_linear >= 0 && z_out_is_linear >= 0 && z_in_is_linear != z_out_is_linear ) { - proj_log_error(P, _("unitconvert: inconsistent unit type between z_in and z_out")); + proj_log_error(P, _("inconsistent unit type between z_in and z_out")); return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); } @@ -558,7 +558,7 @@ PJ *CONVERSION(unitconvert,0) { if (!s) { - proj_log_error(P, _("unitconvert: unknown t_in unit")); + proj_log_error(P, _("unknown t_in unit")); return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); } @@ -572,7 +572,7 @@ PJ *CONVERSION(unitconvert,0) { if (!s) { - proj_log_error(P, _("unitconvert: unknown t_out unit")); + proj_log_error(P, _("unknown t_out unit")); return pj_default_destructor(P, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE); } -- cgit v1.2.3 From a27c0255e7b8e6aab1b91e49fd7870d1ee4e1a80 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 15 Dec 2020 17:53:29 +0100 Subject: Remap ENOMEM from PROJ_ERR_INVALID_OP to PROJ_ERR_OTHER --- src/conversions/unitconvert.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/conversions/unitconvert.cpp') diff --git a/src/conversions/unitconvert.cpp b/src/conversions/unitconvert.cpp index 58a60c37..187acf17 100644 --- a/src/conversions/unitconvert.cpp +++ b/src/conversions/unitconvert.cpp @@ -443,7 +443,7 @@ PJ *CONVERSION(unitconvert,0) { int z_out_is_linear = -1; /* unknown */ if (nullptr==Q) - return pj_default_destructor (P, PROJ_ERR_INVALID_OP /*ENOMEM*/); + return pj_default_destructor (P, PROJ_ERR_OTHER /*ENOMEM*/); P->opaque = (void *) Q; P->fwd4d = forward_4d; -- cgit v1.2.3