]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/ntp/libntp/uglydate.c
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / ntp / libntp / uglydate.c
1 /*
2  * uglydate - convert a time stamp to something barely readable
3  *            The string returned is 37 characters long.
4  */
5 #include <config.h>
6 #include <stdio.h>
7
8 #include "ntp_fp.h"
9 #include "ntp_unixtime.h"
10 #include "lib_strbuf.h"
11 #include "ntp_stdlib.h"
12
13
14 char *
15 uglydate(
16         l_fp *ts
17         )
18 {
19         char *bp;
20         char *timep;
21         struct tm *tm;
22         time_t sec;
23         long msec;
24         int year;
25
26         timep = ulfptoa(ts, 6);         /* returns max 17 characters */
27         LIB_GETBUF(bp);
28         sec = ts->l_ui - JAN_1970;
29         msec = ts->l_uf / 4294967;      /* fract / (2**32/1000) */
30         tm = gmtime(&sec);
31         if (ts->l_ui == 0) {
32                 /*
33                  * Probably not a real good thing to do.  Oh, well.
34                  */
35                 year = 0;
36                 tm->tm_yday = 0;
37                 tm->tm_hour = 0;
38                 tm->tm_min = 0;
39                 tm->tm_sec = 0;
40         } else {
41                 year = tm->tm_year;
42                 while (year >= 100)
43                     year -= 100;
44         }
45         snprintf(bp, LIB_BUFLENGTH,
46                  "%17s %02d:%03d:%02d:%02d:%02d.%03ld", timep, year,
47                  tm->tm_yday, tm->tm_hour, tm->tm_min, tm->tm_sec,
48                  msec);
49
50         return bp;
51 }