From a4ed2780f2b9659aa063ad166dad354ebbaf42e5 Mon Sep 17 00:00:00 2001 From: lohhiiccc <96543753+lohhiiccc@users.noreply.github.com> Date: Thu, 12 Mar 2026 16:11:26 +0100 Subject: [PATCH] feat(cli): add -w/deadline option --- includes/ft_ping.h | 1 + includes/internal/cli/arg_handler.h | 1 + includes/internal/cli/options.h | 8 ++++++++ src/cli/handlers/handle_deadline.c | 14 ++++++++++++++ 4 files changed, 24 insertions(+) create mode 100644 src/cli/handlers/handle_deadline.c diff --git a/includes/ft_ping.h b/includes/ft_ping.h index 0ee488e..9ab1f63 100644 --- a/includes/ft_ping.h +++ b/includes/ft_ping.h @@ -17,6 +17,7 @@ typedef struct s_ping_config uint8_t ttl; size_t packet_size; double timeout; + double deadline; /* Flags */ uint8_t flags; diff --git a/includes/internal/cli/arg_handler.h b/includes/internal/cli/arg_handler.h index c9f7ec6..60b8ce0 100644 --- a/includes/internal/cli/arg_handler.h +++ b/includes/internal/cli/arg_handler.h @@ -36,6 +36,7 @@ int cli_handle_help(const char *arg, t_ping_config *config); int cli_handle_interval(const char *arg, t_ping_config *config); int cli_handle_quiet(const char *arg, t_ping_config *config); int cli_handle_size(const char *arg, t_ping_config *config); +int cli_handle_deadline(const char *arg, t_ping_config *config); int cli_handle_timeout(const char *arg, t_ping_config *config); int cli_handle_ttl(const char *arg, t_ping_config *config); int cli_handle_version(const char *arg, t_ping_config *config); diff --git a/includes/internal/cli/options.h b/includes/internal/cli/options.h index 77c3a0c..352f206 100644 --- a/includes/internal/cli/options.h +++ b/includes/internal/cli/options.h @@ -76,6 +76,14 @@ OPT_ARG_SECONDS, \ "Timeout for replies in seconds" \ ) \ + X( \ + 'w', \ + "deadline", \ + required_argument, \ + cli_handle_deadline, \ + OPT_ARG_SECONDS, \ + "Exit after N seconds regardless of packets sent/received" \ + ) \ X( \ 'f', \ "flood", \ diff --git a/src/cli/handlers/handle_deadline.c b/src/cli/handlers/handle_deadline.c new file mode 100644 index 0000000..f63b7c2 --- /dev/null +++ b/src/cli/handlers/handle_deadline.c @@ -0,0 +1,14 @@ +#include "cli.h" +#include "internal/cli/arg_handler.h" +#include "internal/cli/parse_utils.h" + +int +cli_handle_deadline(const char *arg, t_ping_config *config) +{ + float deadline; + + if (0 != cli_parse_float(arg, &deadline)) + return CLI_ERROR; + config->deadline = deadline; + return CLI_SUCCESS; +}