changeset 3901:c8b9f58c392b

fix r3822 Solaris strerror() invalid error code behaviour depends on version: Solaris 10 returns "Unknown error" and sets errno to EINVAL, Solaris 9 returns "Unknown error" and leaves errno intact, Solaris 2 returns NULL.
author Igor Sysoev <igor@sysoev.ru>
date Sat, 23 Apr 2011 13:15:56 +0000
parents 4d5754e2f220
children 159b58f9c0bd
files auto/unix
diffstat 1 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/auto/unix
+++ b/auto/unix
@@ -141,14 +141,19 @@ if [ $ngx_found = no ]; then
     ngx_feature_name=NGX_SYS_NERR
     ngx_feature_run=value
     ngx_feature_incs='#include <errno.h>
+                      #include <string.h>'
                       #include <stdio.h>'
     ngx_feature_path=
     ngx_feature_libs=
     ngx_feature_test='int  n;
+                      char *p;
                       for (n = 1; n < 1000; n++) {
                           errno = 0;
-                          strerror(n);
-                          if (errno == EINVAL) {
+                          p = strerror(n);
+                          if (errno == EINVAL
+                              || p == NULL
+                              || strncmp(p, "Unknown error", 13) == 0)
+                          {
                               printf("%d", n);
                               return 0;
                           }