Files
42_INT_07_minishell/test_rl_modif.c

44 lines
708 B
C

# include <stdlib.h>
# include <unistd.h>
# include <readline/readline.h>
# include <signal.h>
void handler_sigint(int id)
{
(void)id;
write(1, "\n", 1);
rl_replace_line("", 1);
rl_on_new_line();
rl_redisplay();
}
int main(int argc, char *argv[], char *envp[])
{
(void)argc;
(void)argv;
char *line_input;
char *prompt;
signal(SIGINT, handler_sigint);
line_input = NULL;
prompt = strdup("\e[0;31mtest>\e[0m ");
while (1)
{
if (line_input)
free(line_input);
line_input = readline(prompt);
if (line_input && *line_input)
{
write(1, line_input, strlen(line_input));
write(1, "\n", 1);
}
else if (!line_input)
{
write(1, "exit\n", 5);
exit(0);
}
}
return (0);
}