diff --git a/src/os/unix/ngx_files.c b/src/os/unix/ngx_files.c
index c90a437..fbbddc6 100644
--- a/src/os/unix/ngx_files.c
+++ b/src/os/unix/ngx_files.c
@@ -3,7 +3,7 @@
 #include <ngx_core.h>
 
 
-ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset)
+ssize_t ngx_read_file(ngx_file_t *file, u_char *buf, size_t size, off_t offset)
 {
     ssize_t n;
 
@@ -48,7 +48,7 @@
 }
 
 
-ssize_t ngx_write_file(ngx_file_t *file, char *buf, size_t size, off_t offset)
+ssize_t ngx_write_file(ngx_file_t *file, u_char *buf, size_t size, off_t offset)
 {
     ssize_t n;
 
@@ -104,7 +104,7 @@
 ssize_t ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *cl,
                                 off_t offset, ngx_pool_t *pool)
 {
-    char          *prev;
+    u_char        *prev;
     size_t         size;
     ssize_t        n;
     struct iovec  *iov;
@@ -133,7 +133,7 @@
 
         } else {
             ngx_test_null(iov, ngx_push_array(&io), NGX_ERROR);
-            iov->iov_base = cl->hunk->pos;
+            iov->iov_base = (void *) cl->hunk->pos;
             iov->iov_len = cl->hunk->last - cl->hunk->pos;
         }
 
@@ -146,7 +146,8 @@
 
     if (io.nelts == 1) {
         iov = io.elts;
-        return ngx_write_file(file, iov[0].iov_base, iov[0].iov_len, offset);
+        return ngx_write_file(file, (u_char *) iov[0].iov_base, iov[0].iov_len,
+                              offset);
     }
 
     if (file->sys_offset != offset) {
@@ -180,7 +181,7 @@
 
 int ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir)
 {
-    dir->dir = opendir(name->data);
+    dir->dir = opendir((const char *) name->data);
 
     if (dir->dir == NULL) {
         return NGX_ERROR;
diff --git a/src/os/unix/ngx_files.h b/src/os/unix/ngx_files.h
index 641ccfa..9952a74 100644
--- a/src/os/unix/ngx_files.h
+++ b/src/os/unix/ngx_files.h
@@ -12,7 +12,7 @@
 
 
 #define ngx_open_file(name, access, create)                                 \
-                                 open(name, access|create, 0644)
+                                 open((const char *) name, access|create, 0644)
 #define ngx_open_file_n          "open()"
 
 #define NGX_FILE_RDONLY          O_RDONLY
@@ -26,20 +26,21 @@
 #define ngx_close_file_n         "close()"
 
 
-#define ngx_delete_file          unlink
+#define ngx_delete_file(name)    unlink((const char *) name)
 #define ngx_delete_file_n        "unlink()"
 
 
 #define ngx_open_tempfile(name, persistent)                                 \
-                                 open(name, O_CREAT|O_EXCL|O_RDWR, 0600)
+                         open((const char *) name, O_CREAT|O_EXCL|O_RDWR, 0600)
 #define ngx_open_tempfile_n      "open()"
 
 
-ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset);
+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, char *buf, size_t size, off_t offset);
+ssize_t ngx_write_file(ngx_file_t *file, u_char *buf, size_t size,
+                       off_t offset);
 
 ssize_t ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *ce,
                                 off_t offset, ngx_pool_t *pool);
@@ -49,7 +50,7 @@
 #define ngx_rename_file_n        "rename"
 
 
-#define ngx_file_info(file, sb)  stat(file, sb)
+#define ngx_file_info(file, sb)  stat((const char *) file, sb)
 #define ngx_file_info_n          "stat()"
 
 #define ngx_fd_info(fd, sb)      fstat(fd, sb)
@@ -78,11 +79,11 @@
 #define ngx_read_dir_n           "readdir()"
 
 
-#define ngx_create_dir(name)     mkdir(name, 0700)
+#define ngx_create_dir(name)     mkdir((const char *) name, 0700)
 #define ngx_create_dir_n         "mkdir()"
 
 
-#define ngx_delete_dir           rmdir
+#define ngx_delete_dir(name)     rmdir((const char *) name)
 #define ngx_delete_dir_n         "rmdir()"
 
 
@@ -92,7 +93,7 @@
 #else
 #define ngx_de_namelen(dir)      ngx_strlen((dir)->de->d_name)
 #endif
-#define ngx_de_info(name, dir)   stat(name, &(dir)->info)
+#define ngx_de_info(name, dir)   stat((const char *) name, &(dir)->info)
 #define ngx_de_info_n            "stat()"
 #define ngx_de_is_dir(dir)       (S_ISDIR((dir)->info.st_mode))
 #define ngx_de_is_file(dir)      (S_ISREG((dir)->info.st_mode))
