diff --git a/42sh/Makefile b/42sh/Makefile index 60e13955..23e13026 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -6,14 +6,14 @@ # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # -# Updated: 2017/03/21 17:18:57 by ariard ### ########.fr # +# Updated: 2017/03/22 14:59:33 by gwojda ### ########.fr # # # # **************************************************************************** # NAME = 42sh CC = gcc -FLAGS = -Wall -Wextra -Werror -fvisibility=hidden #-fsanitize=address +FLAGS = -Wall -Wextra -Werror #-fvisibility=hidden# -fsanitize=address D_FLAGS = -g DELTA = $$(echo "$$(tput cols)-47"|bc) diff --git a/42sh/src/completion/c_find_abspath.c b/42sh/src/completion/c_find_abspath.c index 0148eb76..b60a71e7 100644 --- a/42sh/src/completion/c_find_abspath.c +++ b/42sh/src/completion/c_find_abspath.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/09 16:54:59 by gwojda #+# #+# */ -/* Updated: 2017/03/21 14:47:18 by gwojda ### ########.fr */ +/* Updated: 2017/03/22 15:14:41 by gwojda ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,7 +21,7 @@ void c_seek_abs_path(t_comp *c, char *current_word) char *tmp; int len; - len = ft_strrchr(c->rcmd, '/') - current_word + 1; + len = ft_strrchr(current_word, '/') - current_word + 1; if (len < 0) return ; if (c->cpath) diff --git a/42sh/src/completion/c_init.c b/42sh/src/completion/c_init.c index 5277f08e..ccb5fc6e 100644 --- a/42sh/src/completion/c_init.c +++ b/42sh/src/completion/c_init.c @@ -6,7 +6,7 @@ /* By: alao +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/09 11:21:16 by alao #+# #+# */ -/* Updated: 2017/03/22 14:21:51 by gwojda ### ########.fr */ +/* Updated: 2017/03/22 15:12:03 by gwojda ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,6 +36,8 @@ static char *c_trimmer(char *cmd, int st, int nd) rt = ft_strsub(cmd, st, nd - st); data_singleton()->comp->cutpoint = st; st = 0; + while (rt[st] == ' ') + st++; tmp = ft_strsub(rt, st, ft_strlen(rt) - st); if (st) data_singleton()->comp->between = ft_strsub(rt, 0, st); diff --git a/42sh/src/completion/c_match.c b/42sh/src/completion/c_match.c index c328e604..0fc2d8eb 100644 --- a/42sh/src/completion/c_match.c +++ b/42sh/src/completion/c_match.c @@ -6,36 +6,12 @@ /* By: alao +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/10/15 13:27:14 by alao #+# #+# */ -/* Updated: 2017/03/22 14:21:45 by gwojda ### ########.fr */ +/* Updated: 2017/03/22 15:13:12 by gwojda ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" -/* -** Failsafe by checking if the nearby char are not a < or > for aggregation. -*/ -/* -static int c_chevron(t_comp *c) -{ - size_t pos; - size_t input_len; - - pos = c->ircmd; - input_len = ft_strlen(data_singleton()->line.input); - if (pos >= ft_strlen(c->rcmd)) - pos = ft_strlen(c->rcmd) - (input_len - pos); - while (pos) - { - if (c->rcmd[pos] == '<' || c->rcmd[pos] == '>') - return (1); - --pos; - } - if (c->rcmd[pos] == '<' || c->rcmd[pos] == '>') - return (1); - return (0); -}*/ - /* ** Seek the current word. */ @@ -43,15 +19,20 @@ static int c_chevron(t_comp *c) static char *c_current_words(t_comp *c) { size_t pos; + char *str; - pos = c->ircmd; - while (pos && c->rcmd[pos] != ' ' && c->rcmd[pos] != '<' - && c->rcmd[pos] != '>' && c->rcmd[pos] != '\n') + (void)c; + pos = data_singleton()->line.pos; + str = data_singleton()->line.input; + DG("pos = \"%zu\"", pos); + while (pos && str[pos] != ' ' && str[pos] != '<' + && str[pos] != '>' && str[pos] != '\n' && str[pos] != ';') --pos; - if (c->rcmd[pos] == ' ' || c->rcmd[pos] == '<' - || c->rcmd[pos] == '>' || c->rcmd[pos] == '\n') + if (str[pos] == ' ' || str[pos] == '<' + || str[pos] == '>' || str[pos] == '\n' || str[pos] == ';') ++pos; - return (c->rcmd + pos); + DG("pos = \"%zu\"", pos); + return (str + pos); } /* @@ -62,13 +43,14 @@ int c_matching(t_data *s, t_comp *c) { char *current_word; + DG("c->rcmd = \"%s\"", c->rcmd); current_word = c_current_words(c); + DG("current_word = \"%s\"", current_word); if (ft_strchr(c->rcmd, '/')) c_seek_abs_path(c, current_word); else if (ft_strchr(c->rcmd, '$')) c_seek_env(c, current_word); - else if (c->rcmd[0] != '.' && !(ft_strchr(c->rcmd, ' '))) -// else if (c->rcmd[0] != '.' && !(ft_strchr(c->rcmd, ' ')) && !c_chevron(c)) + else if (c->rcmd[0] != '.' && !(ft_strchr(c->rcmd, ' '))) c_seek_binary(s, c); else c_seek_files(s, c, current_word); diff --git a/42sh/src/completion/c_match_glob.c b/42sh/src/completion/c_match_glob.c index 078c5b12..016473cb 100644 --- a/42sh/src/completion/c_match_glob.c +++ b/42sh/src/completion/c_match_glob.c @@ -6,7 +6,7 @@ /* By: gwojda +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/08 17:20:01 by gwojda #+# #+# */ -/* Updated: 2017/03/22 11:52:18 by alao ### ########.fr */ +/* Updated: 2017/03/22 14:51:44 by gwojda ### ########.fr */ /* */ /* ************************************************************************** */ @@ -101,7 +101,7 @@ int c_glob_matching(void) if ((pos = c_glob_pos(NULL, 0)) == -1) return (0); current_word = ft_strdupi_w(str + pos); - if (current_word[0] == '$') + if (current_word[0] == '$' || current_word[0] == '~') { free(current_word); return (0);