}
+ssize_t
+ngx_read_fd(ngx_fd_t fd, void *buf, size_t size)
+{
+ u_long n;
+
+ if (ReadFile(fd, buf, size, &n, NULL) != 0) {
+ return (size_t) n;
+ }
+
+ return -1;
+}
+
+
+ssize_t
+ngx_write_fd(ngx_fd_t fd, void *buf, size_t size)
+{
+ u_long n;
+
+ if (WriteFile(fd, buf, size, &n, NULL) != 0) {
+ return (size_t) n;
+ }
+
+ return -1;
+}
+
+
ngx_int_t
ngx_win32_rename_file(ngx_str_t *from, ngx_str_t *to, ngx_pool_t *pool)
{
#define ngx_close_file_n "CloseHandle()"
-#define ngx_read_fd(fd, buf, size) ReadFile(fd, buf, size, NULL, NULL)
+ssize_t ngx_read_fd(ngx_fd_t fd, void *buf, size_t size);
#define ngx_read_fd_n "ReadFile()"
-#define ngx_write_fd(fd, buf, size) WriteFile(fd, buf, size, NULL, NULL)
+
+ssize_t ngx_write_fd(ngx_fd_t fd, void *buf, size_t size);
#define ngx_write_fd_n "WriteFile()"
+
#define ngx_linefeed(p) *p++ = CR; *p++ = LF;
#define NGX_LINEFEED_SIZE 2