44 lines
708 B
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);
|
|
}
|