Mercurial > hg > nginx-quic
comparison src/os/win32/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 | b75602822f64 |
children | 4c698194c56d |
comparison
equal
deleted
inserted
replaced
181:811bdd2af794 | 182:3c49eaf3f522 |
---|---|
3 #include <ngx_core.h> | 3 #include <ngx_core.h> |
4 | 4 |
5 | 5 |
6 ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset) | 6 ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset) |
7 { | 7 { |
8 size_t n; | 8 size_t n; |
9 long high_offset; | |
10 ngx_err_t err; | |
11 OVERLAPPED ovlp, *povlp; | |
9 | 12 |
10 if (ReadFile(file->fd, buf, size, &n, NULL) == 0) { | 13 if (ngx_win32_version < NGX_WIN_NT) { |
14 high_offset = (long) (offset >> 32); | |
15 if (SetFilePointer(file->fd, (long) offset, &high_offset, FILE_BEGIN) | |
16 == 0xFFFFFFFF) | |
17 { | |
18 err = ngx_errno; | |
19 if (err != NO_ERROR) { | |
20 ngx_log_error(NGX_LOG_ERR, file->log, err, | |
21 "SeekFilePointer() failed"); | |
22 return NGX_ERROR; | |
23 } | |
24 } | |
25 | |
26 povlp = NULL; | |
27 | |
28 } else { | |
29 ovlp.Internal = 0; | |
30 ovlp.InternalHigh = 0; | |
31 ovlp.Offset = (DWORD) offset; | |
32 ovlp.OffsetHigh = (DWORD) (offset >> 32); | |
33 ovlp.hEvent = NULL; | |
34 | |
35 povlp = &ovlp; | |
36 } | |
37 | |
38 if (ReadFile(file->fd, buf, size, &n, povlp) == 0) { | |
11 ngx_log_error(NGX_LOG_ERR, file->log, ngx_errno, "ReadFile() failed"); | 39 ngx_log_error(NGX_LOG_ERR, file->log, ngx_errno, "ReadFile() failed"); |
12 return NGX_ERROR; | 40 return NGX_ERROR; |
13 } | 41 } |
14 | 42 |
15 file->offset += n; | 43 file->offset += n; |
16 | 44 |
17 return n; | 45 return n; |
18 } | 46 } |
19 | 47 |
48 | |
49 /* TODO: as read file */ | |
50 | |
51 ssize_t ngx_write_file(ngx_file_t *file, char *buf, size_t size, off_t offset) | |
52 { | |
53 size_t n; | |
54 | |
55 if (WriteFile(file->fd, buf, size, &n, NULL) == 0) { | |
56 ngx_log_error(NGX_LOG_ERR, file->log, ngx_errno, "WriteFile() failed"); | |
57 return NGX_ERROR; | |
58 } | |
59 | |
60 file->offset += n; | |
61 | |
62 return n; | |
63 } | |
64 | |
65 | |
66 /* TODO: log error */ | |
20 | 67 |
21 int ngx_file_append_mode(ngx_fd_t fd) | 68 int ngx_file_append_mode(ngx_fd_t fd) |
22 { | 69 { |
23 if (SetFilePointer(fd, 0, NULL, FILE_END) == 0xFFFFFFFF) { | 70 if (SetFilePointer(fd, 0, NULL, FILE_END) == 0xFFFFFFFF) { |
24 if (GetLastError() != NO_ERROR) { | 71 if (GetLastError() != NO_ERROR) { |