aboutsummaryrefslogtreecommitdiff
path: root/src/os/win32/ngx_files.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/os/win32/ngx_files.c')
-rw-r--r--src/os/win32/ngx_files.c62
1 files changed, 60 insertions, 2 deletions
diff --git a/src/os/win32/ngx_files.c b/src/os/win32/ngx_files.c
index aee87043b..51018a74b 100644
--- a/src/os/win32/ngx_files.c
+++ b/src/os/win32/ngx_files.c
@@ -301,7 +301,7 @@ 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((const char *) name->data, &dir->fd);
+ dir->dir = FindFirstFile((const char *) name->data, &dir->finddata);
if (dir->dir == INVALID_HANDLE_VALUE) {
return NGX_ERROR;
@@ -322,7 +322,7 @@ ngx_read_dir(ngx_dir_t *dir)
return NGX_OK;
}
- if (FindNextFile(dir->dir, &dir->fd) != 0) {
+ if (FindNextFile(dir->dir, &dir->finddata) != 0) {
return NGX_OK;
}
@@ -331,6 +331,64 @@ ngx_read_dir(ngx_dir_t *dir)
ngx_int_t
+ngx_open_glob(ngx_glob_t *gl)
+{
+ gl->dir = FindFirstFile((const char *) gl->pattern, &gl->finddata);
+
+ if (gl->dir == INVALID_HANDLE_VALUE) {
+ return NGX_ERROR;
+ }
+
+ gl->ready = 1;
+
+ return NGX_OK;
+}
+
+
+ngx_int_t
+ngx_read_glob(ngx_glob_t *gl, ngx_str_t *name)
+{
+ ngx_err_t err;
+
+ if (gl->ready) {
+ name->len = ngx_strlen(gl->finddata.cFileName);
+ name->data = (u_char *) gl->finddata.cFileName;
+
+ gl->ready = 0;
+ return NGX_OK;
+ }
+
+ if (FindNextFile(gl->dir, &gl->finddata) != 0) {
+ name->len = ngx_strlen(gl->finddata.cFileName);
+ name->data = (u_char *) gl->finddata.cFileName;
+
+ return NGX_OK;
+ }
+
+ err = ngx_errno;
+
+ if (err == NGX_ENOMOREFILES) {
+ return NGX_DONE;
+ }
+
+ ngx_log_error(NGX_LOG_ALERT, gl->log, err,
+ "FindNextFile(%s) failed", gl->pattern);
+
+ return NGX_ERROR;
+}
+
+
+void
+ngx_close_glob(ngx_glob_t *gl)
+{
+ if (FindClose(gl->dir) != 0) {
+ ngx_log_error(NGX_LOG_ALERT, gl->log, ngx_errno,
+ "FindClose(%s) failed", gl->pattern);
+ }
+}
+
+
+ngx_int_t
ngx_de_info(u_char *name, ngx_dir_t *dir)
{
return NGX_OK;