skalibs

Mirror/fork of https://skarnet.org/software/skalibs/
git clone https://ccx.te2000.cz/git/skalibs
Log | Files | Refs | README | LICENSE

tain_from_ntp.c (422B)


      1 /* ISC license. */
      2 
      3 #include <skalibs/uint64.h>
      4 #include <skalibs/tai.h>
      5 #include <skalibs/djbtime.h>
      6 
      7 int tain_from_ntp (tain *a, uint64_t u)
      8 {
      9   tai secs = { .x = u >> 32 } ;
     10   if (secs.x <= 0x7FFFFFFFUL) secs.x |= ((uint64_t)1 << 32) ;
     11   secs.x += TAI_MAGIC ;
     12   secs.x -= NTP_OFFSET ;
     13   if (!tai_from_utc(&secs, secs.x)) return 0 ;
     14   a->sec = secs ;
     15   a->nano = ((u & 0xFFFFFFFFUL) * 1000000000) >> 32 ;
     16   return 1 ;
     17 }