--- embedaddon/bird/sysdep/unix/timer.h 2017/08/22 12:33:54 1.1 +++ embedaddon/bird/sysdep/unix/timer.h 2021/03/17 19:50:23 1.1.1.2 @@ -19,14 +19,14 @@ typedef struct timer { resource r; void (*hook)(struct timer *); void *data; - unsigned randomize; /* Amount of randomization */ - unsigned recurrent; /* Timer recurrence */ + uint randomize; /* Amount of randomization */ + uint recurrent; /* Timer recurrence */ node n; /* Internal link */ bird_clock_t expires; /* 0=inactive */ } timer; timer *tm_new(pool *); -void tm_start(timer *, unsigned after); +void tm_start(timer *, uint after); void tm_stop(timer *); void tm_dump_all(void); @@ -47,14 +47,14 @@ tm_remains(timer *t) } static inline void -tm_start_max(timer *t, unsigned after) +tm_start_max(timer *t, bird_clock_t after) { bird_clock_t rem = tm_remains(t); tm_start(t, (rem > after) ? rem : after); } static inline timer * -tm_new_set(pool *p, void (*hook)(struct timer *), void *data, unsigned rand, unsigned rec) +tm_new_set(pool *p, void (*hook)(struct timer *), void *data, uint rand, uint rec) { timer *t = tm_new(p); t->hook = hook; @@ -74,17 +74,16 @@ bird_clock_t tm_parse_date(char *); /* Convert date to bird_clock_t tm_parse_datetime(char *); /* Convert date to bird_clock_t */ #define TM_DATETIME_BUFFER_SIZE 32 /* Buffer size required by tm_format_datetime */ -void -tm_format_datetime(char *x, struct timeformat *fmt_spec, bird_clock_t t); -#ifdef TIME_T_IS_64BIT -#define TIME_INFINITY 0x7fffffffffffffff -#else -#ifdef TIME_T_IS_SIGNED -#define TIME_INFINITY 0x7fffffff -#else -#define TIME_INFINITY 0xffffffff -#endif -#endif +void tm_format_datetime(char *x, struct timeformat *fmt_spec, bird_clock_t t); +int tm_format_real_time(char *x, size_t max, const char *fmt, bird_clock_t t); + +#define TIME_T_IS_64BIT (sizeof(time_t) == 8) +#define TIME_T_IS_SIGNED ((time_t) -1 < 0) + +#define TIME_INFINITY \ + ((time_t) (TIME_T_IS_SIGNED ? \ + (TIME_T_IS_64BIT ? 0x7fffffffffffffff : 0x7fffffff): \ + (TIME_T_IS_64BIT ? 0xffffffffffffffff : 0xffffffff))) #endif