From: Florian Forster Date: Thu, 25 Sep 2014 00:10:54 +0000 (-0700) Subject: Merge branch 'bp/exit' X-Git-Tag: liboping-1.7.0~4 X-Git-Url: https://git.octo.it/?p=liboping.git;a=commitdiff_plain;h=8557f59b71eb64324dcbb0e470bad9ca5958b2f0 Merge branch 'bp/exit' Conflicts: src/mans/oping.pod src/oping.c --- 8557f59b71eb64324dcbb0e470bad9ca5958b2f0 diff --cc src/mans/oping.pod index aedb728,8b8c644..b6ce0b2 --- a/src/mans/oping.pod +++ b/src/mans/oping.pod @@@ -166,11 -166,18 +166,23 @@@ I (EC I (ToS) aliases were used to specify the bits of outgoing packets. +=item B<-u>|B<-U> + +I B<-u> forces UTF-8 output, B<-U> disables UTF-8 output. If +neither is given, the codeset is automatically determined from the locale. + + =item B<-Z> I + + If any hosts have a drop rate higher than I, where I is a + number between zero and 100 inclusively, exit with a non-zero exit status. + Since it is not possible to have a higher drop rate than 100%, passing this + limit will effectively disable the feature (the default). Setting the option to + zero means that the exit status will only be zero if I replies for I + hosts have been received. + + The exit status will indicate the number of hosts with more than I + packets lost, up to a number of 255 failing hosts. + =back =head1 COLORS diff --cc src/oping.c index b3beeb0,762a3ea..6a82c59 --- a/src/oping.c +++ b/src/oping.c @@@ -164,9 -121,7 +164,10 @@@ static char *opt_filename = NULL static int opt_count = -1; static int opt_send_ttl = 64; static uint8_t opt_send_qos = 0; + static double opt_exit_status_threshold = 1.0; +#if USE_NCURSES +static int opt_utf8 = 0; +#endif static int host_num = 0; @@@ -311,9 -266,8 +312,11 @@@ static void usage_exit (const char *nam " -I srcaddr source address\n" " -D device outgoing interface name\n" " -f filename filename to read hosts from\n" +#if USE_NCURSES + " -u / -U force / disable UTF-8 output\n" +#endif + " -Z percent Exit with non-zero exit status if more than this percentage of\n" + " probes timed out. (default: never)\n" "\noping "PACKAGE_VERSION", http://verplant.org/liboping/\n" "by Florian octo Forster \n" @@@ -516,11 -470,7 +519,11 @@@ static int read_options (int argc, cha while (1) { - optchar = getopt (argc, argv, "46c:hi:I:t:Q:f:D:" - optchar = getopt (argc, argv, "46c:hi:I:t:Q:f:D:Z:"); ++ optchar = getopt (argc, argv, "46c:hi:I:t:Q:f:D:Z:" +#if USE_NCURSES + "uU" +#endif + ); if (optchar == -1) break; @@@ -591,15 -541,24 +594,33 @@@ set_opt_send_qos (optarg); break; +#if USE_NCURSES + case 'u': + opt_utf8 = 2; + break; + case 'U': + opt_utf8 = 1; + break; +#endif + + case 'Z': + { + char *endptr = NULL; + double tmp; + + errno = 0; + tmp = strtod (optarg, &endptr); + if ((errno != 0) || (endptr == NULL) || (*endptr != 0) || (tmp < 0.0) || (tmp > 100.0)) + { + fprintf (stderr, "Ignoring invalid -Z argument: %s\n", optarg); + fprintf (stderr, "The \"-Z\" option requires a numeric argument between 0 and 100.\n"); + } + else + opt_exit_status_threshold = tmp / 100.0; + + break; + } + case 'h': usage_exit (argv[0], 0); break;