diff --git a/src/rrd_parsetime.c b/src/rrd_parsetime.c
index c1aef0b76e4852e29a3800d9d0233ce85c7eb584..a5f1db8910bdc4755869de1cbcbf01c11fa34122 100644 (file)
--- a/src/rrd_parsetime.c
+++ b/src/rrd_parsetime.c
/* Local headers */
-#include "rrd_tool.h"
#include <stdarg.h>
+#include <stdlib.h>
+#include <ctype.h>
+
+#include "rrd_tool.h"
/* Structures and unions */
enum { /* symbols */
MIDNIGHT, NOON, TEATIME,
- PM, AM, YESTERDAY, TODAY, TOMORROW, NOW, START, END,
+ PM, AM, YESTERDAY, TODAY, TOMORROW, NOW, START, END, EPOCH,
SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,
MONTHS_MINUTES,
NUMBER, PLUS, MINUS, DOT, COLON, SLASH, ID, JUNK,
{"s", START},
{"end", END},
{"e", END},
+ {"epoch", EPOCH},
{"jan", JAN},
{"feb", FEB},
* It also applies those m-guessing heuristics.
*/
static char *plus_minus(
- rrd_time_value_t *ptv,
+ rrd_time_value_t * ptv,
int doop)
{
static int op = PLUS;
* tod() computes the time of day (TIME-OF-DAY-SPEC)
*/
static char *tod(
- rrd_time_value_t *ptv)
+ rrd_time_value_t * ptv)
{
int hour, minute = 0;
int tlen;
* assign_date() assigns a date, adjusting year as appropriate
*/
static char *assign_date(
- rrd_time_value_t *ptv,
+ rrd_time_value_t * ptv,
long mday,
long mon,
long year)
* day() picks apart DAY-SPEC-[12]
*/
static char *day(
- rrd_time_value_t *ptv)
+ rrd_time_value_t * ptv)
{
/* using time_t seems to help portability with 64bit oses */
time_t mday = 0, wday, mon, year = ptv->tm.tm_year;
- int tlen;
switch (sc_tokid) {
case YESTERDAY:
case NUMBER:
/* get numeric <sec since 1970>, MM/DD/[YY]YY, or DD.MM.[YY]YY
*/
- tlen = strlen(sc_token);
mon = atol(sc_token);
if (mon > 10 * 365 * 24 * 60 * 60) {
ptv->tm = *localtime(&mon);
*/
char *rrd_parsetime(
const char *tspec,
- rrd_time_value_t *ptv)
+ rrd_time_value_t * ptv)
{
time_t now = time(NULL);
int hr = 0;
case MINUS:
break; /* jump to OFFSET-SPEC part */
+ case EPOCH:
+ ptv->type = RELATIVE_TO_EPOCH;
+ goto KeepItRelative;
case START:
ptv->type = RELATIVE_TO_START_TIME;
goto KeepItRelative;
int rrd_proc_start_end(
- rrd_time_value_t *start_tv,
- rrd_time_value_t *end_tv,
+ rrd_time_value_t * start_tv,
+ rrd_time_value_t * end_tv,
time_t *start,
time_t *end)
{