aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Warmerdam <warmerdam@pobox.com>2004-10-21 16:47:41 +0000
committerFrank Warmerdam <warmerdam@pobox.com>2004-10-21 16:47:41 +0000
commitcae7d2d7125b12fc7cf38973aff85ea6132568f2 (patch)
treec9ad6872acccf1fdaca0afac5f6906738370b2d5
parent36f47ded8a8256ecd0dba8c5a2f1a2dfafd4e693 (diff)
downloadPROJ-cae7d2d7125b12fc7cf38973aff85ea6132568f2.tar.gz
PROJ-cae7d2d7125b12fc7cf38973aff85ea6132568f2.zip
Improve error reporting for bad error numbers.
git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@1238 4e78687f-474d-0410-85f9-8d5e500ac6b2
-rw-r--r--src/pj_strerrno.c37
1 files 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;
}