better flag handling

This commit is contained in:
hugogogo
2026-05-06 16:50:05 +02:00
parent 8a479c3c3b
commit 93647b56b5
5 changed files with 51 additions and 48 deletions

View File

@@ -6,7 +6,8 @@
* GLOBALS
*/
bool debug_mode;
bool flag_debug_mode;
bool flag_loop_mode;
char *input_g_err;
s_token *tokens_g_err;
s_term *terms_g_err;
@@ -231,50 +232,51 @@ static void launch_stdin()
int main(int ac, char **av)
{
int i;
char *input;
e_program_mode program_mode;
debug_mode = false;
// init flags
flag_debug_mode = false;
flag_loop_mode = false;
// check arguments
program_mode = MODE_ARGV;
if (ac > 3)
{
stop_errors("too many arguments");
}
else if (ac == 3)
{
if ((ft_strcmp(av[1], "-d") == 0))
{
debug_mode = true;
input = av[2];
}
else if ((ft_strcmp(av[2], "-d") == 0))
{
debug_mode = true;
input = av[1];
}
else
{
stop_errors("3rd argument is not a valid flag: '%s'", av[2]);
}
}
else if (ac == 2)
{
if ((ft_strcmp(av[1], "-d") == 0))
{
debug_mode = true;
program_mode = MODE_STDIN;
}
else
{
input = av[1];
}
}
else if (ac < 2)
if (ac == 1)
{
program_mode = MODE_STDIN;
}
else if (ac > 1)
{
// get flags
input = NULL;
i = 1;
while (i < ac)
{
if ((ft_strcmp(av[i], "-d") == 0))
{
flag_debug_mode = true;
}
else if ((ft_strcmp(av[i], "-l") == 0))
{
flag_loop_mode = true;
}
else if (ft_strlen(av[i]) == 2 && av[i][0] == '-')
{
stop_errors("unknwon flag '%s'", av[i]);
}
else
{
input = av[i];
}
i++;
}
// if input was not set, it means interactiv mode
if (input == NULL)
{
program_mode = MODE_STDIN;
}
}
// launch calculator
if (program_mode == MODE_ARGV)

View File

@@ -131,7 +131,7 @@ static int get_exponent(s_token *tokens, int i, int *token_count)
}
else
{
stop_errors("at exponent place, after a '*' we should have a 'var', but instead got : '%c' (token number %i)", tokens[i].value_char, i);
stop_errors("at exponent place, after a '*' we should have a 'var', but instead got : '%s' (token number %i)", token_type_to_str(tokens[i].type), i);
}
}
else
@@ -160,7 +160,7 @@ static int get_exponent(s_token *tokens, int i, int *token_count)
}
else
{
stop_errors("at exponent place, we should have an int, but instead got : '%c' (token number %i)", tokens[i].value_char, i);
stop_errors("at exponent place, we should have an int, but instead got : '%s' (token number %i)", token_type_to_str(tokens[i].type), i);
}
return tokens[i].value_int;

View File

@@ -108,7 +108,7 @@ static void print_context_polynom()
void print_state()
{
if (!debug_mode)
if (!flag_debug_mode)
return;
ft_dprintf(STDERR_FILENO, "\nSTATE :\n");
if (input_g_err)