diff options
author | JozanLeClerc <bousset.rudy@gmail.com> | 2020-10-01 20:15:33 +0200 |
---|---|---|
committer | JozanLeClerc <bousset.rudy@gmail.com> | 2020-10-01 20:15:33 +0200 |
commit | fecb30e8db01bb59d2f7af7abcae18c98f6b4bbb (patch) | |
tree | 111d7022326343afc3567a93a9be85ba399b6303 /src | |
parent | Normed m_minishell (diff) | |
download | 42-minishell-fecb30e8db01bb59d2f7af7abcae18c98f6b4bbb.tar.gz 42-minishell-fecb30e8db01bb59d2f7af7abcae18c98f6b4bbb.tar.bz2 42-minishell-fecb30e8db01bb59d2f7af7abcae18c98f6b4bbb.tar.xz 42-minishell-fecb30e8db01bb59d2f7af7abcae18c98f6b4bbb.tar.zst 42-minishell-fecb30e8db01bb59d2f7af7abcae18c98f6b4bbb.zip |
Normed m_prompt
Diffstat (limited to 'src')
-rw-r--r-- | src/m_mshrc.c | 1 | ||||
-rw-r--r-- | src/m_mshrc.h | 8 | ||||
-rw-r--r-- | src/m_prompt.c | 71 | ||||
-rw-r--r-- | src/m_prompt.h | 8 | ||||
-rw-r--r-- | src/m_prompt_seq.c | 116 | ||||
-rw-r--r-- | src/m_prompt_seq.h | 25 |
6 files changed, 156 insertions, 73 deletions
diff --git a/src/m_mshrc.c b/src/m_mshrc.c index 40e14a1..41c7bef 100644 --- a/src/m_mshrc.c +++ b/src/m_mshrc.c @@ -29,6 +29,7 @@ uint8_t m_source_mshrc(t_msh *msh) int32_t fd; uint8_t ret; + file[0] = C_NUL; u_get_var_value(home, "$HOME", PATH_MAX, msh); ft_sprintf(file, "%s/%s", home, M_MINISHELLRC); if ((fd = open(file, O_RDONLY)) < 0) diff --git a/src/m_mshrc.h b/src/m_mshrc.h index 75daf15..990ce31 100644 --- a/src/m_mshrc.h +++ b/src/m_mshrc.h @@ -10,12 +10,12 @@ /* */ /* ************************************************************************** */ -#ifndef M_MSHRC_H -#define M_MSHRC_H +#ifndef FT_M_MSHRC_H +# define FT_M_MSHRC_H -#include <stdint.h> +# include <stdint.h> -#include "s_struct.h" +# include "s_struct.h" uint8_t m_source_mshrc(t_msh *msh); diff --git a/src/m_prompt.c b/src/m_prompt.c index 0dd525e..e0b3ed1 100644 --- a/src/m_prompt.c +++ b/src/m_prompt.c @@ -11,89 +11,30 @@ /* ************************************************************************** */ #include <libft.h> +#include <stddef.h> #include <stdint.h> #include <unistd.h> #include <limits.h> #include "d_define.h" #include "m_prompt.h" +#include "m_prompt_seq.h" #include "s_struct.h" #include "u_vars.h" static void m_subst_prompt_rice(char var[], t_msh *msh) { - char tmp[PATH_MAX]; size_t i; - size_t j; i = 0; while (var[i] != C_NUL) { if (var[i] == C_BACKS) { - if (var[i + 1] == '0' && var[i + 2] == '3' && var[i + 3] == '3') - { - (void)ft_memmove(var + i, var + (i + 3), (ft_strlen(var + (i + 3)) + 1) * sizeof(char)); - var[i] = C_ESC; - } - else if (var[i + 1] == 'n') - { - (void)ft_memmove(var + i, var + (i + 1), (ft_strlen(var + (i + 1)) + 1) * sizeof(char)); - var[i] = C_LF; - } - else if (var[i + 1] == 'h' || var[i + 1] == 'H') - { - gethostname(tmp, 255); - (void)ft_memmove(var + i + ft_strlen(tmp), var + (i + 2), (ft_strlen(var + (i + 2)) + 1) * sizeof(char)); - (void)ft_memcpy(var + i, tmp, ft_strlen(tmp) * sizeof(char)); - } - else if (var[i + 1] == 'w') - { - u_get_var_value(tmp, "$PWD", PATH_MAX, msh); - if (tmp[0] != C_NUL) - ft_strsubst_s(var, "\\w", tmp); - else - ft_strsubst_s(var, "\\w", "?"); - } - else if (var[i + 1] == 'W') - { - u_get_var_value(tmp, "$PWD", PATH_MAX, msh); - if (tmp[0] != C_NUL) - { - j = ft_strlen(tmp); - if (j > 1) - { - while (tmp[j] != '/' && j != 0) - j--; - j++; - (void)ft_memmove(tmp, tmp + j, - ((ft_strlen(tmp) - j) + 1) * sizeof(char)); - } - ft_strsubst_s(var, "\\W", tmp); - } - else - ft_strsubst_s(var, "\\w", "?"); - } - else if (var[i + 1] == 'v') - ft_strsubst_s(var, "\\v", M_MSH_VERSION); - else if (var[i + 1] == 's') - ft_strsubst_s(var, "\\s", M_PROGNAME); - else if (var[i + 1] == '?') - { - ft_uitoa_s(tmp, msh->ret); - if (var[i + 2] == '!') - { - if (tmp[0] != '0') - ft_strsubst_s(var, "\\?!", tmp); - else - { - (void)ft_memmove(var + i, var + i + 3, (ft_strlen(var + i + 3) + 1) * sizeof(char)); - i -= 1; - } - } - else - ft_strsubst_s(var, "\\?", tmp); - } + m_prompt_sequences(var, i); + m_prompt_sequences_next(var, i, msh); + m_prompt_sequences_more(var, i, msh); + i = m_prompt_sequences_again(var, i, msh); } i++; } diff --git a/src/m_prompt.h b/src/m_prompt.h index 8aae6f7..235c6e1 100644 --- a/src/m_prompt.h +++ b/src/m_prompt.h @@ -10,12 +10,12 @@ /* */ /* ************************************************************************** */ -#ifndef M_PROMPT_H -#define M_PROMPT_H +#ifndef FT_M_PROMPT_H +# define FT_M_PROMPT_H -#include <stdint.h> +# include <stdint.h> -#include "s_struct.h" +# include "s_struct.h" void m_prompt_psx(uint8_t x, t_msh *msh); diff --git a/src/m_prompt_seq.c b/src/m_prompt_seq.c new file mode 100644 index 0000000..01c0ea4 --- /dev/null +++ b/src/m_prompt_seq.c @@ -0,0 +1,116 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* m_prompt_seq.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */ +/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include <libft.h> +#include <stddef.h> +#include <stdint.h> +#include <unistd.h> +#include <limits.h> + +#include "s_struct.h" +#include "u_vars.h" + +size_t m_prompt_sequences_again(char var[], size_t i, t_msh *msh) +{ + char tmp[PATH_MAX]; + + if (var[i + 1] == '?') + { + tmp[0] = C_NUL; + ft_uitoa_s(tmp, msh->ret); + if (var[i + 2] == '!') + { + if (tmp[0] != '0') + ft_strsubst_s(var, "\\?!", tmp); + else + { + (void)ft_memmove(var + i, var + i + 3, + (ft_strlen(var + i + 3) + 1) * sizeof(char)); + i -= 1; + } + } + else + ft_strsubst_s(var, "\\?", tmp); + } + return (i); +} + +void m_prompt_sequences_more(char var[], size_t i, t_msh *msh) +{ + char tmp[PATH_MAX]; + size_t j; + + if (var[i + 1] == 'W') + { + if (u_get_var_value(tmp, "$PWD", PATH_MAX, msh) == 0) + { + j = ft_strlen(tmp); + if (j > 1) + { + while (tmp[j] != '/' && j != 0) + j--; + j++; + (void)ft_memmove(tmp, tmp + j, + ((ft_strlen(tmp) - j) + 1) * sizeof(char)); + } + ft_strsubst_s(var, "\\W", tmp); + } + else + ft_strsubst_s(var, "\\w", "?"); + } + else if (var[i + 1] == 'v') + ft_strsubst_s(var, "\\v", M_MSH_VERSION); + else if (var[i + 1] == 's') + ft_strsubst_s(var, "\\s", M_PROGNAME); +} + +void m_prompt_sequences_next(char var[], size_t i, t_msh *msh) +{ + char tmp[PATH_MAX]; + + if (var[i + 1] == 'w') + { + if (u_get_var_value(tmp, "$PWD", PATH_MAX, msh) == 0) + ft_strsubst_s(var, "\\w", tmp); + else + ft_strsubst_s(var, "\\w", "?"); + } +} + +void m_prompt_sequences(char var[], size_t i) +{ + char tmp[PATH_MAX]; + + if (var[i + 1] == '0' && var[i + 2] == '3' && var[i + 3] == '3') + { + (void)ft_memmove(var + i, var + (i + 3), + (ft_strlen(var + (i + 3)) + 1) * sizeof(char)); + var[i] = C_ESC; + } + else if (var[i + 1] == 'n') + { + (void)ft_memmove(var + i, var + (i + 1), + (ft_strlen(var + (i + 1)) + 1) * sizeof(char)); + var[i] = C_LF; + } + else if (var[i + 1] == 'h' || var[i + 1] == 'H') + { + tmp[0] = C_NUL; + gethostname(tmp, 255); + if (tmp[0] != C_NUL) + { + (void)ft_memmove(var + i + ft_strlen(tmp), var + (i + 2), + (ft_strlen(var + (i + 2)) + 1) * sizeof(char)); + (void)ft_memcpy(var + i, tmp, ft_strlen(tmp) * sizeof(char)); + } + } +} diff --git a/src/m_prompt_seq.h b/src/m_prompt_seq.h new file mode 100644 index 0000000..113dc73 --- /dev/null +++ b/src/m_prompt_seq.h @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* m_prompt_seq.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */ +/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FT_M_PROMPT_SEQ_H +# define FT_M_PROMPT_SEQ_H + +# include <stddef.h> + +# include "s_struct.h" + +size_t m_prompt_sequences_again(char var[], size_t i, t_msh *msh); +void m_prompt_sequences_more(char var[], size_t i, t_msh *msh); +void m_prompt_sequences_next(char var[], size_t i, t_msh *msh); +void m_prompt_sequences(char var[], size_t i); + +#endif |