From a3288d42848c9ee56639293a27e70e996f42abe7 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Wed, 13 Jan 2010 14:00:12 +0100 Subject: [PATCH] Print only printable characters from refid --- util.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/util.c b/util.c index c55f305..45a6821 100644 --- a/util.c +++ b/util.c @@ -244,14 +244,19 @@ UTI_TimestampToString(NTP_int64 *ts) char * UTI_RefidToString(unsigned long ref_id) { - unsigned int a, b, c, d; - char *result; - a = (ref_id>>24) & 0xff; - b = (ref_id>>16) & 0xff; - c = (ref_id>> 8) & 0xff; - d = (ref_id>> 0) & 0xff; + unsigned int i, j, c; + char buf[5], *result; + + for (i = j = 0; i < 4; i++) { + c = (ref_id >> (24 - i * 8)) & 0xff; + if (isprint(c)) + buf[j++] = c; + } + + buf[j] = '\0'; + result = NEXT_BUFFER; - snprintf(result, BUFFER_LENGTH, "%c%c%c%c", a, b, c, d); + snprintf(result, BUFFER_LENGTH, "%s", buf); return result; }