comparison src/core/ngx_file.c @ 665:0b460e61bdcd default tip

Merge with nginx 1.0.0.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 25 Apr 2011 04:22:17 +0400
parents 8246d8a2c2be
children
comparison
equal deleted inserted replaced
572:06419a2298a9 665:0b460e61bdcd
181 ngx_create_full_path(u_char *dir, ngx_uint_t access) 181 ngx_create_full_path(u_char *dir, ngx_uint_t access)
182 { 182 {
183 u_char *p, ch; 183 u_char *p, ch;
184 ngx_err_t err; 184 ngx_err_t err;
185 185
186 for (p = dir + 1; *p; p++) { 186 err = 0;
187
188 #if (NGX_WIN32)
189 p = dir + 3;
190 #else
191 p = dir + 1;
192 #endif
193
194 for ( /* void */ ; *p; p++) {
187 ch = *p; 195 ch = *p;
188 196
189 if (ch != '/') { 197 if (ch != '/') {
190 continue; 198 continue;
191 } 199 }
192 200
193 *p = '\0'; 201 *p = '\0';
194 202
195 if (ngx_create_dir(dir, access) == NGX_FILE_ERROR) { 203 if (ngx_create_dir(dir, access) == NGX_FILE_ERROR) {
196 err = ngx_errno; 204 err = ngx_errno;
197 if (err != NGX_EEXIST) { 205
206 switch (err) {
207 case NGX_EEXIST:
208 err = 0;
209 case NGX_EACCES:
210 break;
211
212 default:
198 return err; 213 return err;
199 } 214 }
200 } 215 }
201 216
202 *p = '/'; 217 *p = '/';
203 } 218 }
204 219
205 return 0; 220 return err;
206 } 221 }
207 222
208 223
209 ngx_atomic_uint_t 224 ngx_atomic_uint_t
210 ngx_next_temp_number(ngx_uint_t collision) 225 ngx_next_temp_number(ngx_uint_t collision)
574 } 589 }
575 590
576 #if (NGX_WIN32) 591 #if (NGX_WIN32)
577 592
578 if (err == NGX_EEXIST) { 593 if (err == NGX_EEXIST) {
579 if (ngx_win32_rename_file(src, to, ext->log) == NGX_OK) { 594 err = ngx_win32_rename_file(src, to, ext->log);
580 595
581 if (ngx_rename_file(src->data, to->data) != NGX_FILE_ERROR) { 596 if (err == 0) {
582 return NGX_OK; 597 return NGX_OK;
583 }
584
585 err = ngx_errno;
586
587 } else {
588 err = 0;
589 } 598 }
590 } 599 }
591 600
592 #endif 601 #endif
593 602
751 } 760 }
752 761
753 size -= n; 762 size -= n;
754 } 763 }
755 764
756 if (ngx_set_file_time(to, nfd, cf->time) != NGX_OK) { 765 if (cf->time != -1) {
757 ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno, 766 if (ngx_set_file_time(to, nfd, cf->time) != NGX_OK) {
758 ngx_set_file_time_n " \"%s\" failed", to); 767 ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno,
759 goto failed; 768 ngx_set_file_time_n " \"%s\" failed", to);
769 goto failed;
770 }
760 } 771 }
761 772
762 rc = NGX_OK; 773 rc = NGX_OK;
763 774
764 failed: 775 failed:
812 ngx_int_t rc; 823 ngx_int_t rc;
813 ngx_err_t err; 824 ngx_err_t err;
814 ngx_str_t file, buf; 825 ngx_str_t file, buf;
815 ngx_dir_t dir; 826 ngx_dir_t dir;
816 827
817 buf.len = 0; 828 ngx_str_null(&buf);
818 buf.data = NULL;
819 829
820 ngx_log_debug1(NGX_LOG_DEBUG_CORE, ctx->log, 0, 830 ngx_log_debug1(NGX_LOG_DEBUG_CORE, ctx->log, 0,
821 "walk tree \"%V\"", tree); 831 "walk tree \"%V\"", tree);
822 832
823 if (ngx_open_dir(tree, &dir) == NGX_ERROR) { 833 if (ngx_open_dir(tree, &dir) == NGX_ERROR) {