From cae7d2d7125b12fc7cf38973aff85ea6132568f2 Mon Sep 17 00:00:00 2001 From: Frank Warmerdam Date: Thu, 21 Oct 2004 16:47:41 +0000 Subject: Improve error reporting for bad error numbers. git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@1238 4e78687f-474d-0410-85f9-8d5e500ac6b2 --- src/pj_strerrno.c | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/pj_strerrno.c b/src/pj_strerrno.c index 03191d77..98b03405 100644 --- a/src/pj_strerrno.c +++ b/src/pj_strerrno.c @@ -56,22 +56,29 @@ pj_err_list[] = { "unknown prime meridian conversion id", /* -46 */ }; char * -pj_strerrno(int err) { - if (err > 0) +pj_strerrno(int err) +{ + static char note[50]; + + if (err > 0) #ifdef HAVE_STRERROR - return strerror(err); + return strerror(err); #else - { static char note[50]; - sprintf(note,"no system list, errno: %d\n", err); - return note; - } + { + sprintf(note,"no system list, errno: %d\n", err); + return note; + } #endif - else if (err < 0) { - err = - err - 1; - if (err < (sizeof(pj_err_list) / sizeof(char *))) - return(pj_err_list[err]); - else - return("invalid projection system error number"); - } else - return 0; + else if (err < 0) { + int adjusted_err = - err - 1; + if (adjusted_err < (sizeof(pj_err_list) / sizeof(char *))) + return(pj_err_list[adjusted_err]); + else + { + sprintf( note, "invalid projection system error (%d)", + err ); + return note; + } + } else + return NULL; } -- cgit v1.2.3