comparison src/core/ngx_file.c @ 1291:13a4ce6e7f1e

proxy_store and fastcgi_store
author Igor Sysoev <igor@sysoev.ru>
date Thu, 12 Jul 2007 11:19:05 +0000
parents 58f1641783ca
children 5383f5232364
comparison
equal deleted inserted replaced
1290:4e6903652363 1291:13a4ce6e7f1e
288 if (ngx_add_path(cf, slot) == NGX_ERROR) { 288 if (ngx_add_path(cf, slot) == NGX_ERROR) {
289 return NGX_CONF_ERROR; 289 return NGX_CONF_ERROR;
290 } 290 }
291 291
292 return NGX_CONF_OK; 292 return NGX_CONF_OK;
293 }
294
295
296 char *
297 ngx_conf_set_access_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
298 {
299 char *confp = conf;
300
301 u_char *p;
302 ngx_str_t *value;
303 ngx_uint_t i, right, shift, *access;
304
305 access = (ngx_uint_t *) (confp + cmd->offset);
306
307 if (*access != NGX_CONF_UNSET_UINT) {
308 return "is duplicate";
309 }
310
311 value = cf->args->elts;
312
313 *access = 0600;
314
315 for (i = 1; i < cf->args->nelts; i++) {
316
317 p = value[i].data;
318
319 if (ngx_strncmp(p, "user:", sizeof("user:") - 1) == 0) {
320 shift = 6;
321 p += sizeof("user:") - 1;
322
323 } else if (ngx_strncmp(p, "group:", sizeof("group:") - 1) == 0) {
324 shift = 3;
325 p += sizeof("group:") - 1;
326
327 } else if (ngx_strncmp(p, "all:", sizeof("all:") - 1) == 0) {
328 shift = 0;
329 p += sizeof("all:") - 1;
330
331 } else if (ngx_strncmp(p, "off", sizeof("off") - 1) == 0) {
332 *access = 0;
333 return NGX_CONF_OK;
334
335 } else {
336 goto invalid;
337 }
338
339 if (ngx_strcmp(p, "rw") == 0) {
340 right = 6;
341
342 } else if (ngx_strcmp(p, "r") == 0) {
343 right = 4;
344
345 } else {
346 goto invalid;
347 }
348
349 *access |= right << shift;
350 }
351
352 return NGX_CONF_OK;
353
354 invalid:
355
356 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "invalid value \"%V\"", &value[i]);
357
358 return NGX_CONF_ERROR;
293 } 359 }
294 360
295 361
296 ngx_int_t 362 ngx_int_t
297 ngx_add_path(ngx_conf_t *cf, ngx_path_t **slot) 363 ngx_add_path(ngx_conf_t *cf, ngx_path_t **slot)