aboutsummaryrefslogtreecommitdiff
path: root/src/core/ngx_file.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2003-04-28 15:06:39 +0000
committerIgor Sysoev <igor@sysoev.ru>2003-04-28 15:06:39 +0000
commit1d8d9eee942ab1d2565048e00d1817147c49f48c (patch)
tree05b00d2609f9a7264f2356b559353b466d1be0d4 /src/core/ngx_file.c
parenta09f08dbab9f06b81c1224a32607b26292015c8b (diff)
downloadnginx-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.c34
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++;
+}