aboutsummaryrefslogtreecommitdiff
path: root/src/os/unix/ngx_files.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2003-11-18 21:34:08 +0000
committerIgor Sysoev <igor@sysoev.ru>2003-11-18 21:34:08 +0000
commit1b138ed141c0bdb0c9944c1ae70e53682ed2d035 (patch)
treec5b4cabecced530570f4a2d6a93cc7d5fc8e044e /src/os/unix/ngx_files.c
parent222a2adf40eb25ff613c251f15032f1e39d7f609 (diff)
downloadnginx-1b138ed141c0bdb0c9944c1ae70e53682ed2d035.tar.gz
nginx-1b138ed141c0bdb0c9944c1ae70e53682ed2d035.zip
nginx-0.0.1-2003-11-19-00:34:08 import
Diffstat (limited to 'src/os/unix/ngx_files.c')
-rw-r--r--src/os/unix/ngx_files.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/os/unix/ngx_files.c b/src/os/unix/ngx_files.c
index 76b86a035..7b9d4e440 100644
--- 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, char *buf, size_t size, off_t offset)
#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, char *buf, size_t size, off_t offset)
return NGX_ERROR;
}
+ file->sys_offset += n;
+
#endif
file->offset += n;
@@ -68,13 +72,15 @@ ssize_t ngx_write_file(ngx_file_t *file, char *buf, size_t size, off_t offset)
#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, char *buf, size_t size, off_t offset)
return NGX_ERROR;
}
+ file->sys_offset += n;
+
#endif
file->offset += n;
@@ -150,6 +158,8 @@ ssize_t ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *cl,
}
}
+ 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_t *file, ngx_chain_t *cl,
return NGX_ERROR;
}
+ file->sys_offset += n;
file->offset += n;
return n;