Hello All,

         To use the refresh_pattern in fractions,I have attatched a patch as 
refresh_fraction.patch
         The calculation changes are needed in the cache_cf.c for the float.

         I have tested for the refresh time as
         refresh_pattern .               0       20%     4320.12
          as well as 
         refresh_pattern .               0       20%     1.12
 
         Debug information on the cache.log is as
         2004/02/18 19:26:57| Refresh Values: min=0 max=259207 (max=4320.12)
         2004/02/18 19:21:28| Refresh Values: min=0 max=67 (max=1.12)

        To test the calculation use this,
        #include <sys/types.h>
        main()
        {
         float i=4320.12,min=60.11,max=0.0; /*  4320.12 for the fration time */
         max = (int)(time_t)(i*60);
         printf("Max Refresh Time:%f\n",max);
         printf("Max Refresh Time:%d\n",(int)max);
        }
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                                            refresh_patter.patch
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--- cache_cf_old.c      2004-02-18 19:34:53.000000000 +0530
+++ cache_cf.c  2004-02-18 19:38:12.000000000 +0530
@@ -218,6 +218,23 @@
     return i;
 }

+/*
+* Used to get the fractional or normal refresh pattern values
+*/
+
+float
+Getfloat(void)
+{
+    char *token = strtok(NULL, w_space);
+    float i;
+    if (token == NULL)
+        self_destruct();
+    if (sscanf(token, "%f", &i) != 1)
+        self_destruct();
+    return i;
+}
+
+
 static void
 update_maxobjsize(void)
 {
@@ -1816,6 +1833,7 @@
     int ignore_reload = 0;
 #endif
     int i;
+    float j;
     refresh_t *t;
     regex_t comp;
     int errcode;
@@ -1832,12 +1850,12 @@
     if (token == NULL)
        self_destruct();
     pattern = xstrdup(token);
-    i = GetInteger();          /* token: min */
-    min = (time_t) (i * 60);   /* convert minutes to seconds */
+      j = Getfloat();         /* token: min */
+    min = (int)(time_t) (j * 60);      /* convert minutes to seconds */
     i = GetInteger();          /* token: pct */
     pct = (double) i / 100.0;
-    i = GetInteger();          /* token: max */
-    max = (time_t) (i * 60);   /* convert minutes to seconds */
+     j = Getfloat();          /* token: max */
+    max = (int)(time_t) (j * 60);      /* convert minutes to seconds */
     /* Options */
     while ((token = strtok(NULL, w_space)) != NULL) {
 #if HTTP_VIOLATIONS
@@ -1875,6 +1893,7 @@
     t->min = min;
     t->pct = pct;
     t->max = max;
+       debug(22, 1) ("Refresh Values: min=%d max=%d\n",(int)min,(int)max);
     if (flags & REG_ICASE)
        t->flags.icase = 1;
 #if HTTP_VIOLATIONS
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


Review is needed.

Regards,
Muthukumar.

Reply via email to