From cc190c1b5846bd221cec2e584759637ef7a27ffc Mon Sep 17 00:00:00 2001 From: Francois-Xavier Le Bail Date: Thu, 9 Aug 2018 13:25:23 +0200 Subject: [PATCH] Refactor printing the time fractional part ({micro|nano}seconds) Add the ts_frac_print() function. Avoid almost duplicate code. --- util-print.c | 65 +++++++++++++++++++++++----------------------------- 1 file changed, 29 insertions(+), 36 deletions(-) diff --git a/util-print.c b/util-print.c index 06844898..026f3461 100644 --- a/util-print.c +++ b/util-print.c @@ -231,6 +231,32 @@ nd_printzp(netdissect_options *ndo, return (n == 0) ? 0 : ret; } +/* + * Print the timestamp .FRAC part (Microseconds/nanoseconds) + */ +static void +ts_frac_print(netdissect_options *ndo, int usec) +{ +#ifdef HAVE_PCAP_SET_TSTAMP_PRECISION + switch (ndo->ndo_tstamp_precision) { + + case PCAP_TSTAMP_PRECISION_MICRO: + ND_PRINT(".%06u", (unsigned)usec); + break; + + case PCAP_TSTAMP_PRECISION_NANO: + ND_PRINT(".%09u", (unsigned)usec); + break; + + default: + ND_PRINT(".{unknown}"); + break; + } +#else + ND_PRINT(".%06u", (unsigned)usec); +#endif +} + /* * Print the timestamp as [YY:MM:DD] HH:MM:SS.FRAC. * if time_flag == LOCAL_TIME print local time else UTC/GMT time @@ -259,24 +285,7 @@ ts_date_hmsfrac_print(netdissect_options *ndo, int sec, int usec, strftime(timestr, sizeof(timestr), "%H:%M:%S", tm); ND_PRINT("%s", timestr); -#ifdef HAVE_PCAP_SET_TSTAMP_PRECISION - switch (ndo->ndo_tstamp_precision) { - - case PCAP_TSTAMP_PRECISION_MICRO: - ND_PRINT(".%06u", usec); - break; - - case PCAP_TSTAMP_PRECISION_NANO: - ND_PRINT(".%09u", usec); - break; - - default: - ND_PRINT(".{unknown}"); - break; - } -#else - ND_PRINT(".%06u", usec); -#endif + ts_frac_print(ndo, usec); } /* @@ -285,24 +294,8 @@ ts_date_hmsfrac_print(netdissect_options *ndo, int sec, int usec, static void ts_unix_print(netdissect_options *ndo, int sec, int usec) { -#ifdef HAVE_PCAP_SET_TSTAMP_PRECISION - switch (ndo->ndo_tstamp_precision) { - - case PCAP_TSTAMP_PRECISION_MICRO: - ND_PRINT("%u.%06u", (unsigned)sec, (unsigned)usec); - break; - - case PCAP_TSTAMP_PRECISION_NANO: - ND_PRINT("%u.%09u", (unsigned)sec, (unsigned)usec); - break; - - default: - ND_PRINT("%u.{unknown}", (unsigned)sec); - break; - } -#else - ND_PRINT("%u.%06u", (unsigned)sec, (unsigned)usec); -#endif + ND_PRINT("%u", (unsigned)sec); + ts_frac_print(ndo, usec); } /* -- 2.39.5