]> git.gsnw.org Git - fping.git/commitdiff
Move option parsing to a separate file fping.c and fping.h
authorGerman Service Network <support@gsnw.de>
Sat, 24 Jan 2026 07:06:09 +0000 (08:06 +0100)
committerSebastian <176771227+gsnw-sebast@users.noreply.github.com>
Sat, 24 Jan 2026 07:09:02 +0000 (08:09 +0100)
CHANGELOG.md
src/Makefile.am
src/flags.c [new file with mode: 0644]
src/flags.h [new file with mode: 0644]
src/fping.c
src/fping.h
src/output.c
src/socket4.c
src/socket6.c
src/stats.c

index 0bdb3dfe18b033071f19860595d403a0c69b9d9c..9caef9a33f23a46840a736584d8ba31ebca17874 100644 (file)
@@ -13,6 +13,7 @@ Next
 - Move printing functions, stats functions (global stats) and
   function declarations to a separate file (#454, thanks @gsnw-sebast)
 - Avoid crash with option `-0` (#457, thanks @auerswal)
+- Move option parsing to a separate file fping.c and fping.h (#458, thanks @gsnw-sebast)
 
 fping 5.5 (2025-12-31)
 ======================
index 7336192771f5c14a627175d80ec24cff37ea99e6..30414c2b89425793b7f0f746dd807c123d8564f6 100644 (file)
@@ -2,7 +2,7 @@ AM_CFLAGS = -Wall -Wextra -Wno-sign-compare
 
 sbin_PROGRAMS = fping
 
-fping_SOURCES = fping.c output.c stats.c seqmap.c socket4.c fping.h options.h output.h stats.h seqmap.h optparse.c optparse.h
+fping_SOURCES = fping.c flags.c output.c stats.c seqmap.c socket4.c fping.h flags.h options.h output.h stats.h seqmap.h optparse.c optparse.h
 fping_DEPENDENCIES = ../config.h
 
 if IPV6
diff --git a/src/flags.c b/src/flags.c
new file mode 100644 (file)
index 0000000..2c491e1
--- /dev/null
@@ -0,0 +1,50 @@
+#include "flags.h"
+#include "options.h"
+
+#include <stdint.h>
+
+/* options with values */
+/* all time-related values are int64_t nanoseconds */
+unsigned int opt_retry = DEFAULT_RETRY;
+int64_t opt_timeout = (int64_t)DEFAULT_TIMEOUT * 1000000;
+int64_t opt_seqmap_timeout = (int64_t)DEFAULT_SEQMAP_TIMEOUT * 1000000;
+int64_t opt_interval = (int64_t)DEFAULT_INTERVAL * 1000000;
+int64_t opt_perhost_interval = (int64_t)DEFAULT_PERHOST_INTERVAL * 1000000;
+float opt_backoff = DEFAULT_BACKOFF_FACTOR;
+unsigned int opt_ping_data_size = DEFAULT_PING_DATA_SIZE;
+unsigned int opt_count = 1;
+unsigned int opt_min_reachable = 0;
+unsigned int opt_ttl = 0;
+
+/* switches 0 = off 1 = on */
+int opt_version_on = 0;
+int opt_verbose_on = 0;
+int opt_unreachable_on = 0;
+int opt_alive_on = 0;
+int opt_quiet_on = 0;
+int opt_elapsed_on = 0;
+int opt_stats_on = 0;
+int opt_cumulative_stats_on = 0;
+int opt_generate_on = 0; /* flag for IP list generation */
+int opt_count_on = 0;
+int opt_loop_on = 0;
+int opt_print_netdata_on = 0;
+int opt_print_json_on = 0;
+int opt_print_tos_on = 0;
+int opt_print_ttl_on = 0;
+int opt_per_recv_on = 0;
+int opt_report_all_rtts_on = 0;
+int opt_name_on = 0;
+int opt_addr_on = 0;
+int opt_rdns_on = 0;
+int opt_backoff_on = 0;
+int opt_multif_on = 0;
+int opt_timeout_on = 0;
+int opt_fast_reachable_on = 0;
+int opt_outage_on = 0;
+int opt_random_data_on = 0;
+int opt_check_source_on = 0;
+int opt_size_on = 0;
+int opt_timestamp_on = 0;
+int opt_timestamp_format = 0;
+int opt_icmp_request_typ = 0;
\ No newline at end of file
diff --git a/src/flags.h b/src/flags.h
new file mode 100644 (file)
index 0000000..9ab7922
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef FLAGS_H
+#define FLAGS_H
+
+#include <stdint.h>
+
+/* sized so as to be like traditional ping */
+#define DEFAULT_PING_DATA_SIZE 56
+
+/* options with values */
+/* all time-related values are int64_t nanoseconds */
+extern unsigned int opt_retry;
+extern int64_t opt_timeout;
+extern int64_t opt_seqmap_timeout;
+extern int64_t opt_interval;
+extern int64_t opt_perhost_interval;
+extern float opt_backoff;
+extern unsigned int opt_ping_data_size;
+extern unsigned int opt_count;
+extern unsigned int opt_min_reachable;
+extern unsigned int opt_ttl;
+
+/* switches 0 = off 1 = on */
+extern int opt_print_json_on;
+extern int opt_version_on;
+extern int opt_verbose_on;
+extern int opt_unreachable_on;
+extern int opt_alive_on;
+extern int opt_quiet_on;
+extern int opt_elapsed_on;
+extern int opt_stats_on;
+extern int opt_cumulative_stats_on;
+extern int opt_generate_on;
+extern int opt_count_on;
+extern int opt_loop_on;
+extern int opt_print_netdata_on;
+extern int opt_print_json_on;
+extern int opt_print_tos_on;
+extern int opt_print_ttl_on;
+extern int opt_per_recv_on;
+extern int opt_report_all_rtts_on;
+extern int opt_name_on;
+extern int opt_addr_on;
+extern int opt_rdns_on;
+extern int opt_backoff_on;
+extern int opt_multif_on;
+extern int opt_timeout_on;
+extern int opt_fast_reachable_on;
+extern int opt_outage_on;
+extern int opt_random_data_on;
+extern int opt_check_source_on;
+extern int opt_size_on;
+extern int opt_timestamp_on;
+extern int opt_timestamp_format;
+extern int opt_icmp_request_typ;
+
+#endif
\ No newline at end of file
index ab674a19db6f3cb2bd58d1fb46b4ff9b1ed7c98c..7c875387bd82136e848a64d27fa4578a67c8fd5c 100644 (file)
@@ -36,6 +36,7 @@ extern "C" {
 
 #include "config.h"
 #include "fping.h"
+#include "flags.h"
 #include "options.h"
 #include "optparse.h"
 
@@ -146,9 +147,6 @@ extern int h_errno;
 #define MAX_GENERATE 131072 /* maximum number of hosts that -g can generate */
 #define MAX_TARGET_NAME_LEN 255 /* maximum target name length read from file */
 
-/* sized so as to be like traditional ping */
-#define DEFAULT_PING_DATA_SIZE 56
-
 /* ICMP Timestamp has a fixed payload size of 12 bytes */
 #define ICMP_TIMESTAMP_DATA_SIZE 12
 
@@ -304,17 +302,6 @@ volatile sig_atomic_t finish_requested = 0;
 
 unsigned int debugging = 0;
 
-/* all time-related values are int64_t nanoseconds */
-unsigned int opt_retry = DEFAULT_RETRY;
-int64_t opt_timeout = (int64_t)DEFAULT_TIMEOUT * 1000000;
-int64_t opt_seqmap_timeout = (int64_t)DEFAULT_SEQMAP_TIMEOUT * 1000000;
-int64_t opt_interval = (int64_t)DEFAULT_INTERVAL * 1000000;
-int64_t opt_perhost_interval = (int64_t)DEFAULT_PERHOST_INTERVAL * 1000000;
-float opt_backoff = DEFAULT_BACKOFF_FACTOR;
-unsigned int opt_ping_data_size = DEFAULT_PING_DATA_SIZE;
-unsigned int opt_count = 1, opt_min_reachable = 0;
-unsigned int opt_ttl = 0;
-
 unsigned int trials;
 int64_t report_interval = 0;
 int src_addr_set = 0;
@@ -346,41 +333,7 @@ int64_t end_time;
 int64_t last_send_time; /* time last ping was sent */
 int64_t next_report_time; /* time next -Q report is expected */
 
-/* switches */
-int opt_version_on = 0;
-
-int opt_verbose_on = 0,
-    opt_unreachable_on = 0,
-    opt_alive_on = 0,
-    opt_quiet_on = 0,
-    opt_elapsed_on = 0,
-    opt_stats_on = 0,
-    opt_cumulative_stats_on = 0;
-int opt_generate_on = 0, /* flag for IP list generation */
-    opt_count_on = 0,
-    opt_loop_on;
-int opt_print_netdata_on = 0,
-    opt_print_json_on = 0,
-    opt_print_tos_on = 0,
-    opt_print_ttl_on = 0;
-int opt_per_recv_on = 0,
-    opt_report_all_rtts_on = 0,
-    opt_name_on = 0,
-    opt_addr_on = 0,
-    opt_rdns_on = 0;
-int opt_backoff_on = 0;
-int opt_multif_on = 0,
-    opt_timeout_on = 0,
-    opt_fast_reachable_on = 0;
-int opt_outage_on = 0,
-    opt_random_data_on = 0,
-    opt_check_source_on = 0,
-    opt_size_on = 0;
-
-int opt_timestamp_on = 0,
-    opt_timestamp_format = 0;
-
-int opt_icmp_request_typ = 0;
+
 #if defined(DEBUG) || defined(_DEBUG)
 int opt_debug_randomly_lose_on, opt_debug_trace_on, opt_debug_print_per_system_on;
 int lose_factor;
index fad6e7e781cdec1be405d5edaa68cc770c3c1c28..845fcaae25db49a9523403bba81c9967d06f25e9 100644 (file)
@@ -78,24 +78,6 @@ extern int num_alive, num_unreachable, num_noaddress, num_timeout;
 extern int num_pingsent, num_pingreceived, num_othericmprcvd;
 extern int64_t max_reply, min_reply, total_replies, sum_replies;
 
-// Options
-extern int opt_print_json_on;
-extern int opt_timestamp_on;
-extern int opt_timestamp_format;
-extern int opt_alive_on;
-extern int opt_quiet_on;
-extern int opt_per_recv_on;
-extern int opt_verbose_on;
-extern int opt_print_tos_on;
-extern int opt_print_ttl_on;
-extern int opt_elapsed_on;
-extern int opt_icmp_request_typ;
-extern int opt_report_all_rtts_on;
-extern int opt_outage_on;
-extern int opt_cumulative_stats_on;
-extern int opt_print_netdata_on;
-extern int opt_random_data_on;
-
 
 /* this requires variadic macros, part of C99 */
 #if (defined(DEBUG) || defined(_DEBUG))
index c8eec90e8013e58527cd8482f345a35192b7aa48..b2640c824436b111895b016fdda80e1294bdaedf 100644 (file)
@@ -1,5 +1,7 @@
 #include "output.h"
 #include "fping.h"
+#include "flags.h"
+
 #include <stdio.h>
 #include <time.h>
 #include <inttypes.h>
index 8a633a09553ec33464516c58b2ad95d40a838943..564791e684d0ac509f990e23f13d228b699f7d44 100644 (file)
@@ -32,6 +32,7 @@
 
 #include "config.h"
 #include "fping.h"
+#include "flags.h"
 
 #include <fcntl.h>
 #include <netdb.h>
index 8176906f49bb5f3fe5144abc0eafe28d0fee7c06..7f94bfb00416e55f0e4b86ac023645accf0e51a8 100644 (file)
@@ -32,6 +32,7 @@
 
 #include "config.h"
 #include "fping.h"
+#include "flags.h"
 
 #include <fcntl.h>
 #include <netdb.h>
index fd9bae055a746fbed5ce1fb611718490c1ae3ac8..d601b0d4ee6c81ad62b8a1af25c22f73c8929648 100644 (file)
@@ -1,6 +1,8 @@
 #include "stats.h"
-#include "output.h"
 #include "fping.h"
+#include "flags.h"
+#include "output.h"
+
 #include <stdio.h>
 #include <inttypes.h>