From 1d8d9eee942ab1d2565048e00d1817147c49f48c Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Mon, 28 Apr 2003 15:06:39 +0000 Subject: nginx-0.0.1-2003-04-28-19:06:39 import --- src/core/ngx_file.c | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) (limited to 'src/core/ngx_file.c') diff --git a/src/core/ngx_file.c b/src/core/ngx_file.c index 7576c9b5f..b8f15e17d 100644 --- a/src/core/ngx_file.c +++ b/src/core/ngx_file.c @@ -7,10 +7,14 @@ #include +static int ngx_temp_number; +static int ngx_random; + + int ngx_create_temp_file(ngx_file_t *file, ngx_path_t *path, - ngx_pool_t *pool, int num, int step, int persistent) + ngx_pool_t *pool, int persistent) { - int i; + int i, num; ngx_err_t err; file->name.len = path->name.len + 1 + path->len + 10; @@ -26,6 +30,8 @@ int ngx_create_temp_file(ngx_file_t *file, ngx_path_t *path, ngx_memcpy(file->name.data, path->name.data, path->name.len); + num = ngx_next_temp_number(0); + for ( ;; ) { snprintf(file->name.data + path->name.len + 1 + path->len, 11, "%010u", num); @@ -58,7 +64,7 @@ ngx_log_debug(file->log, "temp fd: %d" _ file->fd); err = ngx_errno; if (err == NGX_EEXIST) { - num = (num + 1) * step; + num = ngx_next_temp_number(1); continue; } @@ -140,3 +146,25 @@ int ngx_create_path(ngx_file_t *file, ngx_path_t *path) return NGX_OK; } + + +void ngx_init_temp_number() +{ + ngx_random = 0; + + ngx_temp_number = ngx_random; + + while (ngx_random < 10000) { + ngx_random = 123456; + } +} + + +int ngx_next_temp_number(int collision) +{ + if (collision) { + ngx_temp_number += ngx_random; + } + + return ngx_temp_number++; +} -- cgit v1.2.3