Skip to content

Instantly share code, notes, and snippets.

@hnyman
Last active October 7, 2021 19:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hnyman/1ab0e26f85c2bdcfd028fba6a40936b5 to your computer and use it in GitHub Desktop.
Save hnyman/1ab0e26f85c2bdcfd028fba6a40936b5 to your computer and use it in GitHub Desktop.
rrdtool1 time_t as long
--- a/src/parsetime.c
+++ b/src/parsetime.c
@@ -641,7 +641,7 @@ assign_date(struct rrd_time_value *ptv,
} else if( year >= 0 && year < 38 ) {
year += 100; /* Allow year 2000-2037 to be specified as */
} /* 00-37 until the problem of 2038 year will */
- /* arise for unices with 32-bit time_t :) */
+ /* arise for unices with 32-bit TIME_INT :) */
if (year < 70) {
panic(e("won't handle dates before epoch (01/01/1970), sorry"));
}
@@ -715,7 +715,7 @@ day(struct rrd_time_value *ptv)
tlen = strlen(sc_token);
mon = atol(sc_token);
if (mon > 10*365*24*60*60) {
- montime = mon;
+ montime = (time_t) mon;
ptv->tm=*localtime(&montime);
token();
break;
@@ -914,8 +914,8 @@ parsetime(char *tspec, struct rrd_time_v
int proc_start_end (struct rrd_time_value *start_tv,
struct rrd_time_value *end_tv,
- time_t *start,
- time_t *end){
+ TIME_INT *start,
+ TIME_INT *end){
if (start_tv->type == RELATIVE_TO_END_TIME && /* same as the line above */
end_tv->type == RELATIVE_TO_START_TIME) {
rrd_set_error("the start and end times cannot be specified "
@@ -936,7 +936,7 @@ int proc_start_end (struct rrd_time_valu
if( start_tv->type == RELATIVE_TO_END_TIME) {
struct tm tmtmp;
*end = mktime(&(end_tv->tm)) + end_tv->offset;
- tmtmp = *localtime(end); /* reinit end including offset */
+ tmtmp = *localtime((time_t) end); /* reinit end including offset */
tmtmp.tm_mday += start_tv->tm.tm_mday;
tmtmp.tm_mon += start_tv->tm.tm_mon;
tmtmp.tm_year += start_tv->tm.tm_year;
@@ -947,7 +947,7 @@ int proc_start_end (struct rrd_time_valu
if (end_tv->type == RELATIVE_TO_START_TIME) {
struct tm tmtmp;
*start = mktime(&(start_tv->tm)) + start_tv->offset;
- tmtmp = *localtime(start);
+ tmtmp = *localtime((time_t) start);
tmtmp.tm_mday += end_tv->tm.tm_mday;
tmtmp.tm_mon += end_tv->tm.tm_mon;
tmtmp.tm_year += end_tv->tm.tm_year;
--- a/src/rrd_cgi.c
+++ b/src/rrd_cgi.c
@@ -65,7 +65,7 @@ char* scanargs(char *line, int *argc, ch
char* printstrftime(long, char**);
/** HTTP protocol needs special format, and GMT time **/
-char *http_time(time_t *);
+char *http_time(TIME_INT *);
/* return a pointer to newly allocated copy of this string */
char *stralloc(const char *);
@@ -349,7 +349,7 @@ int main(int argc, char *argv[]) {
strlen(buffer));
if (labs(goodfor) > 0) {
- time_t now;
+ TIME_INT now;
now = time(NULL);
printf("Last-Modified: %s\n", http_time(&now));
now += labs(goodfor);
@@ -490,7 +490,7 @@ char* printstrftime(long argc, char **ar
char *parsetime_error = NULL;
char formatted[MAX_STRFTIME_SIZE];
struct tm *the_tm;
- time_t start_tmp, end_tmp;
+ TIME_INT start_tmp, end_tmp;
/* Make sure that we were given the right number of args */
if( argc != 4) {
@@ -718,7 +718,7 @@ char* drawprint(long argc, char **args){
}
char* printtimelast(long argc, char **args) {
- time_t last;
+ TIME_INT last;
struct tm tm_last;
char *buf;
if ( argc == 2 ) {
@@ -744,7 +744,7 @@ char* printtimelast(long argc, char **ar
}
char* printtimenow(long argc, char **args) {
- time_t now = time(NULL);
+ TIME_INT now = (TIME_INT) time(NULL);
struct tm tm_now;
char *buf;
if ( argc == 1 ) {
@@ -1034,7 +1034,7 @@ parse(
}
char *
-http_time(time_t *now) {
+http_time(TIME_INT *now) {
struct tm *tmptime;
static char buf[60];
--- a/src/rrd_create.c
+++ b/src/rrd_create.c
@@ -12,12 +12,12 @@ rrd_create(int argc, char **argv)
{
rrd_t rrd;
long i,long_tmp;
- time_t last_up;
+ TIME_INT last_up;
struct rrd_time_value last_up_tv;
char *parsetime_error = NULL;
/* init last_up */
- last_up = time(NULL)-10;
+ last_up = (TIME_INT) time(NULL)-10;
/* init rrd clean */
rrd_init(&rrd);
/* static header */
@@ -74,7 +74,7 @@ rrd_create(int argc, char **argv)
return(-1);
}
- last_up = mktime(&last_up_tv.tm) + last_up_tv.offset;
+ last_up = (TIME_INT) mktime(&last_up_tv.tm) + last_up_tv.offset;
if (last_up < 3600*24*365*10){
rrd_set_error("the first entry to the RRD should be after 1980");
--- a/src/rrd_dump.c
+++ b/src/rrd_dump.c
@@ -115,10 +115,10 @@ rrd_dump(int argc, char **argv)
fseek(in_file,rra_start,SEEK_SET);
ii=0; /* wrap if max row cnt is reached */
}
- now = (rrd.live_head->last_up
+ now = (time_t) ((rrd.live_head->last_up
- rrd.live_head->last_up
% (rrd.rra_def[i].pdp_cnt*rrd.stat_head->pdp_step))
- + (timer*rrd.rra_def[i].pdp_cnt*rrd.stat_head->pdp_step);
+ + (timer*rrd.rra_def[i].pdp_cnt*rrd.stat_head->pdp_step));
timer++;
#if HAVE_STRFTIME
--- a/src/rrd_fetch.c
+++ b/src/rrd_fetch.c
@@ -16,8 +16,8 @@
int
rrd_fetch(int argc,
char **argv,
- time_t *start,
- time_t *end, /* which time frame do you want ?
+ TIME_INT *start,
+ TIME_INT *end, /* which time frame do you want ?
* will be changed to represent reality */
unsigned long *step, /* which stepsize do you want?
* will be changed to represent reality */
@@ -28,7 +28,7 @@ rrd_fetch(int argc,
long step_tmp =1;
- time_t start_tmp=0, end_tmp=0;
+ TIME_INT start_tmp=0, end_tmp=0;
enum cf_en cf_idx;
struct rrd_time_value start_tv, end_tv;
@@ -119,8 +119,8 @@ int
rrd_fetch_fn(
char *filename, /* name of the rrd */
enum cf_en cf_idx, /* which consolidation function ?*/
- time_t *start,
- time_t *end, /* which time frame do you want ?
+ TIME_INT *start,
+ TIME_INT *end, /* which time frame do you want ?
* will be changed to represent reality */
unsigned long *step, /* which stepsize do you want?
* will be changed to represent reality */
@@ -130,7 +130,7 @@ rrd_fetch_fn(
{
long i,ii;
FILE *in_file;
- time_t cal_start,cal_end, rra_start_time,rra_end_time;
+ TIME_INT cal_start,cal_end, rra_start_time,rra_end_time;
long best_full_rra=0, best_part_rra=0, chosen_rra=0, rra_pointer=0;
long best_step_diff=0, tmp_step_diff=0, tmp_match=0, best_match=0;
long full_match, rra_base;
--- a/src/rrd_first.c
+++ b/src/rrd_first.c
@@ -8,13 +8,13 @@
#include "rrd_tool.h"
-time_t
+TIME_INT
rrd_first(int argc, char **argv)
{
long rra_start,
timer;
unsigned long target_rraindex=0;
- time_t then;
+ TIME_INT then;
char *endptr;
FILE *in_file;
rrd_t rrd;
--- a/src/rrd_format.h
+++ b/src/rrd_format.h
@@ -200,7 +200,7 @@ typedef struct rra_def_t {
****************************************************************************/
typedef struct live_head_t {
- time_t last_up; /* when was rrd last updated */
+ TIME_INT last_up; /* when was rrd last updated */
} live_head_t;
--- a/src/rrd_graph.c
+++ b/src/rrd_graph.c
@@ -123,7 +123,7 @@ col_trip_t graph_col[] = { /* default co
* ((double)(x) - im->start)+0.5) */
/* initialize with xtr(im,0); */
int
-xtr(image_desc_t *im,time_t mytime){
+xtr(image_desc_t *im,TIME_INT mytime){
static double pixie;
if (mytime==0){
pixie = (double) im->xsize / (double)(im->end - im->start);
@@ -486,8 +486,8 @@ void
reduce_data(
enum cf_en cf, /* which consolidation function ?*/
unsigned long cur_step, /* step the data currently is in */
- time_t *start, /* start, end and step as requested ... */
- time_t *end, /* ... by the application will be ... */
+ TIME_INT *start, /* start, end and step as requested ... */
+ TIME_INT *end, /* ... by the application will be ... */
unsigned long *step, /* ... adjusted to represent reality */
unsigned long *ds_cnt, /* number of data sources in file */
rrd_value_t **data) /* two dimensional array containing the data */
@@ -853,18 +853,20 @@ str2rpn(image_desc_t *im,char *expr){
time was. Return it in seconds */
int
-tzoffset( time_t now ){
+tzoffset( TIME_INT now ){
int gm_sec, gm_min, gm_hour, gm_yday, gm_year,
l_sec, l_min, l_hour, l_yday, l_year;
struct tm *t;
int off;
- t = gmtime(&now);
+ time_t now_t;
+ now_t = (time_t) now;
+ t = gmtime(&now_t);
gm_sec = t->tm_sec;
gm_min = t->tm_min;
gm_hour = t->tm_hour;
gm_yday = t->tm_yday;
gm_year = t->tm_year;
- t = localtime(&now);
+ t = localtime(&now_t);
l_sec = t->tm_sec;
l_min = t->tm_min;
l_hour = t->tm_hour;
@@ -893,7 +895,7 @@ data_calc( image_desc_t *im){
int dataidx;
long *steparray;
int stepcnt;
- time_t now;
+ TIME_INT now;
double *stack = NULL;
long dc_stacksize = 0;
@@ -1433,14 +1435,16 @@ data_proc( image_desc_t *im ){
/* identify the point where the first gridline, label ... gets placed */
-time_t
+TIME_INT
find_first_time(
- time_t start, /* what is the initial time */
+ TIME_INT start_t, /* what is the initial time */
enum tmt_en baseint, /* what is the basic interval */
long basestep /* how many if these do we jump a time */
)
{
struct tm tm;
+ time_t start;
+ start = (time_t) start_t;
tm = *localtime(&start);
switch(baseint){
case TMT_SECOND:
@@ -1485,15 +1489,17 @@ find_first_time(
return mktime(&tm);
}
/* identify the point where the next gridline, label ... gets placed */
-time_t
+TIME_INT
find_next_time(
- time_t current, /* what is the initial time */
+ TIME_INT current_t, /* what is the initial time */
enum tmt_en baseint, /* what is the basic interval */
long basestep /* how many if these do we jump a time */
)
{
struct tm tm;
- time_t madetime;
+ time_t current;
+ current = (time_t) current_t;
+ TIME_INT madetime;
tm = *localtime(&current);
do {
switch(baseint){
@@ -2143,7 +2149,8 @@ vertical_grid(
image_desc_t *im )
{
int xlab_sel; /* which sort of label and grid ? */
- time_t ti, tilab;
+ TIME_INT ti, tilab;
+ time_t tilab_t;
long factor;
char graph_label[100];
gdPoint polyPoints[4]; /* points for filled graph and more*/
@@ -2231,9 +2238,10 @@ vertical_grid(
){
int gr_pos,width;
tilab= ti + im->xlab_user.precis/2; /* correct time for the label */
+ tilab_t = (time_t) tilab;
#if HAVE_STRFTIME
- strftime(graph_label,99,im->xlab_user.stst,localtime(&tilab));
+ strftime(graph_label,99,im->xlab_user.stst,localtime(&tilab_t));
#else
# error "your libc has no strftime I guess we'll abort the exercise here."
#endif
@@ -2487,7 +2495,7 @@ int lazy_check(image_desc_t *im){
return 0; /* can't stat */
/* one pixel in the existing graph is more then what we would
change here ... */
- if (time(NULL) - gifstat.st_mtime >
+ if ((TIME_INT) time(NULL) - gifstat.st_mtime >
(im->end - im->start) / im->xsize)
return 0;
if ((fd = fopen(im->graphfile,"rb")) == NULL)
@@ -2881,7 +2889,7 @@ rrd_graph(int argc, char **argv, char **
image_desc_t im;
int i;
long long_tmp;
- time_t start_tmp=0,end_tmp=0;
+ TIME_INT start_tmp=0,end_tmp=0;
char scan_gtm[12],scan_mtm[12],scan_ltm[12],col_nam[12];
char symname[100];
unsigned int col_red,col_green,col_blue;
--- a/src/rrd_graph.h
+++ b/src/rrd_graph.h
@@ -90,11 +90,11 @@ typedef struct graph_desc_t {
char legend[FMT_LEG_LEN+5]; /* legend*/
gdPoint legloc; /* location of legend */
double yrule; /* value for y rule line */
- time_t xrule; /* value for x rule line */
+ TIME_INT xrule; /* value for x rule line */
rpnp_t *rpnp; /* instructions for CDEF function */
/* description of data fetched for the graph element */
- time_t start,end; /* timestaps for first and last data element */
+ TIME_INT start,end; /* timestaps for first and last data element */
unsigned long step; /* time between samples */
unsigned long ds_cnt; /* how many data sources are there in the fetch */
long data_first; /* first pointer to this data */
@@ -121,7 +121,7 @@ typedef struct image_desc_t {
double ygridstep; /* user defined step for y grid */
int ylabfact; /* every how many y grid shall a label be written ? */
- time_t start,end; /* what time does the graph cover */
+ TIME_INT start,end; /* what time does the graph cover */
unsigned long step; /* any preference for the default step ? */
rrd_value_t minval,maxval; /* extreme values in the data */
int rigid; /* do not expand range even with
@@ -160,7 +160,7 @@ typedef struct image_desc_t {
} image_desc_t;
/* Prototypes */
-int xtr(image_desc_t *,time_t);
+int xtr(image_desc_t *,TIME_INT);
int ytr(image_desc_t *, double);
enum gf_en gf_conv(char *);
enum if_en if_conv(char *);
@@ -170,16 +170,16 @@ int im_free(image_desc_t *);
void auto_scale( image_desc_t *, double *, char **, double *);
void si_unit( image_desc_t *);
void expand_range(image_desc_t *);
-void reduce_data( enum cf_en, unsigned long, time_t *, time_t *, unsigned long *, unsigned long *, rrd_value_t **);
+void reduce_data( enum cf_en, unsigned long, TIME_INT *, TIME_INT *, unsigned long *, unsigned long *, rrd_value_t **);
int data_fetch( image_desc_t *);
long find_var(image_desc_t *, char *);
long lcd(long *);
int data_calc( image_desc_t *);
int data_proc( image_desc_t *);
-time_t find_first_time( time_t, enum tmt_en, long);
-time_t find_next_time( time_t, enum tmt_en, long);
+TIME_INT find_first_time( TIME_INT, enum tmt_en, long);
+TIME_INT find_next_time( TIME_INT, enum tmt_en, long);
void gator( gdImagePtr, int, int);
-int tzoffset(time_t);
+int tzoffset(TIME_INT);
int print_calc(image_desc_t *, char ***);
int leg_place(image_desc_t *);
int horizontal_grid(gdImagePtr, image_desc_t *);
--- a/src/rrd.h
+++ b/src/rrd.h
@@ -17,6 +17,9 @@ extern "C" {
#define _RRDLIB_H
#include <time.h>
+#include <stdint.h>
+
+#define TIME_INT long
/* Transplanted from rrd_format.h */
typedef double rrd_value_t; /* the data storage type is
@@ -27,15 +30,15 @@ typedef double rrd_value_t;
int rrd_create(int, char **);
int rrd_update(int, char **);
int rrd_graph(int, char **, char ***, int *, int *);
-int rrd_fetch(int, char **, time_t *, time_t *, unsigned long *,
+int rrd_fetch(int, char **, TIME_INT *, TIME_INT *, unsigned long *,
unsigned long *, char ***, rrd_value_t **);
int rrd_restore(int, char **);
int rrd_dump(int, char **);
int rrd_tune(int, char **);
-time_t rrd_last(int, char **);
-time_t rrd_first(int, char **);
+TIME_INT rrd_last(int, char **);
+TIME_INT rrd_first(int, char **);
int rrd_resize(int, char **);
-int rrd_xport(int, char **, int *, time_t *, time_t *,
+int rrd_xport(int, char **, int *, TIME_INT *, TIME_INT *,
unsigned long *, unsigned long *,
char ***, rrd_value_t **);
@@ -57,7 +60,7 @@ struct rrd_time_value {
char *parsetime(char *spec, struct rrd_time_value *ptv);
/* END parsetime.h */
-int proc_start_end (struct rrd_time_value *, struct rrd_time_value *, time_t *, time_t *);
+int proc_start_end (struct rrd_time_value *, struct rrd_time_value *, TIME_INT *, TIME_INT *);
/* HELPER FUNCTIONS */
void rrd_set_error(char *,...);
--- a/src/rrd_last.c
+++ b/src/rrd_last.c
@@ -8,11 +8,11 @@
#include "rrd_tool.h"
-time_t
+TIME_INT
rrd_last(int argc, char **argv)
{
FILE *in_file;
- time_t lastup;
+ TIME_INT lastup;
rrd_t rrd;
--- a/src/rrd_tool.c
+++ b/src/rrd_tool.c
@@ -343,7 +343,7 @@ int HandleInputLine(int argc, char **arg
else if (strcmp("update", argv[1]) == 0)
rrd_update(argc-1, &argv[1]);
else if (strcmp("fetch", argv[1]) == 0) {
- time_t start,end;
+ TIME_INT start,end;
unsigned long step, ds_cnt,i,ii;
rrd_value_t *data,*datai;
char **ds_namv;
@@ -367,7 +367,7 @@ int HandleInputLine(int argc, char **arg
} else if (strcmp("xport", argv[1]) == 0) {
int xxsize;
int j;
- time_t i,start,end;
+ TIME_INT i,start,end;
unsigned long step, col_cnt,row_cnt;
rrd_value_t *data,*ptr;
char **legend_v;
--- a/src/rrd_tool.h
+++ b/src/rrd_tool.h
@@ -134,7 +134,7 @@ void gdImagePng(gdImagePtr im, FILE *out
int rrd_create_fn(char *file_name, rrd_t *rrd);
int rrd_fetch_fn(char *filename, enum cf_en cf_idx,
- time_t *start,time_t *end,
+ TIME_INT *start,TIME_INT *end,
unsigned long *step,
unsigned long *ds_cnt,
char ***ds_namv,
--- a/src/rrd_update.c
+++ b/src/rrd_update.c
@@ -91,7 +91,7 @@ rrd_update(int argc, char **argv)
FILE *rrd_file;
rrd_t rrd;
- time_t current_time = time(NULL);
+ TIME_INT current_time = (TIME_INT) time(NULL);
char **updvals;
int wrote_to_file = 0;
char *template = NULL;
@@ -273,7 +273,7 @@ rrd_update(int argc, char **argv)
/* get the time from the reading ... handle N */
if (strcmp(updvals[0],"N")==0){
- current_time = time(NULL);
+ current_time = (TIME_INT) time(NULL);
} else {
errno = 0;
current_time = strtol(updvals[0],&endptr,10);
--- a/src/rrd_xport.c
+++ b/src/rrd_xport.c
@@ -15,12 +15,12 @@
int rrd_xport(int, char **, int *,
- time_t *, time_t *,
+ TIME_INT *, TIME_INT *,
unsigned long *, unsigned long *,
char ***, rrd_value_t **);
int rrd_xport_fn(image_desc_t *,
- time_t *, time_t *,
+ TIME_INT *, TIME_INT *,
unsigned long *, unsigned long *,
char ***, rrd_value_t **);
@@ -29,8 +29,8 @@ int rrd_xport_fn(image_desc_t *,
/* mostly rrd_graph(), just pushed a bit here and stretched a bit there */
int
rrd_xport(int argc, char **argv, int *xsize,
- time_t *start,
- time_t *end, /* which time frame do you want ?
+ TIME_INT *start,
+ TIME_INT *end, /* which time frame do you want ?
* will be changed to represent reality */
unsigned long *step, /* which stepsize do you want?
* will be changed to represent reality */
@@ -42,7 +42,7 @@ rrd_xport(int argc, char **argv, int *xs
image_desc_t im;
int i;
long long_tmp;
- time_t start_tmp=0,end_tmp=0;
+ TIME_INT start_tmp=0,end_tmp=0;
char symname[100];
long scancount;
struct rrd_time_value start_tv, end_tv;
@@ -286,8 +286,8 @@ rrd_xport(int argc, char **argv, int *xs
int
rrd_xport_fn(image_desc_t *im,
- time_t *start,
- time_t *end, /* which time frame do you want ?
+ TIME_INT *start,
+ TIME_INT *end, /* which time frame do you want ?
* will be changed to represent reality */
unsigned long *step, /* which stepsize do you want?
* will be changed to represent reality */
@@ -307,9 +307,9 @@ rrd_xport_fn(image_desc_t *im,
char **legend_list;
int ii = 0;
- time_t start_tmp = 0;
- time_t end_tmp = 0;
- time_t curr_ts;
+ TIME_INT start_tmp = 0;
+ TIME_INT end_tmp = 0;
+ TIME_INT curr_ts;
unsigned long step_tmp = 1;
int dataIndex;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment