diff --git a/include/minishell.h b/include/minishell.h index 36e0139..c80edc6 100644 --- a/include/minishell.h +++ b/include/minishell.h @@ -6,7 +6,7 @@ /* By: mmoussou +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/04/24 11:18:04 by adjoly #+# #+# */ -/* Updated: 2024/04/30 12:40:35 by adjoly ### ########.fr */ +/* Updated: 2024/05/02 15:47:34 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,61 +30,19 @@ bool is_str(char *src, char *dst) return (true); } -/*char *get_hostname(void) -{ - char *hostname; - char *tmp; - int host_file; - - //host_file = open(); - tmp = hostname; - while (*tmp) - tmp++; - return -}*/ - -char *get_prompt(void) -{ - char **prompt; - char *ret = NULL; - char *home; - char **tmp; - - prompt = malloc(1000); - prompt[0] = getenv("USER"); - prompt[1] = "@"; - //prompt[2] = get_hostname(); - home = getenv("HOME"); - prompt[3] = getenv("PWD"); - prompt[4] = ">"; - //ret = ft_calloc(1000, sizeof(char)); - - if (!ft_strncmp(prompt[3], home, ft_strlen(home))) - prompt[3] += ft_strlen(home); - tmp = prompt; - while (*tmp) - { - ft_strlcat(ret, *tmp, ft_strlen(ret) + ft_strlen(*tmp) + 1); - tmp++; - } - free(prompt); - return (ret); -} - int main(int ac, char **av, char **env) { char *test; char **lll; - char *ret = NULL; + char *prompt; (void)ac; (void)av; (void)env; while (1) { - ret = get_prompt(); - test = readline(ret); - free(ret); + prompt = get_prompt(); + test = readline(prompt); add_history(test); lll = ft_split(test, ' '); if (!*lll) @@ -92,6 +50,6 @@ int main(int ac, char **av, char **env) if (is_str(test, "exit")) break; } - //ft_freearr((void **)lll); + //ft_free("a", &lll); return (0); } diff --git a/src/prompt/get_hostname.c b/src/prompt/get_hostname.c new file mode 100644 index 0000000..dd70044 --- /dev/null +++ b/src/prompt/get_hostname.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_hostname.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/05/02 10:36:31 by adjoly #+# #+# */ +/* Updated: 2024/05/02 13:42:24 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "fcntl.h" +#include "libft.h" + +char *get_hostname(void) +{ + char *hostname; + char *buf; + int host_file; + char *delimiter; + + buf = ft_calloc(254, sizeof(char)); + host_file = open("/etc/hostname", O_RDONLY); + read(host_file, buf, 254); + delimiter = ft_strchr(buf, '.'); + if (!delimiter) + { + free(buf); + return (buf); + } + hostname = ft_calloc(delimiter - buf, sizeof(char)); + ft_strlcpy(hostname, buf, delimiter - buf + 1); + free(buf); + return (hostname); +} diff --git a/src/get_prompt.c b/src/prompt/get_prompt.c similarity index 54% rename from src/get_prompt.c rename to src/prompt/get_prompt.c index 2fba489..210bc9b 100644 --- a/src/get_prompt.c +++ b/src/prompt/get_prompt.c @@ -6,49 +6,22 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/04/30 13:25:42 by adjoly #+# #+# */ -/* Updated: 2024/04/30 13:27:03 by adjoly ### ########.fr */ +/* Updated: 2024/05/02 15:50:14 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ -/*char *get_hostname(void) -{ - char *hostname; - char *tmp; - int host_file; - - //host_file = open(); - tmp = hostname; - while (*tmp) - tmp++; - return -}*/ +#include "libft.h" +#include "minishell.h" char *get_prompt(void) { - char **prompt; - char *ret = NULL; - char *home; - char **tmp; + char *prompt; - prompt = malloc(1000); - prompt[0] = getenv("USER"); - prompt[1] = "@"; - //prompt[2] = get_hostname(); - home = getenv("HOME"); - prompt[3] = getenv("PWD"); - prompt[4] = ">"; - //ret = ft_calloc(1000, sizeof(char)); - - if (!ft_strncmp(prompt[3], home, ft_strlen(home))) - prompt[3] += ft_strlen(home); - tmp = prompt; - while (*tmp) - { - ft_strlcat(ret, *tmp, ft_strlen(ret) + ft_strlen(*tmp) + 1); - tmp++; - } - free(prompt); - return (ret); + prompt = getenv("USER"); + prompt = ft_strjoin(prompt, "@"); + prompt = ft_strjoin_free(prompt, get_hostname()); + prompt = ft_strjoin_free_s1(prompt, ":"); + prompt = ft_strjoin_free(prompt, get_pwd()); + prompt = ft_strjoin_free_s1(prompt, "$ "); + return (prompt); } - - diff --git a/src/prompt/get_pwd.c b/src/prompt/get_pwd.c new file mode 100644 index 0000000..905e368 --- /dev/null +++ b/src/prompt/get_pwd.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_pwd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/05/02 14:42:00 by adjoly #+# #+# */ +/* Updated: 2024/05/02 15:49:42 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include "libft.h" + +char *get_pwd(void) +{ + char *pwd; + char *home; + + pwd = getenv("PWD"); + home = getenv("HOME"); + if (!ft_strncmp(pwd, home, ft_strlen(home))) + pwd += ft_strlen(home); + pwd = ft_strjoin("~", pwd); + return (pwd); +}