refactor(cli): use named constants for return codes and implement flag handlers

This commit is contained in:
lohhiiccc 2026-03-01 14:40:57 +01:00
parent 52338017a6
commit cff77eef9d
13 changed files with 31 additions and 14 deletions

View file

@ -3,6 +3,11 @@
#include "ft_ping.h" #include "ft_ping.h"
#define CLI_SUCCESS 0
#define CLI_ERROR 1
#define CLI_EXIT_SUCCESS -1
typedef int (*t_option_handler)(const char *arg, t_ping_config *config); typedef int (*t_option_handler)(const char *arg, t_ping_config *config);
typedef enum e_option_arg_type typedef enum e_option_arg_type

View file

@ -1,3 +1,4 @@
#include "cli.h"
#include "ft_ping.h" #include "ft_ping.h"
int int
@ -5,5 +6,5 @@ cli_handle_count(const char *arg, t_ping_config *config)
{ {
(void)arg; (void)arg;
(void)config; (void)config;
return 0; return CLI_SUCCESS;
} }

View file

@ -1,9 +1,11 @@
#include "cli.h"
#include "ft_ping.h" #include "ft_ping.h"
#include "ft_ping_flags.h"
int int
cli_handle_flood(const char *arg, t_ping_config *config) cli_handle_flood(const char *arg, t_ping_config *config)
{ {
(void)arg; (void)arg;
(void)config; SET_FLAG(config->flags, FLAG_FLOOD);
return 0; return CLI_SUCCESS;
} }

View file

@ -30,7 +30,7 @@ cli_handle_help(const char *arg, t_ping_config *config)
opt->description opt->description
); );
} }
return -1; return CLI_EXIT_SUCCESS;
} }
static const char * static const char *

View file

@ -1,3 +1,4 @@
#include "cli.h"
#include "ft_ping.h" #include "ft_ping.h"
int int
@ -5,5 +6,5 @@ cli_handle_interval(const char *arg, t_ping_config *config)
{ {
(void)arg; (void)arg;
(void)config; (void)config;
return 0; return CLI_SUCCESS;
} }

View file

@ -1,4 +1,5 @@
#include "ft_ping.h" #include "ft_ping.h"
#include "cli.h"
#include "ft_ping_flags.h" #include "ft_ping_flags.h"
int int
@ -6,5 +7,5 @@ cli_handle_quiet(const char *arg, t_ping_config *config)
{ {
(void)arg; (void)arg;
SET_FLAG(config->flags, FLAG_QUIET); SET_FLAG(config->flags, FLAG_QUIET);
return 0; return CLI_SUCCESS;
} }

View file

@ -1,3 +1,4 @@
#include "cli.h"
#include "ft_ping.h" #include "ft_ping.h"
int int
@ -5,5 +6,5 @@ cli_handle_size(const char *arg, t_ping_config *config)
{ {
(void)arg; (void)arg;
(void)config; (void)config;
return 0; return CLI_SUCCESS;
} }

View file

@ -1,3 +1,4 @@
#include "cli.h"
#include "ft_ping.h" #include "ft_ping.h"
int int
@ -5,5 +6,5 @@ cli_handle_timeout(const char *arg, t_ping_config *config)
{ {
(void)arg; (void)arg;
(void)config; (void)config;
return 0; return CLI_SUCCESS;
} }

View file

@ -1,3 +1,4 @@
#include "cli.h"
#include "ft_ping.h" #include "ft_ping.h"
int int
@ -5,5 +6,5 @@ cli_handle_ttl(const char *arg, t_ping_config *config)
{ {
(void)arg; (void)arg;
(void)config; (void)config;
return 0; return CLI_SUCCESS;
} }

View file

@ -1,3 +1,4 @@
#include "cli.h"
#include "ft_ping.h" #include "ft_ping.h"
#include "version_gen.h" #include "version_gen.h"
@ -18,5 +19,5 @@ cli_handle_version(const char *arg, t_ping_config *config)
printf("\n"); printf("\n");
printf("Build: %s (commit %s)\n", PING_BUILD_DATE, PING_GIT_COMMIT); printf("Build: %s (commit %s)\n", PING_BUILD_DATE, PING_GIT_COMMIT);
return -1; return CLI_EXIT_SUCCESS;
} }

View file

@ -1,9 +1,11 @@
#include "cli.h"
#include "ft_ping.h" #include "ft_ping.h"
#include "ft_ping_flags.h"
int int
cli_handle_verbose(const char *arg, t_ping_config *config) cli_handle_verbose(const char *arg, t_ping_config *config)
{ {
(void)arg; (void)arg;
(void)config; SET_FLAG(config->flags, FLAG_VERBOSE);
return 0; return CLI_SUCCESS;
} }

View file

@ -39,7 +39,7 @@ hanlde_one_option(int opt, char *optarg, t_ping_config *config)
int res; int res;
if ('?' == opt) if ('?' == opt)
return 1; return CLI_ERROR;
if (NULL != desc) if (NULL != desc)
{ {
res = desc->handler(optarg, config); res = desc->handler(optarg, config);

View file

@ -3,6 +3,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "cli.h"
#include "ft_ping.h" #include "ft_ping.h"
#include "version_gen.h" #include "version_gen.h"
@ -20,7 +21,7 @@ main(int argc, char **argv)
if (0 != init_prog_name(argv[0])) if (0 != init_prog_name(argv[0]))
return EXIT_FAILURE; return EXIT_FAILURE;
ret = cli_parse_arguments(argc, argv, &config); ret = cli_parse_arguments(argc, argv, &config);
if (ret != 0) if (ret != CLI_SUCCESS)
return (ret > 0) ? EXIT_FAILURE : EXIT_SUCCESS; return (ret > 0) ? EXIT_FAILURE : EXIT_SUCCESS;
printf("PING: Not yet implemented\n"); printf("PING: Not yet implemented\n");