「🏗️」 wip: parsing kinda working
This commit is contained in:
31
src/help.c
31
src/help.c
@ -4,18 +4,35 @@
|
||||
#include <stdio.h>
|
||||
|
||||
void print_help(void) {
|
||||
uint16_t i = 0;
|
||||
|
||||
printf("Usage: ping [OPTION...] HOST ...\n");
|
||||
printf("Send ICMP ECHO_REQUEST packets to network hosts.\n\n");
|
||||
|
||||
while (i < OPT_NB) {
|
||||
printf(" -%c, --%s:\t %s\n", options[i].opt, options[i].name, options[i].doc);
|
||||
printf(" All the mandatory options : \n");
|
||||
OPT_WHILE {
|
||||
if (options[i].grp == 1)
|
||||
printf(" -%c, --%s:\t %s\n", options[i].opt, options[i].name,
|
||||
options[i].doc);
|
||||
i++;
|
||||
}
|
||||
printf("\nMandatory or optional arguments to long options are also mandatory "
|
||||
"or optional\nfor any corresponding short options.\n\n");
|
||||
printf("Report bugs to <noreply@adjoly.fr> (pls don't).\n");
|
||||
i = 0;
|
||||
printf(" All the bonuses options : \n");
|
||||
while (i < OPT_NB) {
|
||||
if (options[i].grp == 2)
|
||||
printf(" -%c, --%s:\t %s\n", options[i].opt, options[i].name,
|
||||
options[i].doc);
|
||||
i++;
|
||||
}
|
||||
printf(" All the prints and help function : \n");
|
||||
while (i < OPT_NB) {
|
||||
if (options[i].grp == 0)
|
||||
printf(" -%c, --%s:\t %s\n", options[i].opt, options[i].name,
|
||||
options[i].doc);
|
||||
i++;
|
||||
}
|
||||
printf(
|
||||
"\nMandatory or optional arguments to long options are also mandatory "
|
||||
"or optional\nfor any corresponding short options.\n\n");
|
||||
printf("Report bugs to <noreply@adjoly.fr> :D.\n");
|
||||
}
|
||||
|
||||
void print_no_host(char *av) {
|
||||
|
13
src/main.c
13
src/main.c
@ -6,6 +6,17 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
void init_args_t(args_t *args) {
|
||||
OPT_WHILE {
|
||||
args->opts[i] = false;
|
||||
args->arg[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void handle_options(args_t *args) {
|
||||
// TODO: need to make this function D:
|
||||
}
|
||||
|
||||
int main(int ac, char **av) {
|
||||
args_t args;
|
||||
if (ac > 1) {
|
||||
@ -15,7 +26,7 @@ int main(int ac, char **av) {
|
||||
else if (ret != EXIT_SUCCESS)
|
||||
return ret;
|
||||
else
|
||||
return EXIT_SUCCESS;
|
||||
handle_options(&args);
|
||||
} else {
|
||||
print_no_host(*av);
|
||||
return EX_USAGE;
|
||||
|
@ -4,36 +4,48 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sysexits.h>
|
||||
|
||||
int handle_long_args(char **av, args_t *args) {
|
||||
OPT_WHILE {
|
||||
if (strncmp((*av) + 2, options[i].name, strlen(options[i].name)) == 0) {
|
||||
OPT_HANDLE(i)
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
int opt_parse(char **av, args_t *args) {
|
||||
char *exec_name = *av;
|
||||
|
||||
(void)args;
|
||||
while (*av != NULL) {
|
||||
char *a = *av;
|
||||
|
||||
if (*a == '-') {
|
||||
switch ((char)*(a + 1)) {
|
||||
case '-':
|
||||
break;
|
||||
case '?':
|
||||
print_help();
|
||||
return -1;
|
||||
case 'v':
|
||||
printf("verboseeee");
|
||||
break;
|
||||
};
|
||||
char opt = *(a + 1);
|
||||
if (!opt) {
|
||||
print_no_host(exec_name);
|
||||
return EX_USAGE;
|
||||
} else if (opt == '-') {
|
||||
int ret = handle_long_args(av, args);
|
||||
if (ret == EX_USAGE) {
|
||||
print_no_host(exec_name);
|
||||
return EX_USAGE;
|
||||
}
|
||||
} else {
|
||||
OPT_WHILE {
|
||||
if (opt == options[i].opt) {
|
||||
OPT_HANDLE(i)
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
}
|
||||
av++;
|
||||
}
|
||||
|
||||
if (av) {
|
||||
print_no_host(exec_name);
|
||||
return EX_USAGE;
|
||||
}
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user