On 2015-09-02 at 01:31:16 +0200, Vadim Kochan <vadi...@gmail.com> wrote:
> From: Vadim Kochan <vadi...@gmail.com>
> 
> Show human readable time since flow was created by Linux
> 
> Signed-off-by: Vadim Kochan <vadi...@gmail.com>
> ---
>  flowtop.c | 38 ++++++++++++++++++++++++++++++++++++++
>  1 file changed, 38 insertions(+)
> 
> diff --git a/flowtop.c b/flowtop.c
> index d988590..d073715 100644
> --- a/flowtop.c
> +++ b/flowtop.c
> @@ -41,6 +41,10 @@
>  #include "proc.h"
>  #include "sysctl.h"
>  
> +#ifndef NSEC_PER_SEC
> +#define NSEC_PER_SEC 1000000000L
> +#endif
> +
>  struct flow_entry {
>       uint32_t flow_id, use, status;
>       uint8_t  l3_proto, l4_proto;
> @@ -750,6 +754,37 @@ static void presenter_print_counters(uint64_t bytes, 
> uint64_t pkts, int color)
>       printw(")");
>  }
>  
> +static void presenter_print_flow_entry_time(struct flow_entry *n)
> +{
> +     int secs = n->timestamp_start / NSEC_PER_SEC;
> +     int mns_sub, sec_sub;
> +     int mns, hrs;
> +     time_t now;
> +
> +     time(&now);
> +     sec_sub = secs = now - secs;
> +
> +     if (secs <= 0)
> +             return;
> +
> +     mns_sub = mns = secs / 60;
> +     hrs = secs / 3600;
> +
> +     if (secs > 60)
> +             sec_sub = secs - mns * 60;
> +     if (mns > 60)
> +             mns_sub = mns - hrs * 60;
> +
> +     printw(" [ time");
> +     if (hrs > 0)
> +             printw(" %dh", hrs);
> +     if (mns_sub > 0)
> +             printw(" %dm", mns_sub);
> +     if (sec_sub > 0)
> +             printw(" %ds", sec_sub);
> +     printw(" ]");
> +}

This could be done a bit easier, using less variables and more straight
forward to read:

static void presenter_print_flow_entry_time(struct flow_entry *n)
{
        int h, m, s;
        time_t now;

        time(&now);

        s = now - (n->timestamp_start / NSEC_PER_SEC);
        if (s <= 0)
                return;

        h = s / 3600;
        s -= h * 3600;
        m = s / 60;
        s -= m * 60;

        printw(" [ time");
        if (h > 0)
                printw(" %dh", h);
        if (m > 0)
                printw(" %dm", m);
        if (s > 0)
                printw(" %ds", s);
        printw(" ]");
}

I applied the patch with this version instead.

-- 
You received this message because you are subscribed to the Google Groups 
"netsniff-ng" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to netsniff-ng+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to