1c0b746e5SOllivier Robert /* 2c0b746e5SOllivier Robert * buftvtots - pull a Unix-format (struct timeval) time stamp out of 3c0b746e5SOllivier Robert * an octet stream and convert it to a l_fp time stamp. 4c0b746e5SOllivier Robert * This is useful when using the clock line discipline. 5c0b746e5SOllivier Robert */ 6c0b746e5SOllivier Robert 7c0b746e5SOllivier Robert #ifdef HAVE_CONFIG_H 8c0b746e5SOllivier Robert #include "config.h" 9c0b746e5SOllivier Robert #endif 10c0b746e5SOllivier Robert #include "ntp_fp.h" 11ea906c41SOllivier Robert #include "ntp_string.h" 12*2b15cb3dSCy Schubert #include "timevalops.h" 13c0b746e5SOllivier Robert 14*2b15cb3dSCy Schubert #ifndef SYS_WINNT 15c0b746e5SOllivier Robert int buftvtots(const char * bufp,l_fp * ts)16c0b746e5SOllivier Robertbuftvtots( 17c0b746e5SOllivier Robert const char *bufp, 18c0b746e5SOllivier Robert l_fp *ts 19c0b746e5SOllivier Robert ) 20c0b746e5SOllivier Robert { 21224ba2bdSOllivier Robert struct timeval tv; 22c0b746e5SOllivier Robert 23ea906c41SOllivier Robert /* 24ea906c41SOllivier Robert * copy to adhere to alignment restrictions 25ea906c41SOllivier Robert */ 26ea906c41SOllivier Robert memcpy(&tv, bufp, sizeof(tv)); 27c0b746e5SOllivier Robert 28ea906c41SOllivier Robert /* 29ea906c41SOllivier Robert * and use it 30ea906c41SOllivier Robert */ 31*2b15cb3dSCy Schubert if (tv.tv_usec > MICROSECONDS - 1) 32*2b15cb3dSCy Schubert return FALSE; 33*2b15cb3dSCy Schubert 34*2b15cb3dSCy Schubert *ts = tval_stamp_to_lfp(tv); 35*2b15cb3dSCy Schubert 36*2b15cb3dSCy Schubert return TRUE; 37c0b746e5SOllivier Robert } 38*2b15cb3dSCy Schubert #endif /* !SYS_WINNT */ 39