/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* prompt.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/04 16:13:08 by whaffman #+# #+# */ /* Updated: 2025/02/06 16:12:02 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" char *get_user(t_list *environment) { char *str1; char *str2; str1 = ft_strdup(get_environment(environment, "USER")); if (str1 == NULL) str1 = ft_strdup("guest"); if (str1 == NULL) return (NULL); str2 = ft_strjoin(GREEN, str1); free(str1); str1 = ft_strjoin(str2, RESET "🐚" GREEN "minishell" RESET ": "); free(str2); return (str1); } char *get_path(t_list *environment) { char *home; char *temp; char *cwd; cwd = getcwd(NULL, 0); home = get_environment(environment, "HOME"); if (cwd == NULL) { perror("getcwd"); return (NULL); } if (home && ft_strncmp(cwd, home, ft_strlen(home)) == 0) { temp = ft_strjoin("~", cwd + ft_strlen(home)); free(cwd); cwd = temp; } temp = ft_strjoin(BLUE, cwd); free(cwd); cwd = ft_strjoin(temp, RESET); free(temp); return (cwd); } char *ft_prompt(t_minishell *minishell) { char *line; char *cwd; char *prompt; char *user; char *temp; cwd = get_path(minishell->environment); if (cwd == NULL) return (NULL); user = get_user(minishell->environment); temp = ft_strjoin(user, cwd); free(user); free(cwd); prompt = ft_strjoin(temp, "> "); free(temp); line = readline(prompt); free(prompt); if (line != NULL) { add_history(line); ft_write_history(line); } return (line); }