use ngx_dir_access() to enable search bits for directory

This commit is contained in:
Igor Sysoev 2007-01-29 12:25:44 +00:00
parent e99305be7a
commit e31625b60e
3 changed files with 15 additions and 7 deletions

View File

@ -252,7 +252,9 @@ ngx_http_dav_handler(ngx_http_request_t *r)
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"http mkcol path: \"%s\"", path.data); "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) { if (ngx_http_dav_location(r, path.data) != NGX_OK) {
return NGX_HTTP_INTERNAL_SERVER_ERROR; return NGX_HTTP_INTERNAL_SERVER_ERROR;
} }
@ -351,7 +353,7 @@ ngx_http_dav_put_handler(ngx_http_request_t *r)
#if !(NGX_WIN32) #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) == NGX_FILE_ERROR)
{ {
err = ngx_errno; err = ngx_errno;
@ -393,7 +395,7 @@ ngx_http_dav_put_handler(ngx_http_request_t *r)
if (err == NGX_ENOENT) { if (err == NGX_ENOENT) {
if (dlcf->create_full_put_path) { 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 (err == 0) {
if (ngx_rename_file(temp->data, path.data) != NGX_FILE_ERROR) { if (ngx_rename_file(temp->data, path.data) != NGX_FILE_ERROR) {
@ -539,7 +541,7 @@ ngx_http_dav_access(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
value = cf->args->elts; value = cf->args->elts;
lcf->access = 0700; lcf->access = 0600;
for (i = 1; i < cf->args->nelts; i++) { for (i = 1; i < cf->args->nelts; i++) {
@ -562,16 +564,16 @@ ngx_http_dav_access(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
} }
if (ngx_strcmp(p, "rw") == 0) { if (ngx_strcmp(p, "rw") == 0) {
right = 7; right = 6;
} else if (ngx_strcmp(p, "r") == 0) { } else if (ngx_strcmp(p, "r") == 0) {
right = 5; right = 4;
} else { } else {
goto invalid; goto invalid;
} }
lcf->access += right << shift; lcf->access |= right << shift;
} }
return NGX_CONF_OK; return NGX_CONF_OK;

View File

@ -122,6 +122,9 @@ ngx_int_t ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir);
#define ngx_delete_dir_n "rmdir()" #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) #define ngx_de_name(dir) ((u_char *) (dir)->de->d_name)
#if (NGX_FREEBSD) #if (NGX_FREEBSD)
#define ngx_de_namelen(dir) (dir)->de->d_namlen #define ngx_de_namelen(dir) (dir)->de->d_namlen

View File

@ -150,6 +150,9 @@ ngx_int_t ngx_read_dir(ngx_dir_t *dir);
#define ngx_delete_dir_n "RemoveDirectory()" #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_name(dir) ((u_char *) (dir)->finddata.cFileName)
#define ngx_de_namelen(dir) ngx_strlen((dir)->finddata.cFileName) #define ngx_de_namelen(dir) ngx_strlen((dir)->finddata.cFileName)