diff src/os/unix/ngx_files.c @ 190:02a715e85df1

nginx-0.0.1-2003-11-19-00:34:08 import
author Igor Sysoev <igor@sysoev.ru>
date Tue, 18 Nov 2003 21:34:08 +0000
parents c1f3a3c7c5db
children 71ce40b3c37b
line wrap: on
line diff
--- a/src/os/unix/ngx_files.c
+++ b/src/os/unix/ngx_files.c
@@ -25,13 +25,15 @@ ssize_t ngx_read_file(ngx_file_t *file, 
 
 #else
 
-    if (file->offset != offset) {
+    if (file->sys_offset != offset) {
         if (lseek(file->fd, offset, SEEK_SET) == -1) {
             ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "lseek() failed");
             return NGX_ERROR;
         }
     }
 
+    file->sys_offset = offset;
+
     n = read(file->fd, buf, size);
 
     if (n == -1) {
@@ -39,6 +41,8 @@ ssize_t ngx_read_file(ngx_file_t *file, 
         return NGX_ERROR;
     }
 
+    file->sys_offset += n;
+
 #endif
 
     file->offset += n;
@@ -68,13 +72,15 @@ ssize_t ngx_write_file(ngx_file_t *file,
 
 #else
 
-    if (file->offset != offset) {
+    if (file->sys_offset != offset) {
         if (lseek(file->fd, offset, SEEK_SET) == -1) {
             ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "lseek() failed");
             return NGX_ERROR;
         }
     }
 
+    file->sys_offset = offset;
+
     n = write(file->fd, buf, size);
 
     if (n == -1) {
@@ -88,6 +94,8 @@ ssize_t ngx_write_file(ngx_file_t *file,
         return NGX_ERROR;
     }
 
+    file->sys_offset += n;
+
 #endif
 
     file->offset += n;
@@ -150,6 +158,8 @@ ssize_t ngx_write_chain_to_file(ngx_file
         }
     }
 
+    file->sys_offset = offset;
+
     n = writev(file->fd, io.elts, io.nelts);
 
     if (n == -1) {
@@ -163,6 +173,7 @@ ssize_t ngx_write_chain_to_file(ngx_file
         return NGX_ERROR;
     }
 
+    file->sys_offset += n;
     file->offset += n;
 
     return n;