diff options
author | Igor Sysoev <igor@sysoev.ru> | 2003-11-18 21:34:08 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2003-11-18 21:34:08 +0000 |
commit | 1b138ed141c0bdb0c9944c1ae70e53682ed2d035 (patch) | |
tree | c5b4cabecced530570f4a2d6a93cc7d5fc8e044e /src/os/unix | |
parent | 222a2adf40eb25ff613c251f15032f1e39d7f609 (diff) | |
download | nginx-1b138ed141c0bdb0c9944c1ae70e53682ed2d035.tar.gz nginx-1b138ed141c0bdb0c9944c1ae70e53682ed2d035.zip |
nginx-0.0.1-2003-11-19-00:34:08 import
Diffstat (limited to 'src/os/unix')
-rw-r--r-- | src/os/unix/ngx_files.c | 15 | ||||
-rw-r--r-- | src/os/unix/ngx_freebsd_config.h | 4 |
2 files changed, 15 insertions, 4 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; diff --git a/src/os/unix/ngx_freebsd_config.h b/src/os/unix/ngx_freebsd_config.h index 57b98cc59..0493b3b88 100644 --- a/src/os/unix/ngx_freebsd_config.h +++ b/src/os/unix/ngx_freebsd_config.h @@ -93,8 +93,8 @@ typedef uint32_t socklen_t; /* STUB */ -#define HAVE_PREAD 0 -#define HAVE_PWRITE 0 +#define HAVE_PREAD 1 +#define HAVE_PWRITE 1 #define HAVE_LOCALTIME_R 1 |