Merge branch 'master' of https://github.com/jzck/42sh
"close #160 close #165"
This commit is contained in:
commit
d45f92afc5
21 changed files with 147 additions and 75 deletions
|
|
@ -215,6 +215,7 @@ job_control/sigttin_handler.c\
|
|||
job_control/sigttou_handler.c\
|
||||
lexer/do_lexer_routine.c\
|
||||
lexer/get_lexer_stack.c\
|
||||
lexer/get_lexer_stack2.c\
|
||||
lexer/get_reserved_words.c\
|
||||
lexer/get_state_global.c\
|
||||
lexer/get_state_redir.c\
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: alao <alao@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2016/02/18 11:13:04 by alao #+# #+# */
|
||||
/* Updated: 2017/03/22 18:19:43 by alao ### ########.fr */
|
||||
/* Updated: 2017/03/23 15:41:32 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -186,5 +186,6 @@ int c_exclusion_folder(t_comp *c);
|
|||
int ft_sstrlen(char **s);
|
||||
char *ft_sstrtostr(char **s, char *sep);
|
||||
char *ft_add_escape(char *str, char to_escape);
|
||||
void c_lst_id(t_comp *c);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2017/01/23 10:35:44 by gwojda #+# #+# */
|
||||
/* Updated: 2017/03/23 11:45:05 by gwojda ### ########.fr */
|
||||
/* Updated: 2017/03/23 16:16:57 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -88,7 +88,14 @@ typedef struct s_key
|
|||
int (*f)(char **str, size_t *pos);
|
||||
} t_key;
|
||||
|
||||
typedef struct s_cpy
|
||||
{
|
||||
int value;
|
||||
int (*f)(char **str, size_t *pos, size_t pos_ref);
|
||||
} t_cpy;
|
||||
|
||||
extern t_key g_keys[];
|
||||
extern t_cpy g_cpy[];
|
||||
|
||||
void ft_reset_tab(char *tabl);
|
||||
void ft_putnc(char c, int n);
|
||||
|
|
@ -130,13 +137,13 @@ size_t ft_hist_len(void);
|
|||
|
||||
int underline_right(char **str, size_t *pos, size_t pos_ref);
|
||||
int underline_left(char **str, size_t *pos, size_t pos_ref);
|
||||
void underline_home(char **str, size_t *pos, size_t pos_ref);
|
||||
void underline_end(char **str, size_t *pos, size_t pos_ref);
|
||||
int underline_home(char **str, size_t *pos, size_t pos_ref);
|
||||
int underline_end(char **str, size_t *pos, size_t pos_ref);
|
||||
int underline_down(char **str, size_t *pos, size_t pos_ref);
|
||||
int underline_up(char **str, size_t *pos, size_t pos_ref);
|
||||
void underline_check_end_of_line(char *str, size_t pos);
|
||||
void reset_term(char **str, size_t *pos);
|
||||
void reset_and_remove_term(char **str, size_t *pos, char *copy_tmp);
|
||||
void underline_down(char **str, size_t *pos, size_t pos_ref);
|
||||
void underline_up(char **str, size_t *pos, size_t pos_ref);
|
||||
|
||||
int ft_read_stdin(char **input);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@
|
|||
/* ::: :::::::: */
|
||||
/* job_control.h :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2016/12/10 16:55:09 by jhalford #+# #+# */
|
||||
/* Updated: 2017/03/22 17:24:08 by jhalford ### ########.fr */
|
||||
/* Updated: 2017/03/23 16:13:56 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */
|
||||
/* Updated: 2017/03/22 22:07:49 by wescande ### ########.fr */
|
||||
/* Updated: 2017/03/23 15:18:36 by jhalford ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -85,6 +85,7 @@ char *stack_to_prompt(t_list *stack);
|
|||
t_lexstate get_state_global(t_lexer *lexer);
|
||||
t_lexstate get_state_redir(t_lexer *lexer);
|
||||
int get_lexer_stack(t_lexer lexer);
|
||||
int get_lexer_stack2(t_lexer lexer);
|
||||
int get_reserved_words(t_list *temp);
|
||||
int isrw_delim(t_type type);
|
||||
int keep_last_type(t_type *type, t_list *token);
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@
|
|||
/* ::: :::::::: */
|
||||
/* ft_sstrsort.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2016/11/03 18:03:37 by jhalford #+# #+# */
|
||||
/* Updated: 2016/11/23 14:46:54 by jhalford ### ########.fr */
|
||||
/* Updated: 2017/03/23 14:40:25 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2017/03/09 16:54:59 by gwojda #+# #+# */
|
||||
/* Updated: 2017/03/22 20:25:19 by alao ### ########.fr */
|
||||
/* Updated: 2017/03/23 15:42:37 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -37,4 +37,5 @@ void c_seek_abs_path(t_comp *c, char *current_word)
|
|||
c_parser(c, c->cpath, c->match);
|
||||
if (c->lst == NULL || c->lst == c->lst->prev)
|
||||
c_exclusion_folder(c);
|
||||
c_lst_id(c);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: alao <alao@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2017/01/09 13:30:57 by alao #+# #+# */
|
||||
/* Updated: 2017/03/16 08:28:03 by alao ### ########.fr */
|
||||
/* Updated: 2017/03/23 15:41:12 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -35,5 +35,6 @@ int c_seek_binary(t_data *s, t_comp *c)
|
|||
c_parser(c, paths[i++], c->rcmd);
|
||||
tmp ? ft_memdel((void *)&tmp) : (0);
|
||||
paths ? ft_sstrfree(paths) : (0);
|
||||
c_lst_id(c);
|
||||
return (0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2017/03/09 15:50:24 by gwojda #+# #+# */
|
||||
/* Updated: 2017/03/22 12:29:40 by alao ### ########.fr */
|
||||
/* Updated: 2017/03/23 15:41:19 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -50,5 +50,6 @@ int c_seek_env(t_comp *c, char *current_word)
|
|||
c_addnode(c, ft_strndup(env[i], ft_strchr(env[i], '=') - env[i]));
|
||||
++i;
|
||||
}
|
||||
c_lst_id(c);
|
||||
return (0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: alao <alao@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2017/01/09 13:31:21 by alao #+# #+# */
|
||||
/* Updated: 2017/03/22 16:02:18 by gwojda ### ########.fr */
|
||||
/* Updated: 2017/03/23 15:42:46 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -105,5 +105,6 @@ int c_seek_files(t_data *s, t_comp *c, char *current_word)
|
|||
if (c->match && ft_strequ(c->match, c->lst->name))
|
||||
c_exclusion_folder(c);
|
||||
}
|
||||
c_lst_id(c);
|
||||
return (0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: alao <alao@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2017/02/16 22:17:10 by alao #+# #+# */
|
||||
/* Updated: 2017/03/22 18:23:04 by alao ### ########.fr */
|
||||
/* Updated: 2017/03/23 16:11:29 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -21,7 +21,7 @@ static size_t ft_strxchr(char *str, char c)
|
|||
size_t rt;
|
||||
|
||||
rt = 0;
|
||||
while(*str)
|
||||
while (*str)
|
||||
{
|
||||
if (*str == c)
|
||||
rt++;
|
||||
|
|
@ -34,7 +34,7 @@ static size_t ft_strxchr(char *str, char c)
|
|||
** Add escape char \ for char to_escape.
|
||||
*/
|
||||
|
||||
char *ft_add_escape(char *str, char to_escape)
|
||||
char *ft_add_escape(char *str, char to_escape)
|
||||
{
|
||||
char *rt;
|
||||
int i;
|
||||
|
|
@ -65,7 +65,7 @@ char *ft_add_escape(char *str, char to_escape)
|
|||
** Support: Return the size of a char**.
|
||||
*/
|
||||
|
||||
int ft_sstrlen(char **s)
|
||||
int ft_sstrlen(char **s)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -79,7 +79,7 @@ int ft_sstrlen(char **s)
|
|||
** Support: Tranform a char** as char* with char*sep in between.
|
||||
*/
|
||||
|
||||
char *ft_sstrtostr(char **s, char *sep)
|
||||
char *ft_sstrtostr(char **s, char *sep)
|
||||
{
|
||||
char *tmp;
|
||||
char *tmp2;
|
||||
|
|
|
|||
|
|
@ -6,33 +6,63 @@
|
|||
/* By: alao <alao@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2017/01/09 13:52:07 by alao #+# #+# */
|
||||
/* Updated: 2017/03/21 14:46:39 by gwojda ### ########.fr */
|
||||
/* Updated: 2017/03/23 16:12:05 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "completion.h"
|
||||
|
||||
void c_lst_id(t_comp *c)
|
||||
{
|
||||
t_clst *lst;
|
||||
int i;
|
||||
|
||||
i = 1;
|
||||
lst = c->lst;
|
||||
if (!lst)
|
||||
return ;
|
||||
lst->cursor = 1;
|
||||
if (!lst)
|
||||
return ;
|
||||
while (1)
|
||||
{
|
||||
lst->id = i;
|
||||
lst = lst->next;
|
||||
++i;
|
||||
if (lst == c->lst)
|
||||
break ;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** Add the matching element to the list
|
||||
*/
|
||||
|
||||
void c_add_to_lst(t_comp *c, t_clst *node)
|
||||
{
|
||||
t_clst *lst;
|
||||
|
||||
lst = c->lst;
|
||||
if (c->lst == NULL)
|
||||
{
|
||||
c->lst = node;
|
||||
node->next = node;
|
||||
node->prev = node;
|
||||
node->cursor = 1;
|
||||
node->id = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
node->id = c->lst->prev->id + 1;
|
||||
c->lst->prev->next = node;
|
||||
node->prev = c->lst->prev;
|
||||
node->next = c->lst;
|
||||
c->lst->prev = node;
|
||||
while (ft_strcmp(lst->name, node->name) < 0)
|
||||
{
|
||||
lst = lst->next;
|
||||
if (lst == c->lst)
|
||||
break ;
|
||||
}
|
||||
lst->prev->next = node;
|
||||
node->prev = lst->prev;
|
||||
node->next = lst;
|
||||
lst->prev = node;
|
||||
if (lst == c->lst && ft_strcmp(lst->name, node->name) > 0)
|
||||
c->lst = node;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
20
42sh/src/lexer/get_lexer_stack2.c
Normal file
20
42sh/src/lexer/get_lexer_stack2.c
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* get_lexer_stack2.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2017/03/23 15:15:46 by jhalford #+# #+# */
|
||||
/* Updated: 2017/03/23 16:12:26 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "minishell.h"
|
||||
|
||||
int get_lexer_stack2(t_lexer lexer)
|
||||
{
|
||||
if (!(lexer.stack && lexer.stack->next))
|
||||
return (0);
|
||||
return (*(int*)lexer.stack->next->content);
|
||||
}
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2017/02/09 22:03:48 by jhalford #+# #+# */
|
||||
/* Updated: 2017/03/23 03:41:34 by wescande ### ########.fr */
|
||||
/* Updated: 2017/03/23 15:17:27 by jhalford ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -36,7 +36,8 @@ int lexer_bquote(t_list **alst, t_lexer *lexer)
|
|||
if (lexer->str[lexer->pos] == 0)
|
||||
return (push(&lexer->stack, BACKSLASH) ? 0 : 0);
|
||||
}
|
||||
token_append(token, lexer, back || token->type == TK_ASSIGNMENT_WORD, back);
|
||||
token_append(token, lexer, back || token->type == TK_ASSIGNMENT_WORD
|
||||
|| get_lexer_stack2(*lexer) == DQUOTE, back);
|
||||
lexer->pos++;
|
||||
return (lexer_lex(alst, lexer));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,16 +6,28 @@
|
|||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2016/12/19 12:45:06 by gwojda #+# #+# */
|
||||
/* Updated: 2017/03/23 11:44:51 by gwojda ### ########.fr */
|
||||
/* Updated: 2017/03/23 16:28:01 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "minishell.h"
|
||||
|
||||
t_cpy g_cpy[] =
|
||||
{
|
||||
{FLECHE_GAUCHE , &underline_left },
|
||||
{FLECHE_DROITE , &underline_right },
|
||||
{FLECHE_HAUT , &underline_up },
|
||||
{FLECHE_BAS , &underline_down },
|
||||
{TOUCHE_HOME , &underline_home },
|
||||
{TOUCHE_END , &underline_end },
|
||||
{0 , 0 },
|
||||
};
|
||||
|
||||
int ft_x(char **str, size_t *pos)
|
||||
{
|
||||
int ret;
|
||||
size_t pos_ref;
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
pos_ref = *pos;
|
||||
ft_strdel(&data_singleton()->line.copy_tmp);
|
||||
|
|
@ -25,21 +37,14 @@ int ft_x(char **str, size_t *pos)
|
|||
while (42)
|
||||
{
|
||||
ret = 0;
|
||||
i = 0;
|
||||
if (read(STDIN, &ret, sizeof(int)) < 0)
|
||||
return (-1);
|
||||
if (ret == FLECHE_GAUCHE && !underline_left(str, pos, pos_ref))
|
||||
return (0);
|
||||
else if (ret == FLECHE_DROITE && !underline_right(str, pos, pos_ref))
|
||||
return (0);
|
||||
else if (ret == TOUCHE_HOME)
|
||||
underline_home(str, pos, pos_ref);
|
||||
else if (ret == TOUCHE_END)
|
||||
underline_end(str, pos, pos_ref);
|
||||
else if (ret == FLECHE_HAUT)
|
||||
underline_up(str, pos, pos_ref);
|
||||
else if (ret == FLECHE_BAS)
|
||||
underline_down(str, pos, pos_ref);
|
||||
else if (ret != FLECHE_DROITE && ret != FLECHE_GAUCHE)
|
||||
while (g_cpy[i].value && g_cpy[i].value != ret)
|
||||
++i;
|
||||
if (g_cpy[i].value && (ret = g_cpy[i].f(str, pos, pos_ref)))
|
||||
return (ret);
|
||||
else
|
||||
break ;
|
||||
}
|
||||
if (data_singleton()->line.copy_tmp && *data_singleton()->line.copy_tmp)
|
||||
|
|
@ -49,8 +54,9 @@ int ft_x(char **str, size_t *pos)
|
|||
|
||||
int ft_c(char **str, size_t *pos)
|
||||
{
|
||||
int ret;
|
||||
size_t pos_ref;
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
pos_ref = *pos;
|
||||
ft_strdel(&data_singleton()->line.copy_tmp);
|
||||
|
|
@ -60,21 +66,14 @@ int ft_c(char **str, size_t *pos)
|
|||
while (42)
|
||||
{
|
||||
ret = 0;
|
||||
i = 0;
|
||||
if (read(STDIN, &ret, sizeof(int)) < 0)
|
||||
return (-1);
|
||||
if (ret == FLECHE_GAUCHE && !underline_left(str, pos, pos_ref))
|
||||
return (0);
|
||||
else if (ret == FLECHE_DROITE && !underline_right(str, pos, pos_ref))
|
||||
return (0);
|
||||
else if (ret == TOUCHE_HOME)
|
||||
underline_home(str, pos, pos_ref);
|
||||
else if (ret == TOUCHE_END)
|
||||
underline_end(str, pos, pos_ref);
|
||||
else if (ret == FLECHE_HAUT)
|
||||
underline_up(str, pos, pos_ref);
|
||||
else if (ret == FLECHE_BAS)
|
||||
underline_down(str, pos, pos_ref);
|
||||
else if (ret != FLECHE_DROITE && ret != FLECHE_GAUCHE)
|
||||
while (g_cpy[i].value && g_cpy[i].value != ret)
|
||||
++i;
|
||||
if (g_cpy[i].value && (ret = g_cpy[i].f(str, pos, pos_ref)))
|
||||
return (ret);
|
||||
else if (!g_cpy[i].value)
|
||||
break ;
|
||||
}
|
||||
reset_term(str, pos);
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@
|
|||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2017/03/23 11:43:40 by gwojda #+# #+# */
|
||||
/* Updated: 2017/03/23 11:45:20 by gwojda ### ########.fr */
|
||||
/* Updated: 2017/03/23 16:21:46 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "minishell.h"
|
||||
|
||||
void underline_down(char **str, size_t *pos, size_t pos_ref)
|
||||
int underline_down(char **str, size_t *pos, size_t pos_ref)
|
||||
{
|
||||
size_t pos_tmp;
|
||||
int i;
|
||||
|
|
@ -36,4 +36,5 @@ void underline_down(char **str, size_t *pos, size_t pos_ref)
|
|||
underline_left(str, pos, pos_ref);
|
||||
--pos_tmp;
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@
|
|||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2017/03/22 23:18:15 by gwojda #+# #+# */
|
||||
/* Updated: 2017/03/22 23:42:27 by gwojda ### ########.fr */
|
||||
/* Updated: 2017/03/23 16:21:53 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "minishell.h"
|
||||
|
||||
void underline_end(char **str, size_t *pos, size_t pos_ref)
|
||||
int underline_end(char **str, size_t *pos, size_t pos_ref)
|
||||
{
|
||||
size_t pos_tmp;
|
||||
|
||||
|
|
@ -32,4 +32,5 @@ void underline_end(char **str, size_t *pos, size_t pos_ref)
|
|||
underline_left(str, pos, pos_ref);
|
||||
--pos_tmp;
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@
|
|||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2017/03/22 23:11:05 by gwojda #+# #+# */
|
||||
/* Updated: 2017/03/22 23:44:44 by gwojda ### ########.fr */
|
||||
/* Updated: 2017/03/23 16:22:01 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "minishell.h"
|
||||
|
||||
void underline_home(char **str, size_t *pos, size_t pos_ref)
|
||||
int underline_home(char **str, size_t *pos, size_t pos_ref)
|
||||
{
|
||||
size_t pos_tmp;
|
||||
|
||||
|
|
@ -29,4 +29,5 @@ void underline_home(char **str, size_t *pos, size_t pos_ref)
|
|||
--pos_tmp;
|
||||
}
|
||||
*pos = pos_tmp;
|
||||
return (0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2017/03/22 22:54:28 by gwojda #+# #+# */
|
||||
/* Updated: 2017/03/22 23:08:58 by gwojda ### ########.fr */
|
||||
/* Updated: 2017/03/23 16:25:19 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -18,7 +18,7 @@ static int reset_term_hard(void)
|
|||
ft_putnc('\b', ft_strlen(data_singleton()->line.copy_tmp));
|
||||
ft_strdel(&data_singleton()->line.copy_tmp);
|
||||
data_singleton()->line.pos_tmp = 0;
|
||||
return (0);
|
||||
return (1);
|
||||
}
|
||||
|
||||
static void left_abs(char **str, size_t *pos)
|
||||
|
|
@ -27,10 +27,12 @@ static void left_abs(char **str, size_t *pos)
|
|||
ft_putchar('\b');
|
||||
data_singleton()->line.pos_tmp = 0;
|
||||
ft_puttermcaps("mr");
|
||||
ft_putstr("\x1b[38;5;196m");
|
||||
data_singleton()->line.copy_tmp = ft_realloc_imput(data_singleton()->
|
||||
line.copy_tmp, (*str)[*pos], data_singleton()->line.pos_tmp);
|
||||
ft_putchar((*str)[*pos]);
|
||||
underline_check_end_of_line(*str, *pos + 1);
|
||||
ft_putstr("\033[22;37m");
|
||||
ft_puttermcaps("me");
|
||||
ft_putchar('\b');
|
||||
}
|
||||
|
|
@ -51,12 +53,12 @@ static void left_mv_back(char **str, size_t *pos)
|
|||
int underline_left(char **str, size_t *pos, size_t pos_ref)
|
||||
{
|
||||
if (!*pos)
|
||||
return (1);
|
||||
return (0);
|
||||
if ((*str)[*pos - 1] == '\n')
|
||||
return (reset_term_hard());
|
||||
if (*pos > pos_ref)
|
||||
left_mv_back(str, pos);
|
||||
else
|
||||
left_abs(str, pos);
|
||||
return (1);
|
||||
return (0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2017/03/22 22:50:52 by gwojda #+# #+# */
|
||||
/* Updated: 2017/03/23 10:59:04 by gwojda ### ########.fr */
|
||||
/* Updated: 2017/03/23 16:25:34 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -18,15 +18,17 @@ static int reset_term_hard(void)
|
|||
ft_putstr(data_singleton()->line.copy_tmp);
|
||||
ft_strdel(&data_singleton()->line.copy_tmp);
|
||||
data_singleton()->line.pos_tmp = 0;
|
||||
return (0);
|
||||
return (1);
|
||||
}
|
||||
|
||||
static void right_abs(char **str, size_t *pos)
|
||||
{
|
||||
ft_puttermcaps("mr");
|
||||
ft_putstr("\x1b[38;5;196m");
|
||||
data_singleton()->line.copy_tmp = ft_realloc_imput(data_singleton()->
|
||||
line.copy_tmp, (*str)[*pos], data_singleton()->line.pos_tmp);
|
||||
ft_putchar((*str)[*pos]);
|
||||
ft_putstr("\033[22;37m");
|
||||
ft_puttermcaps("me");
|
||||
++(data_singleton()->line.pos_tmp);
|
||||
++(*pos);
|
||||
|
|
@ -47,12 +49,12 @@ static void right_mv_back(char **str, size_t *pos)
|
|||
int underline_right(char **str, size_t *pos, size_t pos_ref)
|
||||
{
|
||||
if (!(*pos < ft_strlen(*str)))
|
||||
return (1);
|
||||
return (0);
|
||||
if ((*str)[*pos] == '\n')
|
||||
return (reset_term_hard());
|
||||
if (*pos >= pos_ref)
|
||||
right_abs(str, pos);
|
||||
else
|
||||
right_mv_back(str, pos);
|
||||
return (1);
|
||||
return (0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@
|
|||
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2017/03/23 11:35:48 by gwojda #+# #+# */
|
||||
/* Updated: 2017/03/23 11:39:49 by gwojda ### ########.fr */
|
||||
/* Updated: 2017/03/23 16:22:12 by gwojda ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "minishell.h"
|
||||
|
||||
void underline_up(char **str, size_t *pos, size_t pos_ref)
|
||||
int underline_up(char **str, size_t *pos, size_t pos_ref)
|
||||
{
|
||||
size_t pos_tmp;
|
||||
int i;
|
||||
|
|
@ -33,4 +33,5 @@ void underline_up(char **str, size_t *pos, size_t pos_ref)
|
|||
--i;
|
||||
}
|
||||
*pos = pos_tmp;
|
||||
return (0);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue