comparison src/os/win32/ngx_files.c @ 290:87e73f067470

nginx-0.0.2-2004-03-16-10:10:12 import
author Igor Sysoev <igor@sysoev.ru>
date Tue, 16 Mar 2004 07:10:12 +0000
parents 7c7183b3ea8b
children a472bfb778b3
comparison
equal deleted inserted replaced
289:0750faf8d7e3 290:87e73f067470
1 1
2 #include <ngx_config.h> 2 #include <ngx_config.h>
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, u_char *buf, size_t size, off_t offset)
7 { 7 {
8 long high_offset; 8 long high_offset;
9 DWORD n; 9 u_long n;
10 ngx_err_t err; 10 ngx_err_t err;
11 OVERLAPPED ovlp, *povlp; 11 OVERLAPPED ovlp, *povlp;
12 12
13 if (ngx_win32_version < NGX_WIN_NT) { 13 if (ngx_win32_version < NGX_WIN_NT) {
14 14
18 */ 18 */
19 19
20 if (file->offset != offset) { 20 if (file->offset != offset) {
21 21
22 /* 22 /*
23 * the maximum file size on FAT16 is 2G, but on FAT32 it's 4G so we 23 * the maximum file size on FAT16 is 2G, but on FAT32
24 * need to use high_offset because a single offset is signed value 24 * the size is 4G so we need to use high_offset
25 * because a single offset is signed value
25 */ 26 */
26 27
27 high_offset = (long) (offset >> 32); 28 high_offset = (long) (offset >> 32);
28 if (SetFilePointer(file->fd, (long) offset, &high_offset, 29 if (SetFilePointer(file->fd, (long) offset, &high_offset,
29 FILE_BEGIN) == INVALID_SET_FILE_POINTER) 30 FILE_BEGIN) == INVALID_SET_FILE_POINTER)
45 povlp = NULL; 46 povlp = NULL;
46 47
47 } else { 48 } else {
48 ovlp.Internal = 0; 49 ovlp.Internal = 0;
49 ovlp.InternalHigh = 0; 50 ovlp.InternalHigh = 0;
50 ovlp.Offset = (DWORD) offset; 51 ovlp.Offset = (u_long) offset;
51 ovlp.OffsetHigh = (DWORD) (offset >> 32); 52 ovlp.OffsetHigh = (u_long) (offset >> 32);
52 ovlp.hEvent = NULL; 53 ovlp.hEvent = NULL;
53 54
54 povlp = &ovlp; 55 povlp = &ovlp;
55 } 56 }
56 57
63 64
64 return n; 65 return n;
65 } 66 }
66 67
67 68
68 ssize_t ngx_write_file(ngx_file_t *file, char *buf, size_t size, off_t offset) 69 ssize_t ngx_write_file(ngx_file_t *file, u_char *buf, size_t size, off_t offset)
69 { 70 {
70 long high_offset; 71 long high_offset;
71 DWORD n; 72 u_long n;
72 ngx_err_t err; 73 ngx_err_t err;
73 OVERLAPPED ovlp, *povlp; 74 OVERLAPPED ovlp, *povlp;
74 75
75 if (ngx_win32_version < NGX_WIN_NT) { 76 if (ngx_win32_version < NGX_WIN_NT) {
76 77
80 */ 81 */
81 82
82 if (file->offset != offset) { 83 if (file->offset != offset) {
83 84
84 /* 85 /*
85 * the maximum file size on FAT16 is 2G, but on FAT32 it's 4G so we 86 * the maximum file size on FAT16 is 2G, but on FAT32
86 * need to use high_offset because a single offset is signed value 87 * the size is 4G so we need to use high_offset
88 * because a single offset is signed value
87 */ 89 */
88 90
89 high_offset = (long) (offset >> 32); 91 high_offset = (long) (offset >> 32);
90 if (SetFilePointer(file->fd, (long) offset, &high_offset, 92 if (SetFilePointer(file->fd, (long) offset, &high_offset,
91 FILE_BEGIN) == INVALID_SET_FILE_POINTER) 93 FILE_BEGIN) == INVALID_SET_FILE_POINTER)
107 povlp = NULL; 109 povlp = NULL;
108 110
109 } else { 111 } else {
110 ovlp.Internal = 0; 112 ovlp.Internal = 0;
111 ovlp.InternalHigh = 0; 113 ovlp.InternalHigh = 0;
112 ovlp.Offset = (DWORD) offset; 114 ovlp.Offset = (u_long) offset;
113 ovlp.OffsetHigh = (DWORD) (offset >> 32); 115 ovlp.OffsetHigh = (u_long) (offset >> 32);
114 ovlp.hEvent = NULL; 116 ovlp.hEvent = NULL;
115 117
116 povlp = &ovlp; 118 povlp = &ovlp;
117 } 119 }
118 120