rectif cliopts (DG qui segv) + retrait leaks des fds
This commit is contained in:
parent
1d7e3fc03c
commit
e4e0630c42
3 changed files with 5 additions and 8 deletions
|
|
@ -13,7 +13,7 @@
|
||||||
NAME = 42sh
|
NAME = 42sh
|
||||||
|
|
||||||
CC = gcc
|
CC = gcc
|
||||||
FLAGS = -Wall -Wextra -Werror #-fvisibility=hidden
|
FLAGS = -Wall -Wextra -Werror -fsanitize=address#-fvisibility=hidden
|
||||||
D_FLAGS = -g
|
D_FLAGS = -g
|
||||||
|
|
||||||
DELTA = $$(echo "$$(tput cols)-47"|bc)
|
DELTA = $$(echo "$$(tput cols)-47"|bc)
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,6 @@ static char *check_required(char ***av, char *arg)
|
||||||
{
|
{
|
||||||
char *ret;
|
char *ret;
|
||||||
|
|
||||||
DG("%p, av", av);
|
|
||||||
DG("%p, *av", *av);
|
|
||||||
DG("%p, arg", arg);
|
|
||||||
DG("%s, *arg", arg);
|
|
||||||
if (!av || !*av)
|
if (!av || !*av)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
if (!arg || !*arg || !*(arg + 1))
|
if (!arg || !*arg || !*(arg + 1))
|
||||||
|
|
@ -69,6 +65,8 @@ static int cliopts_parse_short(
|
||||||
{
|
{
|
||||||
if (!(map = get_map_short(opt_map, arg[i])))
|
if (!(map = get_map_short(opt_map, arg[i])))
|
||||||
return (ERR_SET(E_CO_INV, arg[i]));
|
return (ERR_SET(E_CO_INV, arg[i]));
|
||||||
|
((t_data_template*)data)->flag |= map->flag_on;
|
||||||
|
((t_data_template*)data)->flag &= ~map->flag_off;
|
||||||
if (map->get)
|
if (map->get)
|
||||||
{
|
{
|
||||||
if (map->arg_required && !(tmp = check_required(av, arg + i)))
|
if (map->arg_required && !(tmp = check_required(av, arg + i)))
|
||||||
|
|
@ -77,10 +75,8 @@ static int cliopts_parse_short(
|
||||||
if ((map->get)(tmp, data))
|
if ((map->get)(tmp, data))
|
||||||
return (ERR_SET(E_CO_MISS, *arg));
|
return (ERR_SET(E_CO_MISS, *arg));
|
||||||
if (map->arg_required)
|
if (map->arg_required)
|
||||||
arg += ft_strlen(arg) - 1;
|
break ;
|
||||||
}
|
}
|
||||||
((t_data_template*)data)->flag |= map->flag_on;
|
|
||||||
((t_data_template*)data)->flag &= ~map->flag_off;
|
|
||||||
}
|
}
|
||||||
return (++(*av) ? 0 : 0);
|
return (++(*av) ? 0 : 0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ void data_exit(void)
|
||||||
data = data_singleton();
|
data = data_singleton();
|
||||||
ft_strdel(&data->line.input);
|
ft_strdel(&data->line.input);
|
||||||
ft_strdel(&data->binary);
|
ft_strdel(&data->binary);
|
||||||
|
exec_popfds();
|
||||||
ft_sstrfree(data->env);
|
ft_sstrfree(data->env);
|
||||||
ft_sstrfree(data->local_var);
|
ft_sstrfree(data->local_var);
|
||||||
ft_sstrfree(data->argv);
|
ft_sstrfree(data->argv);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue