# HG changeset patch # User Maxim Dounin # Date 1404588587 -14400 # Node ID a680bf4dddd5c4b106419e3dfb0264815c401275 # Parent d2c286564fd467bb1bcd3d82978a1a012bc86990 Win32: ngx_open_dir() and ngx_close_dir() fixes. The ngx_open_dir() function changed to restore name passed to it. This fixes removing destination directory in dav module, as caught by dav.t. The ngx_close_dir() function introduced to properly convert errors, as FindClose() returns 0 on error. diff -r d2c286564fd4 -r a680bf4dddd5 src/os/win32/ngx_files.c --- a/src/os/win32/ngx_files.c Fri Jul 04 22:34:03 2014 +0400 +++ b/src/os/win32/ngx_files.c Sat Jul 05 23:29:47 2014 +0400 @@ -430,6 +430,8 @@ dir->dir = FindFirstFile((const char *) name->data, &dir->finddata); + name->data[name->len] = '\0'; + if (dir->dir == INVALID_HANDLE_VALUE) { return NGX_ERROR; } @@ -459,6 +461,17 @@ ngx_int_t +ngx_close_dir(ngx_dir_t *dir) +{ + if (FindClose(dir->dir) == 0) { + return NGX_ERROR; + } + + return NGX_OK; +} + + +ngx_int_t ngx_open_glob(ngx_glob_t *gl) { u_char *p; diff -r d2c286564fd4 -r a680bf4dddd5 src/os/win32/ngx_files.h --- a/src/os/win32/ngx_files.h Fri Jul 04 22:34:03 2014 +0400 +++ b/src/os/win32/ngx_files.h Sat Jul 05 23:29:47 2014 +0400 @@ -193,7 +193,7 @@ #define ngx_read_dir_n "FindNextFile()" -#define ngx_close_dir(d) FindClose((d)->dir) +ngx_int_t ngx_close_dir(ngx_dir_t *dir); #define ngx_close_dir_n "FindClose()"