X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcommon.c;h=9a2196b095db9f3c3172d594f191ddcc680e3fd1;hb=6b65db1f09a3f74b980c10675ca62deeb7b80816;hp=23714ea71eed2c89a7a8c4dcc22453812265ae88;hpb=366c100ebb89651eef6b71139bd92b2c27b63738;p=collection4.git diff --git a/src/common.c b/src/common.c index 23714ea..9a2196b 100644 --- a/src/common.c +++ b/src/common.c @@ -39,6 +39,7 @@ #include "common.h" #include "graph_list.h" +#include "utils_cgi.h" #include #include @@ -100,13 +101,13 @@ int ds_list_from_rrd_file (char *file, /* {{{ */ continue; keylen = strlen (ptr->key); - if (keylen < strlen ("ds[?].index")) + if (keylen < strlen ("ds[?].type")) continue; - dslen = keylen - strlen ("ds[].index"); + dslen = keylen - strlen ("ds[].type"); assert (dslen >= 1); - if (strcmp ("].index", ptr->key + (strlen ("ds[") + dslen)) != 0) + if (strcmp ("].type", ptr->key + (strlen ("ds[") + dslen)) != 0) continue; ds = malloc (dslen + 1); @@ -264,4 +265,78 @@ char *strtolower_copy (const char *str) /* {{{ */ return (strtolower (strdup (str))); } /* }}} char *strtolower_copy */ +int get_time_args (long *ret_begin, long *ret_end, /* {{{ */ + long *ret_now) +{ + const char *begin_str; + const char *end_str; + long now; + long begin; + long end; + char *endptr; + long tmp; + + if ((ret_begin == NULL) || (ret_end == NULL)) + return (EINVAL); + + begin_str = param ("begin"); + end_str = param ("end"); + + now = (long) time (NULL); + if (ret_now != NULL) + *ret_now = now; + *ret_begin = now - 86400; + *ret_end = now; + + if (begin_str != NULL) + { + endptr = NULL; + errno = 0; + tmp = strtol (begin_str, &endptr, /* base = */ 0); + if ((endptr == begin_str) || (errno != 0)) + return (-1); + if (tmp <= 0) + begin = now + tmp; + else + begin = tmp; + } + else /* if (begin_str == NULL) */ + { + begin = now - 86400; + } + + if (end_str != NULL) + { + endptr = NULL; + errno = 0; + tmp = strtol (end_str, &endptr, /* base = */ 0); + if ((endptr == end_str) || (errno != 0)) + return (-1); + end = tmp; + if (tmp <= 0) + end = now + tmp; + else + end = tmp; + } + else /* if (end_str == NULL) */ + { + end = now; + } + + if (begin == end) + return (-1); + + if (begin > end) + { + tmp = begin; + begin = end; + end = tmp; + } + + *ret_begin = begin; + *ret_end = end; + + return (0); +} /* }}} int get_time_args */ + /* vim: set sw=2 sts=2 et fdm=marker : */