/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/03 09:00:00 by ljiriste #+# #+# */
-/* Updated: 2024/08/26 09:43:17 by ljiriste ### ########.fr */
+/* Updated: 2024/08/29 16:45:00 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
ft_vec_init(&tokens, sizeof(t_token));
parse_tree = NULL;
res = expand_wildcards(input, env);
+ if (g_last_signal)
+ {
+ g_last_signal = 0;
+ return ;
+ }
res = res || tokenize(input, &tokens);
if (tokens.size == 0 && res == 0)
{
/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/04/26 13:11:47 by ljiriste #+# #+# */
-/* Updated: 2024/08/29 17:11:26 by ljiriste ### ########.fr */
+/* Updated: 2024/08/29 17:17:15 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
return ;
}
+void catch_sigquit(void)
+{
+ struct sigaction sa;
+
+ ft_memset(&sa, 0, sizeof(sa));
+ sa.sa_handler = handler;
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0;
+ sigaction(SIGQUIT, &sa, NULL);
+ return ;
+}
+
+void ignore_sigquit(void)
+{
+ struct sigaction sa;
+
+ ft_memset(&sa, 0, sizeof(sa));
+ sa.sa_handler = SIG_IGN;
+ sigemptyset(&sa.sa_mask);
+ sa.sa_flags = 0;
+ sigaction(SIGQUIT, &sa, NULL);
+ return ;
+}
+
static void print_help(void)
{
ft_printf("Minishell should be used without any arguments.\n");
while (env.exit == 0)
{
setup_terminal();
+ ignore_sigquit();
line = get_line();
- regenerate_terminal();
if (!line)
{
env.ret_val = 0;
break ;
}
+ catch_sigquit();
+ regenerate_terminal();
handle_input(&line, &env);
free(line);
}
/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/08/08 10:50:26 by ljiriste #+# #+# */
-/* Updated: 2024/08/26 09:42:45 by ljiriste ### ########.fr */
+/* Updated: 2024/08/29 17:09:47 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
const size_t start_size = expanded->size;
t_wildcard_info info_dup;
+ if (g_last_signal != 0)
+ return (2);
info_dup = *info;
if (!(*(info->current_expand_char + 1) == '/' && info->current_entry_char == info->entry))
{
int add_conformant(t_vec *expanded, t_wildcard_info *info, char quote)
{
+ if (g_last_signal != 0)
+ return (2);
if (*info->current_expand_char == '\0' && *info->current_entry_char == '\0')
return (add_entry(expanded, info));
if (*info->current_expand_char == '/' && *info->current_entry_char == '\0')