diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/pj_strerrno.c | 37 |
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; } |
