leapsecs(3) leapsecs(3) NNAAMMEE leapsecs - handle UTC leap seconds SSYYNNTTAAXX ##iinncclluuddee <> int lleeaappsseeccss__ssuubb(&_t); void lleeaappsseeccss__aadddd(&_t,_h_i_t); int lleeaappsseeccss__rreeaadd(); int lleeaappsseeccss__iinniitt(); struct tai _t; int _h_i_t; DDEESSCCRRIIPPTTIIOONN lleeaappsseeccss__ssuubb changes a seconds-since-epoch count into a non-leap-sec- onds-since-epoch count. It interprets _t as a TAI64 label, subtracts from _t the number of leap seconds that have occurred before or at _t, and places the result back into _t. lleeaappsseeccss__ssuubb returns 1 if _t was a leap second, 0 otherwise. lleeaappsseeccss__aadddd reverses the effect of lleeaappsseeccss__ssuubb. _h_i_t must be 1 for a leap second, 0 otherwise. LLEEAAPP--SSEECCOONNDD TTAABBLLEE The current implementation of lleeaappsseeccss__ssuubb and lleeaappsseeccss__aadddd uses a leap-second table read from disk. lleeaappsseeccss__rreeaadd reads the leap-second table from //uussrr//llooccaall//eettcc//lleeaappsseeccss..ddaatt. It returns 0 on success, -1 on error. If //uussrr//llooccaall//eettcc//lleeaappsseeccss..ddaatt does not exist, lleeaappsseeccss__rreeaadd treats it as an empty file. lleeaappsseeccss__iinniitt is a one-time version of lleeaappsseeccss__rreeaadd. Initially it is the same as lleeaappsseeccss__rreeaadd; however, once lleeaappsseeccss__rreeaadd returns 0, lleeaappsseeccss__iinniitt will always return 0 without calling lleeaappsseeccss__rreeaadd again. lleeaappsseeccss__aadddd and lleeaappsseeccss__ssuubb call lleeaappsseeccss__iinniitt. WWAARRNNIINNGG:: If lleeaappsseeccss__iinniitt returns failure, lleeaappsseeccss__aadddd and lleeaappsseeccss__ssuubb will pro- ceed without a leap-second table. For reliability, all programs should call lleeaappsseeccss__iinniitt at startup and check for errors. WWAARRNNIINNGG:: New entries are added to the leap-second table on disk every 12 to 18 months. lleeaappsseeccss__rreeaadd may be called repeatedly. It leaves the old table alone on error. For reliability, all long-running pro- grams should call lleeaappsseeccss__rreeaadd at least once every month. SSEEEE AALLSSOO tai(3) leapsecs(3)