nginx-0.3.7-RELEASE import

    *) Feature: the "access_log" supports the "buffer=" parameter.

    *) Bugfix: nginx could not be built on platforms different from i386,
       amd64, sparc, and ppc; the bug had appeared in 0.3.2.
diff --git a/src/os/unix/ngx_atomic.h b/src/os/unix/ngx_atomic.h
index 3dfce74..50d6354 100644
--- a/src/os/unix/ngx_atomic.h
+++ b/src/os/unix/ngx_atomic.h
@@ -154,7 +154,7 @@
 ngx_atomic_cmp_set(ngx_atomic_t *lock, ngx_atomic_uint_t old,
      ngx_atomic_uint_t set)
 {
-     if (*lock == old {
+     if (*lock == old) {
          *lock = set;
          return 1;
      }
@@ -174,8 +174,9 @@
      return old;
 }
 
-#endif
+#define ngx_memory_barrier()
 
+#endif
 
 void ngx_spinlock(ngx_atomic_t *lock, ngx_uint_t spin);
 
diff --git a/src/os/unix/ngx_files.h b/src/os/unix/ngx_files.h
index 57f53eb..a361fe4 100644
--- a/src/os/unix/ngx_files.h
+++ b/src/os/unix/ngx_files.h
@@ -44,7 +44,6 @@
 ssize_t ngx_read_file(ngx_file_t *file, u_char *buf, size_t size, off_t offset);
 #define ngx_read_file_n          "read()"
 
-
 ssize_t ngx_write_file(ngx_file_t *file, u_char *buf, size_t size,
     off_t offset);
 
@@ -52,6 +51,11 @@
     off_t offset, ngx_pool_t *pool);
 
 
+#define ngx_write_fd             write
+#define ngx_linefeed(p)          *p++ = LF;
+#define NGX_LINEFEED_SIZE        1
+
+
 #define ngx_rename_file          rename
 #define ngx_rename_file_n        "rename"
 
diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c
index f4ec06f..e0f967f 100644
--- a/src/os/unix/ngx_process_cycle.c
+++ b/src/os/unix/ngx_process_cycle.c
@@ -276,6 +276,13 @@
         ngx_process_events_and_timers(cycle);
 
         if (ngx_terminate || ngx_quit) {
+
+            for (i = 0; ngx_modules[i]; i++) {
+                if (ngx_modules[i]->exit_process) {
+                    ngx_modules[i]->exit_process(cycle);
+                }
+            }
+
             ngx_master_exit(cycle);
         }
 
@@ -623,10 +630,18 @@
 static void
 ngx_master_exit(ngx_cycle_t *cycle)
 {
+    ngx_uint_t  i;
+
     ngx_delete_pidfile(cycle);
 
     ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exit");
 
+    for (i = 0; ngx_modules[i]; i++) {
+        if (ngx_modules[i]->exit_master) {
+            ngx_modules[i]->exit_master(cycle);
+        }
+    }
+
     /*
      * we do not destroy cycle->pool here because a signal handler
      * that uses cycle->log can be called at this point
@@ -735,6 +750,12 @@
             ngx_wakeup_worker_threads(cycle);
 #endif
 
+            for (i = 0; ngx_modules[i]; i++) {
+                if (ngx_modules[i]->exit_process) {
+                    ngx_modules[i]->exit_process(cycle);
+                }
+            }
+
             c = cycle->connections;
             for (i = 0; i < cycle->connection_n; i++) {
                 if (c[i].fd != -1