This is interesting. The value is defined as a long:
Code:
long dated; /**< When the IBT what reported */
It should obviously be defined as time_t - it is treated as a time_t everywhere. But time_t is often a long, so it would work. But, in more modern versions of linux, the systems are getting ready for 2038, and thus expanding further; a long is no longer enough space to keep all seconds since Epoch.
In modern time.h, time_t is defined as something other than long, so it breaks. But often it is not, so it works.
Instead of using 0, or long here, we should be using time_t and time(NULL).
Code:
#include <time.h>
time_t t = time(NULL);
struct tm *local = localtime(&t);
In short; apparently this code (as well as all other code) should be rewritten to avoid using a long for time since epoch. But the change you are proposing will not work. ibt->dated is not a pointer to time_t. It is a long, and the code you are removing banks on this being the same as time_t. The referencing (&(ibt->dated)) works given that prerequisite holds.