diff options
Diffstat (limited to 'src/os')
-rw-r--r-- | src/os/unix/ngx_files.h | 4 | ||||
-rw-r--r-- | src/os/unix/ngx_sendv.c | 26 | ||||
-rw-r--r-- | src/os/win32/ngx_files.c | 2 | ||||
-rw-r--r-- | src/os/win32/ngx_files.h | 34 | ||||
-rw-r--r-- | src/os/win32/ngx_sendv.c | 42 | ||||
-rw-r--r-- | src/os/win32/ngx_time.h | 3 |
6 files changed, 64 insertions, 47 deletions
diff --git a/src/os/unix/ngx_files.h b/src/os/unix/ngx_files.h index 90d6dd6c8..f0c324e40 100644 --- a/src/os/unix/ngx_files.h +++ b/src/os/unix/ngx_files.h @@ -6,6 +6,9 @@ #include <sys/stat.h> typedef int ngx_fd_t; +#define NGX_INVALID_FILE -1 +#define NGX_FILE_ERROR -1 + typedef struct stat ngx_file_info_t; @@ -27,6 +30,7 @@ typedef struct stat ngx_file_info_t; #define ngx_stat_fd_n "fstat()" #define ngx_is_dir(sb) (S_ISDIR(sb.st_mode)) +#define ngx_is_file(sb) (S_ISREG(sb.st_mode)) #define ngx_file_size(sb) sb.st_size #define ngx_file_mtime(sb) sb.st_mtime diff --git a/src/os/unix/ngx_sendv.c b/src/os/unix/ngx_sendv.c index 409456890..810caaee9 100644 --- a/src/os/unix/ngx_sendv.c +++ b/src/os/unix/ngx_sendv.c @@ -8,21 +8,21 @@ ssize_t ngx_sendv(ngx_connection_t *c, ngx_iovec_t *iovec, int n) { - ssize_t rc; - ngx_err_t err; + ssize_t rc; + ngx_err_t err; - rc = writev(c->fd, iovec, n); + rc = writev(c->fd, iovec, n); - if (rc == -1) { - err = ngx_socket_errno; - if (err == NGX_EAGAIN) { - ngx_log_error(NGX_LOG_INFO, c->log, err, "sendv() eagain"); - return NGX_AGAIN; - } + if (rc == -1) { + err = ngx_socket_errno; + if (err == NGX_EAGAIN) { + ngx_log_error(NGX_LOG_INFO, c->log, err, "sendv() eagain"); + return NGX_AGAIN; + } - ngx_log_error(NGX_LOG_ERR, c->log, err, "sendv() failed"); - return NGX_ERROR; - } + ngx_log_error(NGX_LOG_ERR, c->log, err, "sendv() failed"); + return NGX_ERROR; + } - return rc; + return rc; } diff --git a/src/os/win32/ngx_files.c b/src/os/win32/ngx_files.c index 8a919017c..ce0d3dda0 100644 --- a/src/os/win32/ngx_files.c +++ b/src/os/win32/ngx_files.c @@ -14,5 +14,3 @@ ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset) return n; } - - diff --git a/src/os/win32/ngx_files.h b/src/os/win32/ngx_files.h index bddfe0d54..8cd58efc7 100644 --- a/src/os/win32/ngx_files.h +++ b/src/os/win32/ngx_files.h @@ -11,6 +11,9 @@ #endif typedef HANDLE ngx_fd_t; +#define NGX_INVALID_FILE INVALID_HANDLE_VALUE +#define NGX_FILE_ERROR 0 + typedef unsigned __int64 off_t; typedef BY_HANDLE_FILE_INFORMATION ngx_file_info_t; @@ -25,33 +28,32 @@ typedef BY_HANDLE_FILE_INFORMATION ngx_file_info_t; #define NGX_FILE_RDONLY GENERIC_READ +#define ngx_close_file CloseHandle +#define ngx_close_file_n "CloseHandle()" int ngx_file_type(char *filename, ngx_file_info_t *fi); -#define ngx_file_type_n "GetFileAttributes" +#define ngx_file_type_n "GetFileAttributes" -#define ngx_stat_fd(fd, fi) GetFileInformationByHandle(fd, fi) -#define ngx_stat_fd_n "GetFileInformationByHandle" +#define ngx_stat_fd(fd, fi) GetFileInformationByHandle(fd, fi) +#define ngx_stat_fd_n "GetFileInformationByHandle" -#define ngx_is_dir(fi) (fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) +#define ngx_is_dir(fi) (fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) +#define ngx_is_file(fi) !(fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) #define ngx_file_size(fi) \ - fi.nFileSizeLow + (((off_t) fi.nFileSizeHigh << 32) | fi.nFileSizeLow) -/* -#define ngx_file_size(fi) \ - ((off_t) fi.nFileSizeHigh << 32 & fi.nFileSizeLow) -*/ -#define ngx_file_mtime(fi) fi.ftLastWriteTime +/* There are 134774 days between 1 Jan 1970 and 1 Jan 1601, + 11644473600 seconds or 11644473600,000,000,0 100-nanosecond intervals */ -/* -1970 - 1601: - 116444736000000000 - 19DB1DED53E8000 -*/ +#define ngx_file_mtime(fi) \ + (time_t) (((((unsigned __int64) fi.ftLastWriteTime.dwHighDateTime << 32) \ + | fi.ftLastWriteTime.dwLowDateTime) \ + - 116444736000000000) / 10000000) -#define ngx_read_file_n "ReadFile()" +#define ngx_read_file_n "ReadFile()" #endif /* _NGX_FILES_H_INCLUDED_ */ diff --git a/src/os/win32/ngx_sendv.c b/src/os/win32/ngx_sendv.c index 7bf590eb7..452df9f15 100644 --- a/src/os/win32/ngx_sendv.c +++ b/src/os/win32/ngx_sendv.c @@ -6,29 +6,39 @@ #include <ngx_log.h> #include <ngx_sendv.h> +#include <ngx_string.h> + ssize_t ngx_sendv(ngx_connection_t *c, ngx_iovec_t *iovec, int n) { - int rc; - size_t sent; - ngx_err_t err; + int rc; + size_t sent; + ngx_err_t err; + +#if 0 + /* STUB: WSABUF must be 4-byte aligned. Undocumented WSAEINVAL error */ + ngx_iovec_t iov[10]; + ngx_memcpy(iov, iovec, n * sizeof(ngx_iovec_t)); +#endif + + sent = 0; - ngx_log_debug(c->log, "WSASend() start"); + ngx_log_debug(c->log, "WSASend: %d, %d, %08x" _ c->fd _ n _ iovec); - rc = WSASend(c->fd, iovec, n, &sent, 0, NULL, NULL); + rc = WSASend(c->fd, iovec, n, &sent, 0, NULL, NULL); - ngx_log_debug(c->log, "WSASend() done"); + ngx_log_debug(c->log, "WSASend() done"); - if (rc == -1) { - err = ngx_socket_errno; + if (rc == SOCKET_ERROR) { + err = ngx_socket_errno; - if (err == NGX_EAGAIN) { - ngx_log_error(NGX_LOG_INFO, c->log, err, "WSASend() eagain"); - return NGX_AGAIN; - } + if (err == NGX_EAGAIN) { + ngx_log_error(NGX_LOG_INFO, c->log, err, "WSASend() eagain"); + return NGX_AGAIN; + } - ngx_log_error(NGX_LOG_ERR, c->log, err, "WSASend() failed"); - return NGX_ERROR; - } + ngx_log_error(NGX_LOG_ERR, c->log, err, "WSASend() failed"); + return NGX_ERROR; + } - return sent; + return sent; } diff --git a/src/os/win32/ngx_time.h b/src/os/win32/ngx_time.h index a810c70aa..57bd421da 100644 --- a/src/os/win32/ngx_time.h +++ b/src/os/win32/ngx_time.h @@ -21,5 +21,8 @@ typedef FILETIME ngx_mtime_t; #define ngx_localtime GetLocalTime #define ngx_msec GetTickCount +/* STUB */ +#define ngx_time() time(NULL) + #endif /* _NGX_TIME_H_INCLUDED_ */ |