changeset 1089:b2e6eb425770

use ngx_dir_access() to enable search bits for directory
author Igor Sysoev <igor@sysoev.ru>
date Mon, 29 Jan 2007 12:25:44 +0000
parents 2d8e72584534
children 01b48bcb73bf
files src/http/modules/ngx_http_dav_module.c src/os/unix/ngx_files.h src/os/win32/ngx_files.h
diffstat 3 files changed, 15 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/http/modules/ngx_http_dav_module.c
+++ b/src/http/modules/ngx_http_dav_module.c
@@ -252,7 +252,9 @@ ngx_http_dav_handler(ngx_http_request_t 
         ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
                        "http mkcol path: \"%s\"", path.data);
 
-        if (ngx_create_dir(path.data, dlcf->access) != NGX_FILE_ERROR) {
+        if (ngx_create_dir(path.data, ngx_dir_access(dlcf->access))
+            != NGX_FILE_ERROR)
+        {
             if (ngx_http_dav_location(r, path.data) != NGX_OK) {
                 return NGX_HTTP_INTERNAL_SERVER_ERROR;
             }
@@ -351,7 +353,7 @@ ngx_http_dav_put_handler(ngx_http_reques
 
 #if !(NGX_WIN32)
 
-    if (ngx_change_file_access(temp->data, dlcf->access & ~0111)
+    if (ngx_change_file_access(temp->data, dlcf->access)
         == NGX_FILE_ERROR)
     {
         err = ngx_errno;
@@ -393,7 +395,7 @@ ngx_http_dav_put_handler(ngx_http_reques
     if (err == NGX_ENOENT) {
 
         if (dlcf->create_full_put_path) {
-            err = ngx_create_full_path(path.data, dlcf->access);
+            err = ngx_create_full_path(path.data, ngx_dir_access(dlcf->access));
 
             if (err == 0) {
                 if (ngx_rename_file(temp->data, path.data) != NGX_FILE_ERROR) {
@@ -539,7 +541,7 @@ ngx_http_dav_access(ngx_conf_t *cf, ngx_
 
     value = cf->args->elts;
 
-    lcf->access = 0700;
+    lcf->access = 0600;
 
     for (i = 1; i < cf->args->nelts; i++) {
 
@@ -562,16 +564,16 @@ ngx_http_dav_access(ngx_conf_t *cf, ngx_
         }
 
         if (ngx_strcmp(p, "rw") == 0) {
-            right = 7;
+            right = 6;
 
         } else if (ngx_strcmp(p, "r") == 0) {
-            right = 5;
+            right = 4;
 
         } else {
             goto invalid;
         }
 
-        lcf->access += right << shift;
+        lcf->access |= right << shift;
     }
 
     return NGX_CONF_OK;
--- a/src/os/unix/ngx_files.h
+++ b/src/os/unix/ngx_files.h
@@ -122,6 +122,9 @@ ngx_int_t ngx_open_dir(ngx_str_t *name, 
 #define ngx_delete_dir_n         "rmdir()"
 
 
+#define ngx_dir_access(a)        (a | (a & 0444) >> 2)
+
+
 #define ngx_de_name(dir)         ((u_char *) (dir)->de->d_name)
 #if (NGX_FREEBSD)
 #define ngx_de_namelen(dir)      (dir)->de->d_namlen
--- a/src/os/win32/ngx_files.h
+++ b/src/os/win32/ngx_files.h
@@ -150,6 +150,9 @@ ngx_int_t ngx_read_dir(ngx_dir_t *dir);
 #define ngx_delete_dir_n            "RemoveDirectory()"
 
 
+#define ngx_dir_access(a)           (a)
+
+
 #define ngx_de_name(dir)            ((u_char *) (dir)->finddata.cFileName)
 #define ngx_de_namelen(dir)         ngx_strlen((dir)->finddata.cFileName)