From 9bf3ec8cd48c835e02ff96cd97d1581b2f9ba5b3 Mon Sep 17 00:00:00 2001 From: Martin Pärtel Date: Mon, 30 Jun 2014 22:50:14 +0100 Subject: Implemented rate limiter. Fixes #12. --- src/misc.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'src/misc.c') diff --git a/src/misc.c b/src/misc.c index 799f555..4442127 100644 --- a/src/misc.c +++ b/src/misc.c @@ -108,7 +108,7 @@ const char *my_dirname(char *path) } } -void grow_array_impl(void **array, int* capacity, int member_size) +void grow_array_impl(void **array, int *capacity, int member_size) { int new_cap = *capacity; if (new_cap == 0) { @@ -121,6 +121,28 @@ void grow_array_impl(void **array, int* capacity, int member_size) *capacity = new_cap; } +int parse_byte_count(const char *str, double *result) +{ + char* end; + double base = strtod(str, &end); + long mul = 1; + if (*end == '\0') { + mul = 1L; + } else if (strcmp(end, "k") == 0) { + mul = 1024L; + } else if (strcmp(end, "M") == 0) { + mul = 1024L * 1024L; + } else if (strcmp(end, "G") == 0) { + mul = 1024L * 1024L * 1024L; + } else if (strcmp(end, "T") == 0) { + mul = 1024L * 1024L * 1024L * 1024L; + } else { + return 0; + } + *result = base * mul; + return 1; +} + void init_arena(struct arena *a, int initial_capacity) { a->size = 0; -- cgit v1.2.3