uglydate.c revision 290000
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
14char *
15uglydate(
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}
52