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)