update: added isatty support and prompt usage
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
/* By: sede-san <sede-san@student.42madrid.com +#+ +:+ +#+ */
|
/* By: sede-san <sede-san@student.42madrid.com +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/10/22 19:10:13 by sede-san #+# #+# */
|
/* Created: 2025/10/22 19:10:13 by sede-san #+# #+# */
|
||||||
/* Updated: 2026/02/12 20:19:23 by sede-san ### ########.fr */
|
/* Updated: 2026/02/13 20:06:08 by sede-san ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -66,6 +66,13 @@ typedef struct s_variables
|
|||||||
// char **internal;
|
// char **internal;
|
||||||
} t_variables;
|
} t_variables;
|
||||||
|
|
||||||
|
typedef struct s_prompt
|
||||||
|
{
|
||||||
|
const char *ps1; // primary prompt string
|
||||||
|
const char *ps2; // secondary prompt string for multiline input
|
||||||
|
} t_prompt;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Main minishell structure containing global state information
|
* @brief Main minishell structure containing global state information
|
||||||
*
|
*
|
||||||
@@ -78,6 +85,7 @@ typedef struct s_minishell
|
|||||||
{
|
{
|
||||||
t_variables variables;
|
t_variables variables;
|
||||||
t_hashmap *builtins;
|
t_hashmap *builtins;
|
||||||
|
t_prompt prompt;
|
||||||
uint8_t exit_status;
|
uint8_t exit_status;
|
||||||
bool exit;
|
bool exit;
|
||||||
} t_minishell;
|
} t_minishell;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: sede-san <sede-san@student.42madrid.com +#+ +:+ +#+ */
|
/* By: sede-san <sede-san@student.42madrid.com +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/10/20 16:35:10 by sede-san #+# #+# */
|
/* Created: 2025/10/20 16:35:10 by sede-san #+# #+# */
|
||||||
/* Updated: 2026/02/10 22:12:58 by sede-san ### ########.fr */
|
/* Updated: 2026/02/13 20:12:25 by sede-san ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
# include "libft.h"
|
# include "libft.h"
|
||||||
# include "ft_printf.h"
|
# include "ft_printf.h"
|
||||||
|
# include "get_next_line.h"
|
||||||
# include "chardefs.h"
|
# include "chardefs.h"
|
||||||
# include <stdbool.h>
|
# include <stdbool.h>
|
||||||
# include <stdint.h>
|
# include <stdint.h>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: sede-san <sede-san@student.42madrid.com +#+ +:+ +#+ */
|
/* By: sede-san <sede-san@student.42madrid.com +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/10/20 20:51:33 by sede-san #+# #+# */
|
/* Created: 2025/10/20 20:51:33 by sede-san #+# #+# */
|
||||||
/* Updated: 2026/02/09 18:48:34 by sede-san ### ########.fr */
|
/* Updated: 2026/02/13 20:12:07 by sede-san ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -37,6 +37,14 @@ static bool handle_eof(
|
|||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void set_prompts(
|
||||||
|
t_minishell *minishell
|
||||||
|
)
|
||||||
|
{
|
||||||
|
minishell->prompt.ps1 = DEFAULT_PS1;
|
||||||
|
minishell->prompt.ps2 = DEFAULT_PS2;
|
||||||
|
}
|
||||||
|
|
||||||
void minishell_init(
|
void minishell_init(
|
||||||
t_minishell *minishell,
|
t_minishell *minishell,
|
||||||
char **envp
|
char **envp
|
||||||
@@ -44,6 +52,7 @@ void minishell_init(
|
|||||||
ft_bzero(minishell, sizeof(t_minishell));
|
ft_bzero(minishell, sizeof(t_minishell));
|
||||||
set_envp(envp, minishell);
|
set_envp(envp, minishell);
|
||||||
set_builtins(minishell);
|
set_builtins(minishell);
|
||||||
|
set_prompts(minishell);
|
||||||
if (minishell->variables.environment == NULL || minishell->builtins == NULL)
|
if (minishell->variables.environment == NULL || minishell->builtins == NULL)
|
||||||
minishell_clear(minishell);
|
minishell_clear(minishell);
|
||||||
}
|
}
|
||||||
@@ -59,7 +68,10 @@ void minishell_run(
|
|||||||
minishell_set_interactive_signals();
|
minishell_set_interactive_signals();
|
||||||
while (!minishell->exit)
|
while (!minishell->exit)
|
||||||
{
|
{
|
||||||
line = readline(DEFAULT_PS1);
|
if (isatty(STDIN_FILENO))
|
||||||
|
line = readline(minishell->prompt.ps1);
|
||||||
|
else
|
||||||
|
line = get_next_line(STDIN_FILENO);
|
||||||
handle_sigint_status(minishell);
|
handle_sigint_status(minishell);
|
||||||
if (handle_eof(line, minishell))
|
if (handle_eof(line, minishell))
|
||||||
continue ;
|
continue ;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: sede-san <sede-san@student.42madrid.com +#+ +:+ +#+ */
|
/* By: sede-san <sede-san@student.42madrid.com +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/10/22 18:37:38 by sede-san #+# #+# */
|
/* Created: 2025/10/22 18:37:38 by sede-san #+# #+# */
|
||||||
/* Updated: 2026/02/13 15:12:48 by sede-san ### ########.fr */
|
/* Updated: 2026/02/13 18:17:00 by sede-san ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -238,9 +238,7 @@ t_command *command_new(
|
|||||||
current_token = *tokens;
|
current_token = *tokens;
|
||||||
delimiter_token = ft_lstfind(current_token, (bool (*)(void *))is_pipe);
|
delimiter_token = ft_lstfind(current_token, (bool (*)(void *))is_pipe);
|
||||||
while (command != NULL && current_token != delimiter_token)
|
while (command != NULL && current_token != delimiter_token)
|
||||||
{
|
|
||||||
command_add_tokens(&command, ¤t_token);
|
command_add_tokens(&command, ¤t_token);
|
||||||
}
|
|
||||||
*tokens = current_token;
|
*tokens = current_token;
|
||||||
return (command);
|
return (command);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user