]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/ntp/libntp/uglydate.c
This commit was generated by cvs2svn to compensate for changes in r55289,
[FreeBSD/FreeBSD.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 <stdio.h>
6
7 #include "ntp_fp.h"
8 #include "ntp_unixtime.h"
9 #include "lib_strbuf.h"
10 #include "ntp_stdlib.h"
11 #ifndef TM_IN_SYS_TIME
12 #include <time.h>
13 #endif
14
15 char *
16 uglydate(
17         l_fp *ts
18         )
19 {
20         char *bp;
21         char *timep;
22         struct tm *tm;
23         time_t sec;
24         long msec;
25         int year;
26
27         timep = ulfptoa(ts, 6);         /* returns max 17 characters */
28         LIB_GETBUF(bp);
29         sec = ts->l_ui - JAN_1970;
30         msec = ts->l_uf / 4294967;      /* fract / (2**32/1000) */
31         tm = gmtime(&sec);
32         if (ts->l_ui == 0) {
33                 /*
34                  * Probably not a real good thing to do.  Oh, well.
35                  */
36                 year = 0;
37                 tm->tm_yday = 0;
38                 tm->tm_hour = 0;
39                 tm->tm_min = 0;
40                 tm->tm_sec = 0;
41         } else {
42                 year = tm->tm_year;
43                 while (year >= 100)
44                     year -= 100;
45         }
46         (void) sprintf(bp, "%17s %02d:%03d:%02d:%02d:%02d.%03ld",
47                        timep, year, tm->tm_yday, tm->tm_hour, tm->tm_min,
48                        tm->tm_sec, msec);
49         return bp;
50 }