diff --git a/src/os/unix/ngx_freebsd_sendfile_chain.c b/src/os/unix/ngx_freebsd_sendfile_chain.c
index 2fcd6f3..fb2898d 100644
--- a/src/os/unix/ngx_freebsd_sendfile_chain.c
+++ b/src/os/unix/ngx_freebsd_sendfile_chain.c
@@ -14,8 +14,8 @@
  * it never sends a header with a part of the file in one packet until
  * FreeBSD 5.2-STABLE.  Besides over the fast ethernet connection sendfile()
  * can send the partially filled packets, i.e. the 8 file pages can be sent
- * as 11 full 1460-bytes packets, then one incomplete 324-bytes packet, and
- * then again 11 full 1460-bytes packets.
+ * as the 11 full 1460-bytes packets, then one incomplete 324-bytes packet,
+ * and then again the 11 full 1460-bytes packets.
  *
  * So we use the TCP_NOPUSH option (similar to Linux's TCP_CORK)
  * to postpone the sending - it not only sends a header and the first part
@@ -31,7 +31,7 @@
 ngx_chain_t *ngx_freebsd_sendfile_chain(ngx_connection_t *c, ngx_chain_t *in)
 {
     int              rc;
-    char            *prev;
+    u_char          *prev;
     off_t            sent, fprev;
     size_t           hsize, fsize;
     ssize_t          size;
@@ -93,7 +93,7 @@
 
             } else {
                 ngx_test_null(iov, ngx_push_array(&header), NGX_CHAIN_ERROR);
-                iov->iov_base = cl->hunk->pos;
+                iov->iov_base = (void *) cl->hunk->pos;
                 iov->iov_len = cl->hunk->last - cl->hunk->pos;
             }
 
@@ -145,7 +145,7 @@
                 } else {
                     ngx_test_null(iov, ngx_push_array(&trailer),
                                   NGX_CHAIN_ERROR);
-                    iov->iov_base = cl->hunk->pos;
+                    iov->iov_base = (void *) cl->hunk->pos;
                     iov->iov_len = cl->hunk->last - cl->hunk->pos;
                 }
 
diff --git a/src/os/unix/ngx_linux_sendfile_chain.c b/src/os/unix/ngx_linux_sendfile_chain.c
index 463fdda..25932b5 100644
--- a/src/os/unix/ngx_linux_sendfile_chain.c
+++ b/src/os/unix/ngx_linux_sendfile_chain.c
@@ -22,7 +22,7 @@
 ngx_chain_t *ngx_linux_sendfile_chain(ngx_connection_t *c, ngx_chain_t *in)
 {
     int              rc;
-    char            *prev;
+    u_char          *prev;
     off_t            fprev;
     size_t           size, fsize, sent;
     ngx_int_t        eintr;
@@ -71,7 +71,7 @@
 
             } else {
                 ngx_test_null(iov, ngx_push_array(&header), NGX_CHAIN_ERROR);
-                iov->iov_base = cl->hunk->pos;
+                iov->iov_base = (void *) cl->hunk->pos;
                 iov->iov_len = cl->hunk->last - cl->hunk->pos;
             }
 
diff --git a/src/os/unix/ngx_os.h b/src/os/unix/ngx_os.h
index 85e5dbe..77484d4 100644
--- a/src/os/unix/ngx_os.h
+++ b/src/os/unix/ngx_os.h
@@ -24,9 +24,9 @@
 
 
 typedef struct {
-    ssize_t       (*recv)(ngx_connection_t *c, char *buf, size_t size);
+    ssize_t       (*recv)(ngx_connection_t *c, u_char *buf, size_t size);
     ssize_t       (*recv_chain)(ngx_connection_t *c, ngx_chain_t *in);
-    ssize_t       (*send)(ngx_connection_t *c, char *buf, size_t size);
+    ssize_t       (*send)(ngx_connection_t *c, u_char *buf, size_t size);
     ngx_chain_t  *(*send_chain)(ngx_connection_t *c, ngx_chain_t *in);
     int             flags;
 } ngx_os_io_t;
@@ -39,7 +39,7 @@
 int ngx_posix_post_conf_init(ngx_log_t *log);
 
 
-ssize_t ngx_unix_recv(ngx_connection_t *c, char *buf, size_t size);
+ssize_t ngx_unix_recv(ngx_connection_t *c, u_char *buf, size_t size);
 ssize_t ngx_readv_chain(ngx_connection_t *c, ngx_chain_t *entry);
 ngx_chain_t *ngx_writev_chain(ngx_connection_t *c, ngx_chain_t *in);
 
diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c
index 6ee6c9a..76d6bb5 100644
--- a/src/os/unix/ngx_process_cycle.c
+++ b/src/os/unix/ngx_process_cycle.c
@@ -333,7 +333,7 @@
 
 static void ngx_master_exit(ngx_cycle_t *cycle, ngx_master_ctx_t *ctx)
 {
-    char  *name;
+    u_char  *name;
 
     if (ngx_inherited && getppid() > 1) {
         name = ctx->pid.name.data;
@@ -355,7 +355,7 @@
 static void ngx_worker_process_cycle(ngx_cycle_t *cycle, void *data)
 {
     sigset_t          set;
-    ngx_int_t         i;
+    ngx_uint_t        i;
     ngx_listening_t  *ls;
     ngx_core_conf_t  *ccf;
 #if (NGX_THREADS)
diff --git a/src/os/unix/ngx_process_cycle.h b/src/os/unix/ngx_process_cycle.h
index c863b62..0c55afa 100644
--- a/src/os/unix/ngx_process_cycle.h
+++ b/src/os/unix/ngx_process_cycle.h
@@ -8,7 +8,7 @@
 
 typedef struct {
      ngx_file_t    pid;
-     char         *name;
+     u_char       *name;
      int           argc;
      char *const  *argv;
 } ngx_master_ctx_t;
diff --git a/src/os/unix/ngx_readv_chain.c b/src/os/unix/ngx_readv_chain.c
index a1b9837..9aee564 100644
--- a/src/os/unix/ngx_readv_chain.c
+++ b/src/os/unix/ngx_readv_chain.c
@@ -8,7 +8,7 @@
 
 ssize_t ngx_readv_chain(ngx_connection_t *c, ngx_chain_t *chain)
 {
-    char          *prev;
+    u_char        *prev;
     ssize_t        n, size;
     struct iovec  *iov;
     ngx_err_t      err;
@@ -58,7 +58,7 @@
 
         } else {
             ngx_test_null(iov, ngx_push_array(&io), NGX_ERROR);
-            iov->iov_base = chain->hunk->last;
+            iov->iov_base = (void *) chain->hunk->last;
             iov->iov_len = chain->hunk->end - chain->hunk->last;
         }
 
diff --git a/src/os/unix/ngx_recv.c b/src/os/unix/ngx_recv.c
index b8a9659..37e70c6 100644
--- a/src/os/unix/ngx_recv.c
+++ b/src/os/unix/ngx_recv.c
@@ -6,7 +6,7 @@
 
 #if (HAVE_KQUEUE)
 
-ssize_t ngx_unix_recv(ngx_connection_t *c, char *buf, size_t size)
+ssize_t ngx_unix_recv(ngx_connection_t *c, u_char *buf, size_t size)
 {
     ssize_t       n;
     ngx_err_t     err;
diff --git a/src/os/unix/ngx_solaris_sendfilev_chain.c b/src/os/unix/ngx_solaris_sendfilev_chain.c
index f428261..1c755e8 100644
--- a/src/os/unix/ngx_solaris_sendfilev_chain.c
+++ b/src/os/unix/ngx_solaris_sendfilev_chain.c
@@ -12,7 +12,7 @@
 ngx_chain_t *ngx_solaris_sendfilev_chain(ngx_connection_t *c, ngx_chain_t *in)
 {
     int             fd;
-    char           *prev;
+    u_char         *prev;
     off_t           fprev;
     size_t          sent, size;
     ssize_t         n;
diff --git a/src/os/unix/ngx_time.h b/src/os/unix/ngx_time.h
index b8c6422..45e81ea 100644
--- a/src/os/unix/ngx_time.h
+++ b/src/os/unix/ngx_time.h
@@ -25,6 +25,15 @@
 #define ngx_tm_zone    tm_zone
 #endif
 
+#define ngx_tm_sec_t   int
+#define ngx_tm_min_t   int
+#define ngx_tm_hour_t  int
+#define ngx_tm_mday_t  int
+#define ngx_tm_mon_t   int
+#define ngx_tm_year_t  int
+#define ngx_tm_wday_t  int
+
+
 
 void ngx_localtime(ngx_tm_t *tm);
 
diff --git a/src/os/unix/ngx_writev_chain.c b/src/os/unix/ngx_writev_chain.c
index 43d5c12..d680375 100644
--- a/src/os/unix/ngx_writev_chain.c
+++ b/src/os/unix/ngx_writev_chain.c
@@ -6,7 +6,7 @@
 
 ngx_chain_t *ngx_writev_chain(ngx_connection_t *c, ngx_chain_t *in)
 {
-    char            *prev;
+    u_char          *prev;
     ssize_t          n, size;
     off_t            sent;
     struct iovec    *iov;
@@ -51,7 +51,7 @@
 
             } else {
                 ngx_test_null(iov, ngx_push_array(&io), NGX_CHAIN_ERROR);
-                iov->iov_base = cl->hunk->pos;
+                iov->iov_base = (void *) cl->hunk->pos;
                 iov->iov_len = cl->hunk->last - cl->hunk->pos;
                 prev = cl->hunk->last;
             }
