r2333 - in trunk/varnish-cache: bin/varnishd include lib/libvarnish

phk at projects.linpro.no phk at projects.linpro.no
Tue Jan 8 11:35:29 CET 2008


Author: phk
Date: 2008-01-08 11:35:29 +0100 (Tue, 08 Jan 2008)
New Revision: 2333

Modified:
   trunk/varnish-cache/bin/varnishd/varnishd.c
   trunk/varnish-cache/include/libvarnish.h
   trunk/varnish-cache/lib/libvarnish/num.c
Log:
Extend the str2bytes() function to also cope with percentages of a
size given as parameter.


Modified: trunk/varnish-cache/bin/varnishd/varnishd.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/varnishd.c	2008-01-08 09:56:50 UTC (rev 2332)
+++ trunk/varnish-cache/bin/varnishd/varnishd.c	2008-01-08 10:35:29 UTC (rev 2333)
@@ -466,7 +466,7 @@
 		usage();
 	}
 
-	q = str2bytes(l_arg, &l_size);
+	q = str2bytes(l_arg, &l_size, 0);
 	if (q != NULL) {
 		fprintf(stderr, "Parameter error:\n");
 		fprintf(stderr, "\t-l ...:  %s\n", q);

Modified: trunk/varnish-cache/include/libvarnish.h
===================================================================
--- trunk/varnish-cache/include/libvarnish.h	2008-01-08 09:56:50 UTC (rev 2332)
+++ trunk/varnish-cache/include/libvarnish.h	2008-01-08 10:35:29 UTC (rev 2333)
@@ -46,7 +46,7 @@
 uint32_t crc32_l(const void *p1, unsigned l);
 
 /* from libvarnish/num.c */
-const char *str2bytes(const char *p, uintmax_t *r);
+const char *str2bytes(const char *p, uintmax_t *r, uintmax_t rel);
 
 /* from libvarnish/time.c */
 void TIM_format(double t, char *p);

Modified: trunk/varnish-cache/lib/libvarnish/num.c
===================================================================
--- trunk/varnish-cache/lib/libvarnish/num.c	2008-01-08 09:56:50 UTC (rev 2332)
+++ trunk/varnish-cache/lib/libvarnish/num.c	2008-01-08 10:35:29 UTC (rev 2333)
@@ -37,7 +37,7 @@
 #include <libvarnish.h>
 
 const char *
-str2bytes(const char *p, uintmax_t *r)
+str2bytes(const char *p, uintmax_t *r, uintmax_t rel)
 {
 	int i;
 	double l;
@@ -62,6 +62,13 @@
 		case 't': l *= ((uintmax_t)1 << 40); break;
 		case 'p': l *= ((uintmax_t)1 << 50); break;
 		case 'e': l *= ((uintmax_t)1 << 60); break;
+		case '%':
+			/* Percentage of 'rel' arg */
+			if (rel != 0) {
+				l *= 1e-2 * rel;
+				break;
+			}
+			/*FALLTHROUGH*/
 		default:
 			return ("Unknown scaling suffix [bkmgtpe] allowed");
 		}




More information about the varnish-commit mailing list