diff options
| author | Igor Sysoev <igor@sysoev.ru> | 2008-11-11 20:05:20 +0000 |
|---|---|---|
| committer | Jonathan Kolb <jon@b0g.us> | 2008-11-11 20:05:20 +0000 |
| commit | ebb9255c4611279019ee6f2a2c1f5b6386099477 (patch) | |
| tree | cb379ad6e97958a414b2ba26af188c3329f2203f /src/os/unix | |
| parent | 6be5bac511905e8ca53e51e68e63e1a2e81fbf09 (diff) | |
| download | nginx-ebb9255c4611279019ee6f2a2c1f5b6386099477.tar.gz | |
Changes with nginx 0.7.21 11 Nov 2008v0.7.21
*) Changes in the ngx_http_limit_req_module.
*) Feature: the EXSLT support in the ngx_http_xslt_module.
Thanks to Denis F. Latypoff.
*) Workaround: compatibility with glibc 2.3.
Thanks to Eric Benson and Maxim Dounin.
*) Bugfix: nginx could not run on MacOSX 10.4 and earlier; the bug had
appeared in 0.7.6.
Diffstat (limited to 'src/os/unix')
| -rw-r--r-- | src/os/unix/ngx_darwin_init.c | 52 | ||||
| -rw-r--r-- | src/os/unix/ngx_files.h | 12 |
2 files changed, 44 insertions, 20 deletions
diff --git a/src/os/unix/ngx_darwin_init.c b/src/os/unix/ngx_darwin_init.c index c10196c62..67133198b 100644 --- a/src/os/unix/ngx_darwin_init.c +++ b/src/os/unix/ngx_darwin_init.c @@ -64,31 +64,43 @@ ngx_os_specific_init(ngx_log_t *log) ngx_uint_t i; size = sizeof(ngx_darwin_kern_ostype); - if (sysctlbyname("kern.ostype", - ngx_darwin_kern_ostype, &size, NULL, 0) == -1) { - ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, - "sysctlbyname(kern.ostype) failed"); + if (sysctlbyname("kern.ostype", ngx_darwin_kern_ostype, &size, NULL, 0) + == -1) + { + err = ngx_errno; - if (ngx_errno != NGX_ENOMEM) { - return NGX_ERROR; - } + if (err != NGX_ENOENT) { - ngx_darwin_kern_ostype[size - 1] = '\0'; + ngx_log_error(NGX_LOG_ALERT, log, err, + "sysctlbyname(kern.ostype) failed"); + + if (err != NGX_ENOMEM) { + return NGX_ERROR; + } + + ngx_darwin_kern_ostype[size - 1] = '\0'; + } } size = sizeof(ngx_darwin_kern_osrelease); - if (sysctlbyname("kern.osrelease", - ngx_darwin_kern_osrelease, &size, NULL, 0) == -1) { - ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, - "sysctlbyname(kern.osrelease) failed"); + if (sysctlbyname("kern.osrelease", ngx_darwin_kern_osrelease, &size, + NULL, 0) + == -1) + { + err = ngx_errno; - if (ngx_errno != NGX_ENOMEM) { - return NGX_ERROR; - } + if (err != NGX_ENOENT) { - ngx_darwin_kern_osrelease[size - 1] = '\0'; - } + ngx_log_error(NGX_LOG_ALERT, log, err, + "sysctlbyname(kern.osrelease) failed"); + if (err != NGX_ENOMEM) { + return NGX_ERROR; + } + + ngx_darwin_kern_osrelease[size - 1] = '\0'; + } + } for (i = 0; sysctls[i].name; i++) { size = sysctls[i].size; @@ -136,8 +148,10 @@ ngx_os_specific_status(ngx_log_t *log) u_long value; ngx_uint_t i; - ngx_log_error(NGX_LOG_NOTICE, log, 0, "OS: %s %s", - ngx_darwin_kern_ostype, ngx_darwin_kern_osrelease); + if (ngx_darwin_kern_ostype[0]) { + ngx_log_error(NGX_LOG_NOTICE, log, 0, "OS: %s %s", + ngx_darwin_kern_ostype, ngx_darwin_kern_osrelease); + } for (i = 0; sysctls[i].name; i++) { if (sysctls[i].exists) { diff --git a/src/os/unix/ngx_files.h b/src/os/unix/ngx_files.h index d8182b4b6..fe14887f1 100644 --- a/src/os/unix/ngx_files.h +++ b/src/os/unix/ngx_files.h @@ -99,7 +99,17 @@ ssize_t ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *ce, #define ngx_read_fd read #define ngx_read_fd_n "read()" -#define ngx_write_fd write +/* + * we use inlined function instead of simple #define + * because glibc 2.3 sets warn_unused_result attribute for write() + * and in this case gcc 4.3 ignores (void) cast + */ +static ngx_inline ssize_t +ngx_write_fd(ngx_fd_t fd, void *buf, size_t n) +{ + return write(fd, buf, n); +} + #define ngx_write_fd_n "write()" #define ngx_linefeed(p) *p++ = LF; |
