summaryrefslogtreecommitdiff
path: root/src/os/unix
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2008-11-11 20:05:20 +0000
committerJonathan Kolb <jon@b0g.us>2008-11-11 20:05:20 +0000
commitebb9255c4611279019ee6f2a2c1f5b6386099477 (patch)
treecb379ad6e97958a414b2ba26af188c3329f2203f /src/os/unix
parent6be5bac511905e8ca53e51e68e63e1a2e81fbf09 (diff)
downloadnginx-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.c52
-rw-r--r--src/os/unix/ngx_files.h12
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;