comparison src/http/modules/ngx_http_index_handler.c @ 26:53cb81681040

nginx-0.0.1-2002-12-15-09:25:09 import
author Igor Sysoev <igor@sysoev.ru>
date Sun, 15 Dec 2002 06:25:09 +0000
parents 77c7629a2627
children 6a0b3d6e9c13
comparison
equal deleted inserted replaced
25:a8b156554dfe 26:53cb81681040
14 static void *ngx_http_index_merge_conf(ngx_pool_t *p, 14 static void *ngx_http_index_merge_conf(ngx_pool_t *p,
15 void *parent, void *child); 15 void *parent, void *child);
16 static char *ngx_http_index_set_index(ngx_pool_t *p, void *conf, 16 static char *ngx_http_index_set_index(ngx_pool_t *p, void *conf,
17 ngx_str_t *value); 17 ngx_str_t *value);
18 18
19 static ngx_command_t ngx_http_index_commands[]; 19
20 static ngx_command_t ngx_http_index_commands[] = {
21
22 {"index", ngx_http_index_set_index, NULL,
23 NGX_HTTP_LOC_CONF, NGX_CONF_ITERATE,
24 "set index files"},
25
26 {NULL}
27
28 };
20 29
21 30
22 ngx_http_module_t ngx_http_index_module = { 31 ngx_http_module_t ngx_http_index_module = {
23 NGX_HTTP_MODULE, 32 NGX_HTTP_MODULE,
24 33
28 37
29 NULL, /* init module */ 38 NULL, /* init module */
30 NULL, /* translate handler */ 39 NULL, /* translate handler */
31 40
32 NULL, /* init output body filter */ 41 NULL, /* init output body filter */
33 };
34
35
36 static ngx_command_t ngx_http_index_commands[] = {
37
38 {"index", ngx_http_index_set_index, NULL,
39 NGX_HTTP_LOC_CONF, NGX_CONF_ITERATE,
40 "set index files"},
41
42 {NULL}
43
44 }; 42 };
45 43
46 44
47 int ngx_http_index_handler(ngx_http_request_t *r) 45 int ngx_http_index_handler(ngx_http_request_t *r)
48 { 46 {
69 index = (ngx_str_t *) cf->indices->elts; 67 index = (ngx_str_t *) cf->indices->elts;
70 for (i = 0; i < cf->indices->nelts; i++) { 68 for (i = 0; i < cf->indices->nelts; i++) {
71 ngx_memcpy(file, index[i].data, index[i].len + 1); 69 ngx_memcpy(file, index[i].data, index[i].len + 1);
72 70
73 fd = ngx_open_file(name, NGX_FILE_RDONLY); 71 fd = ngx_open_file(name, NGX_FILE_RDONLY);
74 if (fd == -1) { 72 if (fd == NGX_INVALID_FILE) {
75 err = ngx_errno; 73 err = ngx_errno;
76 if (err == NGX_ENOENT) 74 if (err == NGX_ENOENT)
77 continue; 75 continue;
76 #if (WIN32)
77 if (err == ERROR_PATH_NOT_FOUND)
78 continue;
79 #endif
78 80
79 ngx_log_error(NGX_LOG_ERR, r->connection->log, err, 81 ngx_log_error(NGX_LOG_ERR, r->connection->log, err,
80 ngx_open_file_n " %s failed", name); 82 ngx_open_file_n " %s failed", name);
81 83
82 return NGX_HTTP_INTERNAL_SERVER_ERROR; 84 return NGX_HTTP_INTERNAL_SERVER_ERROR;
83 } 85 }
84 86
85 r->filename.len = r->server->doc_root_len + r->uri.len + index[i].len; 87 r->file.name.len = r->server->doc_root_len + r->uri.len + index[i].len;
86 r->filename.data = name; 88 r->file.name.data = name;
87 r->fd = fd; 89 r->file.fd = fd;
88 90
89 loc.len = r->uri.len + index[i].len; 91 loc.len = r->uri.len + index[i].len;
90 return ngx_http_internal_redirect(r, loc); 92 return ngx_http_internal_redirect(r, loc);
91 } 93 }
92 94