summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJozanLeClerc <bousset.rudy@gmail.com>2020-10-01 20:15:33 +0200
committerJozanLeClerc <bousset.rudy@gmail.com>2020-10-01 20:15:33 +0200
commitfecb30e8db01bb59d2f7af7abcae18c98f6b4bbb (patch)
tree111d7022326343afc3567a93a9be85ba399b6303
parentNormed m_minishell (diff)
download42-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
-rw-r--r--Makefile1
-rw-r--r--src/m_mshrc.c1
-rw-r--r--src/m_mshrc.h8
-rw-r--r--src/m_prompt.c71
-rw-r--r--src/m_prompt.h8
-rw-r--r--src/m_prompt_seq.c116
-rw-r--r--src/m_prompt_seq.h25
7 files changed, 157 insertions, 73 deletions
diff --git a/Makefile b/Makefile
index ff72886..44f42c2 100644
--- a/Makefile
+++ b/Makefile
@@ -60,6 +60,7 @@ SRCS_NAME += m_loop_next
SRCS_NAME += m_minishell
SRCS_NAME += m_mshrc
SRCS_NAME += m_prompt
+SRCS_NAME += m_prompt_seq
SRCS_NAME += s_destroy
SRCS_NAME += s_com
SRCS_NAME += s_init
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