diff options
author | Igor Sysoev <igor@sysoev.ru> | 2003-04-28 15:06:39 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2003-04-28 15:06:39 +0000 |
commit | 1d8d9eee942ab1d2565048e00d1817147c49f48c (patch) | |
tree | 05b00d2609f9a7264f2356b559353b466d1be0d4 /src/core/ngx_file.c | |
parent | a09f08dbab9f06b81c1224a32607b26292015c8b (diff) | |
download | nginx-1d8d9eee942ab1d2565048e00d1817147c49f48c.tar.gz nginx-1d8d9eee942ab1d2565048e00d1817147c49f48c.zip |
nginx-0.0.1-2003-04-28-19:06:39 import
Diffstat (limited to 'src/core/ngx_file.c')
-rw-r--r-- | src/core/ngx_file.c | 34 |
1 files changed, 31 insertions, 3 deletions
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 <ngx_files.h> +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++; +} |