X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=src%2Frrd_parsetime.c;h=1b59f454252a851a72f6cf0d2e3a4fe433393f73;hp=c1aef0b76e4852e29a3800d9d0233ce85c7eb584;hb=81645751d54a976a0bd49cf87c0b88bd9623599d;hpb=8d278938aef5adefa2915dd446abc028cc764550 diff --git a/src/rrd_parsetime.c b/src/rrd_parsetime.c index c1aef0b..1b59f45 100644 --- a/src/rrd_parsetime.c +++ b/src/rrd_parsetime.c @@ -114,14 +114,17 @@ /* Local headers */ -#include "rrd_tool.h" #include +#include +#include + +#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, @@ -154,6 +157,7 @@ static const struct SpecialToken VariousWords[] = { {"s", START}, {"end", END}, {"e", END}, + {"epoch", EPOCH}, {"jan", JAN}, {"feb", FEB}, @@ -483,7 +487,7 @@ static char *expect2( * 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; @@ -569,7 +573,7 @@ static char *plus_minus( * 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; @@ -646,7 +650,7 @@ static char *tod( * 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) @@ -679,7 +683,7 @@ static char *assign_date( * 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; @@ -833,7 +837,7 @@ static char *day( */ char *rrd_parsetime( const char *tspec, - rrd_time_value_t *ptv) + rrd_time_value_t * ptv) { time_t now = time(NULL); int hr = 0; @@ -856,6 +860,9 @@ char *rrd_parsetime( 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; @@ -990,8 +997,8 @@ char *rrd_parsetime( 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) {