X-Git-Url: https://git.octo.it/?p=collection4.git;a=blobdiff_plain;f=src%2Fcommon.c;h=2a5bf45262a565943c5d6ec26b4686afee0e86c7;hp=0df85ebbfd4adf5803ca5740a82efd215c16509d;hb=dada106cc5e266710e0238046245349e595201a3;hpb=b8b8d15d228be65ae62db08e4163d34e958e7766 diff --git a/src/common.c b/src/common.c index 0df85eb..2a5bf45 100644 --- a/src/common.c +++ b/src/common.c @@ -1,3 +1,26 @@ +/** + * collection4 - common.c + * Copyright (C) 2010 Florian octo Forster + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + * + * Authors: + * Florian octo Forster + **/ + #include #include #include @@ -16,6 +39,7 @@ #include "common.h" #include "graph_list.h" +#include "utils_cgi.h" #include #include @@ -159,7 +183,7 @@ static uint32_t rgb_to_uint32 (double *rgb) /* {{{ */ | ((uint32_t) b)); } /* }}} uint32_t rgb_to_uint32 */ -static int uint32_to_rgb (uint32_t color, double *rgb) +static int uint32_to_rgb (uint32_t color, double *rgb) /* {{{ */ { uint8_t r; uint8_t g; @@ -233,12 +257,86 @@ char *strtolower (char *str) /* {{{ */ return (str); } /* }}} char *strtolower */ -char *strtolower_copy (const char *str) +char *strtolower_copy (const char *str) /* {{{ */ { if (str == NULL) return (NULL); 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 : */