Mercurial > hg > nginx-quic
diff src/os/win32/ngx_files.c @ 186:c1f3a3c7c5db
nginx-0.0.1-2003-11-17-00:49:42 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sun, 16 Nov 2003 21:49:42 +0000 |
parents | d5f50cefc322 |
children | 7c7183b3ea8b |
line wrap: on
line diff
--- a/src/os/win32/ngx_files.c +++ b/src/os/win32/ngx_files.c @@ -163,14 +163,16 @@ ssize_t ngx_write_chain_to_file(ngx_file } -int ngx_rename_file(ngx_str_t *from, ngx_str_t *to, ngx_pool_t *pool) +int ngx_win32_rename_file(ngx_str_t *from, ngx_str_t *to, ngx_pool_t *pool) { int rc, collision; u_int num; char *name; - ngx_err_t err; - name = ngx_palloc(pool, to->len + 1 + 10 + 1 + sizeof("DELETE")); + if (!(name = ngx_palloc(pool, to->len + 1 + 10 + 1 + sizeof("DELETE")))) { + return NGX_ERROR; + } + ngx_memcpy(name, to->data, to->len); collision = 0; @@ -184,11 +186,6 @@ int ngx_rename_file(ngx_str_t *from, ngx ".%010u.DELETE", num); if (MoveFile(to->data, name) == 0) { - err = ngx_errno; - if (err == NGX_ENOENT || err == NGX_ENOTDIR) { - return NGX_ERROR; - } - collision = 1; ngx_log_error(NGX_LOG_ERR, pool->log, ngx_errno, "MoveFile() failed"); @@ -196,18 +193,21 @@ int ngx_rename_file(ngx_str_t *from, ngx } while (collision); + if (MoveFile(from->data, to->data) == 0) { + rc = NGX_ERROR; + + } else { + rc = NGX_OK; + } + if (ngx_win32_version >= NGX_WIN_NT) { if (DeleteFile(name) == 0) { ngx_log_error(NGX_LOG_ERR, pool->log, ngx_errno, "DeleteFile() failed"); } - } - - if (MoveFile(from->data, to->data) == 0) { - rc = NGX_ERROR; } else { - rc = NGX_OK; + /* TODO: Win9X: update the open files table */ } if (rc == NGX_ERROR) { @@ -220,7 +220,9 @@ int ngx_rename_file(ngx_str_t *from, ngx } -int ngx_file_type(char *file, ngx_file_info_t *sb) +#if 0 + +int ngx_file_info(char *file, ngx_file_info_t *sb) { WIN32_FILE_ATTRIBUTE_DATA fa; @@ -240,13 +242,13 @@ int ngx_file_type(char *file, ngx_file_i return NGX_OK; } +#endif -#if 0 -/* Win95 */ +int ngx_file_info(char *file, ngx_file_info_t *sb) +{ + /* Win95 */ -int ngx_file_type(char *file, ngx_file_info_t *sb) -{ sb->dwFileAttributes = GetFileAttributes(file); if (sb->dwFileAttributes == INVALID_FILE_ATTRIBUTES) { @@ -256,7 +258,37 @@ int ngx_file_type(char *file, ngx_file_i return NGX_OK; } -#endif + +int ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir) +{ + ngx_cpystrn(name->data + name->len, NGX_DIR_MASK, NGX_DIR_MASK_LEN + 1); + + dir->dir = FindFirstFile(name->data, &dir->fd); + + if (dir->dir == INVALID_HANDLE_VALUE) { + return NGX_ERROR; + } + + dir->info_valid = 1; + dir->ready = 1; + + return NGX_OK; +} + + +int ngx_read_dir(ngx_dir_t *dir) +{ + if (dir->ready) { + dir->ready = 0; + return NGX_OK; + } + + if (FindNextFile(dir->dir, &dir->fd) == 0) { + return NGX_ERROR; + } + + return NGX_OK; +} int ngx_file_append_mode(ngx_fd_t fd)