nginx-0.4.0-RELEASE import

    *) Change in internal API: the HTTP modules initialization was moved
       from the init module phase to the HTTP postconfiguration phase.

    *) Change: now the request body is not read beforehand for the
       ngx_http_perl_module: it's required to start the reading using the
       $r->has_request_body method.

    *) Feature: the ngx_http_perl_module supports the DECLINED return code.

    *) Feature: the ngx_http_dav_module supports the incoming "Date" header
       line for the PUT method.

    *) Feature: the "ssi" directive is available inside the "if" block.

    *) Bugfix: a segmentation fault occurred if there was an "index"
       directive with variables and the first index name was without
       variables; the bug had appeared in 0.1.29.
diff --git a/src/os/unix/ngx_files.c b/src/os/unix/ngx_files.c
index 5758313..1801045 100644
--- a/src/os/unix/ngx_files.c
+++ b/src/os/unix/ngx_files.c
@@ -221,6 +221,24 @@
 
 
 ngx_int_t
+ngx_set_file_time(u_char *name, ngx_fd_t fd, time_t s)
+{
+    struct timeval  tv[2];
+
+    tv[0].tv_sec = s;
+    tv[0].tv_usec = 0;
+    tv[1].tv_sec = s;
+    tv[1].tv_usec = 0;
+
+    if (utimes((char *) name, tv) != -1) {
+        return NGX_OK;
+    }
+
+    return NGX_ERROR;
+}
+
+
+ngx_int_t
 ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir)
 {
     dir->dir = opendir((const char *) name->data);
diff --git a/src/os/unix/ngx_files.h b/src/os/unix/ngx_files.h
index dffef52..ff25156 100644
--- a/src/os/unix/ngx_files.h
+++ b/src/os/unix/ngx_files.h
@@ -58,11 +58,15 @@
 
 
 #define ngx_rename_file(o, n)    rename((const char *) o, (const char *) n)
-#define ngx_rename_file_n        "rename"
+#define ngx_rename_file_n        "rename()"
 
 
 #define ngx_change_file_access(n, a) chmod((const char *) n, a)
-#define ngx_change_file_access_n "chmod"
+#define ngx_change_file_access_n "chmod()"
+
+
+ngx_int_t ngx_set_file_time(u_char *name, ngx_fd_t fd, time_t s);
+#define ngx_set_file_time_n      "utimes()"
 
 
 #define ngx_file_info(file, sb)  stat((const char *) file, sb)
diff --git a/src/os/win32/nginx_icon16.xpm b/src/os/win32/nginx_icon16.xpm
new file mode 100644
index 0000000..8996864
--- /dev/null
+++ b/src/os/win32/nginx_icon16.xpm
@@ -0,0 +1,24 @@
+/* XPM */
+static char * nginx_xpm[] = {
+"16 16 2 2",
+/* colors */
+"   c none",
+"GG c #009900",
+/* pixels */
+"                                ",
+"        GGGGGGGGGGGGGGGG        ",
+"        GGGGGGGGGGGGGGGG        ",
+"      GGGGGGGGGGGGGGGGGGGG      ",
+"      GGGGGG        GGGGGG      ",
+"    GGGGGG            GGGGGG    ",
+"    GGGGGG                      ",
+"  GGGGGG      GGGGGGGGGGGGGGGG  ",
+"  GGGGGG    GGGGGGGGGGGGGGGGGG  ",
+"    GGGGGG    GGGGGGGGGGGGGG    ",
+"    GGGGGG            GGGGGG    ",
+"      GGGGGG        GGGGGG      ",
+"      GGGGGGGGGGGGGGGGGGGG      ",
+"        GGGGGGGGGGGGGGGG        ",
+"        GGGGGGGGGGGGGGGG        ",
+"                                "
+}; 
diff --git a/src/os/win32/nginx_icon32.xpm b/src/os/win32/nginx_icon32.xpm
new file mode 100644
index 0000000..eb26638
--- /dev/null
+++ b/src/os/win32/nginx_icon32.xpm
@@ -0,0 +1,39 @@
+/* XPM */
+static char * nginx_xpm[] = {
+"32 32 2 2",
+/* colors */
+"   c none",
+"GG c #009900",
+/* pixels */
+"                                                                ",
+"                                                                ",
+"                                                                ",
+"                                                                ",
+"                  GGGGGGGGGGGGGGGGGGGGGGGGGGGG                  ",
+"                GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG                ",
+"                GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG                ",
+"              GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG              ",
+"              GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG              ",
+"            GGGGGGGGGG                    GGGGGGGGGG            ",
+"            GGGGGGGGGG                    GGGGGGGGGG            ",
+"          GGGGGGGGGG                        GGGGGGGGGG          ",
+"          GGGGGGGGGG                        GGGGGGGGGG          ",
+"        GGGGGGGGGG                                              ",
+"        GGGGGGGGGG                                              ",
+"      GGGGGGGGGG            GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG      ",
+"      GGGGGGGGGG          GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG      ",
+"        GGGGGGGGGG        GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG        ",
+"        GGGGGGGGGG        GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG        ",
+"          GGGGGGGGGG        GGGGGGGGGGGGGGGGGGGGGGGGGG          ",
+"          GGGGGGGGGG                        GGGGGGGGGG          ",
+"            GGGGGGGGGG                    GGGGGGGGGG            ",
+"            GGGGGGGGGG                    GGGGGGGGGG            ",
+"              GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG              ",
+"              GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG              ",
+"                GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG                ",
+"                GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG                ",
+"                  GGGGGGGGGGGGGGGGGGGGGGGGGGGG                  ",
+"                                                                ",
+"                                                                ",
+"                                                                ",
+"                                                                "
diff --git a/src/os/win32/nginx_tray.xpm b/src/os/win32/nginx_tray.xpm
new file mode 100644
index 0000000..6a8a6ea
--- /dev/null
+++ b/src/os/win32/nginx_tray.xpm
@@ -0,0 +1,24 @@
+/* XPM */
+static char * nginx_xpm[] = {
+"16 16 2 2",
+/* colors */
+"   c none",
+"GG c #008000",
+/* pixels */
+"                                ",
+"        GGGGGGGGGGGGGGGG        ",
+"        GGGGGGGGGGGGGGGG        ",
+"      GGGGGGGGGGGGGGGGGGGG      ",
+"      GGGGGG        GGGGGG      ",
+"    GGGGGG            GGGGGG    ",
+"    GGGGGG                      ",
+"  GGGGGG      GGGGGGGGGGGGGGGG  ",
+"  GGGGGG    GGGGGGGGGGGGGGGGGG  ",
+"    GGGGGG    GGGGGGGGGGGGGG    ",
+"    GGGGGG            GGGGGG    ",
+"      GGGGGG        GGGGGG      ",
+"      GGGGGGGGGGGGGGGGGGGG      ",
+"        GGGGGGGGGGGGGGGG        ",
+"        GGGGGGGGGGGGGGGG        ",
+"                                "
+}; 
diff --git a/src/os/win32/ngx_files.c b/src/os/win32/ngx_files.c
index dcffca7..aee8704 100644
--- a/src/os/win32/ngx_files.c
+++ b/src/os/win32/ngx_files.c
@@ -261,6 +261,27 @@
 
 
 ngx_int_t
+ngx_set_file_time(u_char *name, ngx_fd_t fd, time_t s)
+{
+    uint64_t  intervals;
+    FILETIME  ft;
+
+    /* 116444736000000000 is commented in src/os/win32/ngx_time.c */
+
+    intervals = s * 10000000 + 116444736000000000;
+
+    ft.dwLowDateTime = (DWORD) intervals;
+    ft.dwHighDateTime = (DWORD) (intervals >> 32);
+
+    if (SetFileTime(fd, NULL, NULL, &ft) != 0) {
+        return NGX_OK;
+    }
+
+    return NGX_ERROR;
+}
+
+
+ngx_int_t
 ngx_file_info(u_char *file, ngx_file_info_t *sb)
 {
     /* Win95 */
@@ -301,11 +322,11 @@
         return NGX_OK;
     }
 
-    if (FindNextFile(dir->dir, &dir->fd) == 0) {
-        return NGX_ERROR;
+    if (FindNextFile(dir->dir, &dir->fd) != 0) {
+        return NGX_OK;
     }
 
-    return NGX_OK;
+    return NGX_ERROR;
 }
 
 
diff --git a/src/os/win32/ngx_files.h b/src/os/win32/ngx_files.h
index b1c7230..c42c055 100644
--- a/src/os/win32/ngx_files.h
+++ b/src/os/win32/ngx_files.h
@@ -80,12 +80,17 @@
     ngx_pool_t *pool);
 
 
+
+ngx_int_t ngx_set_file_time(u_char *name, ngx_fd_t fd, time_t s);
+#define ngx_set_file_time_n         "SetFileTime()"
+
+
 ngx_int_t ngx_file_info(u_char *filename, ngx_file_info_t *fi);
 #define ngx_file_info_n             "GetFileAttributesEx()"
 
 
 #define ngx_fd_info(fd, fi)         GetFileInformationByHandle(fd, fi)
-#define ngx_fd_info_n               "GetFileInformationByHandle"
+#define ngx_fd_info_n               "GetFileInformationByHandle()"
 
 
 #define ngx_is_dir(fi)      ((fi)->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)