oping: Make the exit status the number of hosts failed.
authorFlorian Forster <ff@octo.it>
Wed, 7 Sep 2011 01:08:32 +0000 (21:08 -0400)
committerFlorian Forster <ff@octo.it>
Wed, 7 Sep 2011 01:08:32 +0000 (21:08 -0400)
As far as I know, EXIT_FAILURE is only portable when used as-is, i.e. without
adding anything to it. Especially with "EXIT_FAILURE == -1" we might run into
trouble. I think it's more convenient to just use the number of failed hosts
rather than 1+<num> (on Linux).

src/mans/oping.pod
src/oping.c

index f0af718..8b8c644 100644 (file)
@@ -175,6 +175,9 @@ limit will effectively disable the feature (the default). Setting the option to
 zero means that the exit status will only be zero if I<all> replies for I<all>
 hosts have been received.
 
+The exit status will indicate the number of hosts with more than I<percent>
+packets lost, up to a number of 255 failing hosts.
+
 =back
 
 =head1 COLORS
index 37f5fa9..762a3ea 100644 (file)
@@ -972,8 +972,9 @@ static void update_host_hook (pingobj_iter_t *iter, /* {{{ */
 #endif
 } /* }}} void update_host_hook */
 
-/* Returns the number of hosts which failed to return more than the
-        fraction opt_exit_status_threshold of pings */
+/* Prints statistics for each host, cleans up the contexts and returns the
+ * number of hosts which failed to return more than the fraction
+ * opt_exit_status_threshold of pings. */
 static int post_loop_hook (pingobj_t *ping) /* {{{ */
 {
        pingobj_iter_t *iter;
@@ -1312,14 +1313,19 @@ int main (int argc, char **argv) /* {{{ */
                        opt_count--;
        } /* while (opt_count != 0) */
 
+       /* Returns the number of failed hosts according to -Z. */
        status = post_loop_hook (ping);
 
        ping_destroy (ping);
 
-       if (status)
-               return (EXIT_FAILURE + status);
+       if (status == 0)
+               exit (EXIT_SUCCESS);
        else
-               return (EXIT_SUCCESS);
+       {
+               if (status > 255)
+                       status = 255;
+               exit (status);
+       }
 } /* }}} int main */
 
 /* vim: set fdm=marker : */