/* 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;
*/
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)
{