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