leapsecs_sub changes a seconds-since-epoch count
into a non-leap-seconds-since-epoch count.
t as a TAI64 label,
t the number of leap seconds that have occurred
before or at
t, and places the result back into
leapsecs_sub returns 1 if
t was a leap second,
leapsecs_add reverses the effect of
hit must be 1
for a leap second,
The current implementation of
leapsecs_add uses a leap-second table read from disk.
leapsecs_read reads the leap-second table from
/usr/local/etc/leapsecs.dat. It returns 0 on success, -1 on error.
/usr/local/etc/leapsecs.dat does not exist,
leapsecs_read treats it as an empty file.
leapsecs_init is a one-time version of
leapsecs_read. Initially it is the same as
leapsecs_read; however, once
leapsecs_read returns 0,
leapsecs_init will always return 0
leapsecs_init returns failure,
leapsecs_sub will proceed without a leap-second table.
all programs should call
leapsecs_init at startup and check for errors.
WARNING: New entries are added to the leap-second table on disk
every 12 to 18 months.
leapsecs_read may be called repeatedly.
It leaves the old table alone on error.
all long-running programs should call
leapsecs_read at least once every month.