diff src/core/ngx_file.c @ 83:a7e45c45a95c

nginx-0.0.1-2003-04-28-19:06:39 import
author Igor Sysoev <igor@sysoev.ru>
date Mon, 28 Apr 2003 15:06:39 +0000
parents 869b10be682f
children 19cc647ecd91
line wrap: on
line diff
--- 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 *fil
 
     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" _
         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, ng
 
     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++;
+}