comparison src/os/unix/ngx_files.c @ 182:3c49eaf3f522

nginx-0.0.1-2003-11-13-09:14:05 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 13 Nov 2003 06:14:05 +0000
parents c42be4185301
children c1f3a3c7c5db
comparison
equal deleted inserted replaced
181:811bdd2af794 182:3c49eaf3f522
12 ssize_t n; 12 ssize_t n;
13 13
14 ngx_log_debug(file->log, "read: %d, %x, %d, %qd" _ 14 ngx_log_debug(file->log, "read: %d, %x, %d, %qd" _
15 file->fd _ buf _ size _ offset); 15 file->fd _ buf _ size _ offset);
16 16
17 #if (HAVE_PREAD)
18
17 n = pread(file->fd, buf, size, offset); 19 n = pread(file->fd, buf, size, offset);
18 20
19 if (n == -1) { 21 if (n == -1) {
20 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "pread() failed"); 22 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "pread() failed");
21 return NGX_ERROR; 23 return NGX_ERROR;
22 } 24 }
23 25
26 #else
27
28 if (file->offset != offset) {
29 if (lseek(file->fd, offset, SEEK_SET) == -1) {
30 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "lseek() failed");
31 return NGX_ERROR;
32 }
33 }
34
35 n = read(file->fd, buf, size);
36
37 if (n == -1) {
38 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "read() failed");
39 return NGX_ERROR;
40 }
41
42 #endif
43
24 file->offset += n; 44 file->offset += n;
25 45
26 return n; 46 return n;
27 } 47 }
28 48
29 49
30 ssize_t ngx_write_file(ngx_file_t *file, char *buf, size_t size, off_t offset) 50 ssize_t ngx_write_file(ngx_file_t *file, char *buf, size_t size, off_t offset)
31 { 51 {
32 ssize_t n; 52 ssize_t n;
53
54 #if (HAVE_PWRITE)
33 55
34 n = pwrite(file->fd, buf, size, offset); 56 n = pwrite(file->fd, buf, size, offset);
35 57
36 if (n == -1) { 58 if (n == -1) {
37 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "pwrite() failed"); 59 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "pwrite() failed");
41 if ((size_t) n != size) { 63 if ((size_t) n != size) {
42 ngx_log_error(NGX_LOG_CRIT, file->log, 0, 64 ngx_log_error(NGX_LOG_CRIT, file->log, 0,
43 "pwrite() has written only %d of %d", n, size); 65 "pwrite() has written only %d of %d", n, size);
44 return NGX_ERROR; 66 return NGX_ERROR;
45 } 67 }
68
69 #else
70
71 if (file->offset != offset) {
72 if (lseek(file->fd, offset, SEEK_SET) == -1) {
73 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "lseek() failed");
74 return NGX_ERROR;
75 }
76 }
77
78 n = write(file->fd, buf, size);
79
80 if (n == -1) {
81 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "write() failed");
82 return NGX_ERROR;
83 }
84
85 if ((size_t) n != size) {
86 ngx_log_error(NGX_LOG_CRIT, file->log, 0,
87 "write() has written only %d of %d", n, size);
88 return NGX_ERROR;
89 }
90
91 #endif
46 92
47 file->offset += n; 93 file->offset += n;
48 94
49 return n; 95 return n;
50 } 96 }