]> git.kaiwu.me - nginx.git/commitdiff
fix r3822
authorIgor Sysoev <igor@sysoev.ru>
Sat, 23 Apr 2011 13:15:56 +0000 (13:15 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Sat, 23 Apr 2011 13:15:56 +0000 (13:15 +0000)
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.

auto/unix

index ee284e1d1740661cca434453147368d48851af3a..fadf7dd76740d08e2f143a5222f174f5927726e3 100755 (executable)
--- 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;
                           }