oping: Exit if no hosts could be added.
authorFlorian Forster <octo@verplant.org>
Fri, 2 Jun 2006 17:29:15 +0000 (19:29 +0200)
committerFlorian Forster <octo@verplant.org>
Fri, 2 Jun 2006 17:29:15 +0000 (19:29 +0200)
If no hosts could be added (e.g. because resolving the hostnames failed) the
oping application didn't exit but seemed to hang. Actually it was calling
`poll' (or select?) without any file descriptors, and not outputting anything
at all.
This patch makes oping exit if no hosts could be added to the oping library.

src/oping.c

index 18724f4..50c051b 100644 (file)
@@ -296,13 +296,14 @@ int main (int argc, char **argv)
 
        for (i = optind; i < argc; i++)
        {
-               if (ping_host_add (ping, argv[i]) > 0)
+               if (ping_host_add (ping, argv[i]) < 0)
                {
                        fprintf (stderr, "ping_host_add (%s) failed\n", argv[i]);
                        continue;
                }
        }
 
+       i = 0;
        for (iter = ping_iterator_get (ping);
                        iter != NULL;
                        iter = ping_iterator_next (iter))
@@ -325,6 +326,14 @@ int main (int argc, char **argv)
                                context->host, context->addr, (unsigned int) buffer_size);
 
                ping_iterator_set_context (iter, (void *) context);
+
+               i++;
+       }
+
+       if (i == 0)
+       {
+               fprintf (stderr, "No valid hosts left.\n");
+               exit (1);
        }
 
        memset (&sigint_action, '\0', sizeof (sigint_action));