<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr">On Wed, Jan 23, 2019, 3:07 PM Huw Davies <<a href="mailto:huw@codeweavers.com">huw@codeweavers.com</a> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Wed, Jan 23, 2019 at 02:34:49PM +0530, Isira Seneviratne wrote:<br>
> <br>
<br>
> From 45a793368c781ea5b882938acf030f52b0242c7e Mon Sep 17 00:00:00 2001<br>
> From: Isira-Seneviratne <<a href="mailto:isirasen96@gmail.com" target="_blank" rel="noreferrer">isirasen96@gmail.com</a>><br>
> Date: Sat, 5 Jan 2019 10:46:15 +0530<br>
> Subject: [PATCH v2] ping: Add Ctrl+C event handling<br>
> <br>
> Signed-off-by: Isira-Seneviratne <<a href="mailto:isirasen96@gmail.com" target="_blank" rel="noreferrer">isirasen96@gmail.com</a>><br>
> ---<br>
>  programs/ping/ping_main.c | 66 ++++++++++++++++++++++++++++++++-------<br>
>  1 file changed, 54 insertions(+), 12 deletions(-)<br>
> <br>
> diff --git a/programs/ping/ping_main.c b/programs/ping/ping_main.c<br>
> index 9c4f23959e..fddb1738e2 100644<br>
> --- a/programs/ping/ping_main.c<br>
> +++ b/programs/ping/ping_main.c<br>
> @@ -2,7 +2,7 @@<br>
>   * ping program<br>
>   *<br>
>   * Copyright (C) 2010 Trey Hunner<br>
> - * Copyright (C) 2018 Isira Seneviratne<br>
> + * Copyright (C) 2018-2019 Isira Seneviratne<br>
>   *<br>
>   * This library is free software; you can redistribute it and/or<br>
>   * modify it under the terms of the GNU Lesser General Public<br>
> @@ -39,8 +39,42 @@<br>
>  #include "wine/debug.h"<br>
>  #include "wine/heap.h"<br>
>  <br>
> +static unsigned int n, i, w, l;<br>
> +static int rec, lost, min, max;<br>
> +static float avg;<br>
> +static char ip[25];<br>
> +<br>
>  WINE_DEFAULT_DEBUG_CHANNEL(ping);<br>
>  <br>
> +static void display_ping_stats()<br>
> +{<br>
> +    if (rec != 0)<br>
> +    {<br>
> +        avg /= rec;<br>
> +        printf("Approximate round trip times in milli-seconds:\n");<br>
> +        printf("\tMinimum = %dms, Maximum = %dms, Average = %.0fms\n",<br>
> +               min, max, avg);<br>
> +    }<br>
> +}<br>
> +<br>
> +/* Displays ping statistics when the interrupt signal is sent to the program */<br>
> +BOOL WINAPI ping_interrupted(DWORD dwCtrlType)<br>
> +{<br>
> +    switch (dwCtrlType)<br>
> +    {<br>
> +        case CTRL_C_EVENT:<br>
> +            printf("\nPing statistics for %s\n", ip);<br>
> +            printf("\tPackets: Sent = %d, Received = %d, Lost = %d (%.0f%% loss)\n",<br>
> +                i, rec, lost, (float) lost / i * 100);<br>
> +<br>
> +            display_ping_stats();<br>
> +<br>
> +            exit(0);<br>
> +        default:<br>
> +            return FALSE;<br>
> +    }<br>
> +}<br>
> +<br>
<br>
<br>
That moved two out of the four printf()s, so we're halfway there...<br>
I realise there's a difference wrt 'i' vs 'n', but using 'i' in both<br>
cases should work fine.<br></blockquote></div></div><div dir="auto">Wrt?</div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Btw, you don't need to move 'n', 'w' or 'l' to globals; they can stay<br>
local to main().  Also, let's rename the global 'i' to something like<br>
'sent'.<br></blockquote></div></div><div dir="auto">Sure.</div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Huw.<br>
</blockquote></div></div></div>