This commit is contained in:
wescande 2017-03-23 03:26:25 +01:00
commit 54f0610bd1
35 changed files with 390 additions and 699 deletions

View file

@ -6,14 +6,14 @@
# By: wescande <wescande@student.42.fr> +#+ +:+ +#+ # # By: wescande <wescande@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ # # +#+#+#+#+#+ +#+ #
# Created: 2016/08/29 21:32:58 by wescande #+# #+# # # Created: 2016/08/29 21:32:58 by wescande #+# #+# #
# Updated: 2017/03/23 01:59:31 by wescande ### ########.fr # # Updated: 2017/03/23 03:25:35 by wescande ### ########.fr #
# # # #
# **************************************************************************** # # **************************************************************************** #
NAME = 42sh NAME = 42sh
CC = gcc CC = gcc
FLAGS = -Wall -Wextra -Werror -fsanitize=address FLAGS = -Wall -Wextra -Werror #-fvisibility=hidden #-fsanitize=address
D_FLAGS = -g D_FLAGS = -g
DELTA = $$(echo "$$(tput cols)-47"|bc) DELTA = $$(echo "$$(tput cols)-47"|bc)
@ -267,8 +267,12 @@ line_editing/print_and_del.c\
line_editing/queue.c\ line_editing/queue.c\
line_editing/readline.c\ line_editing/readline.c\
line_editing/resize.c\ line_editing/resize.c\
line_editing/underline_end.c\
line_editing/underline_function.c\ line_editing/underline_function.c\
line_editing/underline_home.c\
line_editing/underline_left.c\
line_editing/underline_reset.c\ line_editing/underline_reset.c\
line_editing/underline_right.c\
main/data_exit.c\ main/data_exit.c\
main/data_init.c\ main/data_init.c\
main/data_singleton.c\ main/data_singleton.c\

View file

@ -6,7 +6,7 @@
/* By: sbenning <sbenning@student.42.fr> +#+ +:+ +#+ */ /* By: sbenning <sbenning@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/08 16:34:51 by sbenning #+# #+# */ /* Created: 2016/12/08 16:34:51 by sbenning #+# #+# */
/* Updated: 2017/03/20 12:33:06 by gwojda ### ########.fr */ /* Updated: 2017/03/23 00:03:16 by jhalford ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -27,7 +27,7 @@ typedef struct s_curs t_curs;
** Cursor data : cursor's coordonate and windows size ** Cursor data : cursor's coordonate and windows size
*/ */
struct s_curs struct s_curs
{ {
int co; int co;
int li; int li;

View file

@ -6,7 +6,7 @@
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */ /* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/01/23 10:35:44 by gwojda #+# #+# */ /* Created: 2017/01/23 10:35:44 by gwojda #+# #+# */
/* Updated: 2017/03/22 21:14:55 by gwojda ### ########.fr */ /* Updated: 2017/03/23 00:30:06 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -53,7 +53,7 @@
# define TOUCHE_F5 892427035 # define TOUCHE_F5 892427035
# define TOUCHE_F6 925981467 # define TOUCHE_F6 925981467
# define SIZE_LINE 512 # define SIZE_LINE 16384
# define CORRUPT 1 # define CORRUPT 1
@ -127,11 +127,14 @@ int ft_nb_of_line(char *str, size_t pos);
int ft_get_size_prev(char *str, size_t pos); int ft_get_size_prev(char *str, size_t pos);
void sigwinch_resize(int sig); void sigwinch_resize(int sig);
size_t ft_hist_len(void); size_t ft_hist_len(void);
void underline_right(char **str, size_t *pos, size_t pos_ref);
void underline_left(char **str, size_t *pos, size_t pos_ref); 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);
void underline_check_end_of_line(char *str, size_t pos);
void reset_term(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 reset_and_remove_term(char **str, size_t *pos, char *copy_tmp);
int reset_term_hard(void);
int ft_read_stdin(char **input); int ft_read_stdin(char **input);

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/22 17:22:51 by ariard #+# #+# */ /* Created: 2017/03/22 17:22:51 by ariard #+# #+# */
/* Updated: 2017/03/22 17:25:11 by ariard ### ########.fr */ /* Updated: 2017/03/23 00:32:27 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */ /* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/05 11:53:36 by jhalford #+# #+# */ /* Created: 2016/12/05 11:53:36 by jhalford #+# #+# */
/* Updated: 2017/01/11 14:42:45 by jhalford ### ########.fr */ /* Updated: 2017/03/22 23:19:24 by jhalford ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/07 11:29:54 by ariard #+# #+# */ /* Created: 2017/03/07 11:29:54 by ariard #+# #+# */
/* Updated: 2017/03/21 18:14:45 by ariard ### ########.fr */ /* Updated: 2017/03/22 21:54:40 by jhalford ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */ /* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/08/03 16:17:21 by jhalford #+# #+# */ /* Created: 2016/08/03 16:17:21 by jhalford #+# #+# */
/* Updated: 2017/03/17 20:36:22 by wescande ### ########.fr */ /* Updated: 2017/03/22 22:21:21 by jhalford ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/07 11:01:15 by ariard #+# #+# */ /* Created: 2017/03/07 11:01:15 by ariard #+# #+# */
/* Updated: 2017/03/21 15:43:51 by jhalford ### ########.fr */ /* Updated: 2017/03/22 23:12:37 by jhalford ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: ariard <marvin@42.fr> +#+ +:+ +#+ */ /* By: ariard <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/01 16:10:54 by ariard #+# #+# */ /* Created: 2016/12/01 16:10:54 by ariard #+# #+# */
/* Updated: 2017/03/07 11:30:02 by ariard ### ########.fr */ /* Updated: 2017/03/22 22:12:03 by jhalford ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

525
42sh/log
View file

@ -1,462 +1,63 @@
On branch master env lvl 2
Your branch is up-to-date with 'origin/master'. env lvl 3
Changes to be committed: env lvl 4
(use "git reset HEAD <file>..." to unstage) env lvl 5
env lvl 6
deleted: libft/objs/btree/btree_apply_by_level.d env lvl 7
deleted: libft/objs/btree/btree_apply_infix.d env lvl 8
deleted: libft/objs/btree/btree_apply_prefix.d env lvl 7
deleted: libft/objs/btree/btree_apply_suffix.d env lvl 8
deleted: libft/objs/btree/btree_create_node.d env lvl 9
deleted: libft/objs/btree/btree_del.d env lvl 6
deleted: libft/objs/btree/btree_delone.d env lvl 7
deleted: libft/objs/btree/btree_insert_data.d env lvl 8
deleted: libft/objs/btree/btree_level_count.d env lvl 9
deleted: libft/objs/btree/btree_map.d env lvl 8
deleted: libft/objs/btree/btree_print.d env lvl 9
deleted: libft/objs/btree/btree_search_item.d env lvl 10
deleted: libft/objs/char/ft_isalnum.d env lvl 5
deleted: libft/objs/char/ft_isalpha.d env lvl 6
deleted: libft/objs/char/ft_isascii.d env lvl 7
deleted: libft/objs/char/ft_isdigit.d env lvl 8
deleted: libft/objs/char/ft_isprint.d env lvl 9
deleted: libft/objs/char/ft_tolower.d env lvl 8
deleted: libft/objs/char/ft_toupper.d env lvl 9
deleted: libft/objs/cliopts/cliopts_get.d env lvl 10
deleted: libft/objs/cliopts/cliopts_has.d env lvl 7
deleted: libft/objs/color/ft_color_mk.d env lvl 8
deleted: libft/objs/color/ft_color_mkif.d env lvl 9
deleted: libft/objs/color/ft_color_reset.d env lvl 10
deleted: libft/objs/color/ft_color_set.d env lvl 9
deleted: libft/objs/dlst/ft_dlstadd_after.d env lvl 10
deleted: libft/objs/dlst/ft_dlstadd_before.d env lvl 11
deleted: libft/objs/dlst/ft_dlstdel.d env lvl 4
deleted: libft/objs/dlst/ft_dlstdelone.d env lvl 5
deleted: libft/objs/dlst/ft_dlstlast.d env lvl 6
deleted: libft/objs/dlst/ft_dlstnew.d env lvl 7
deleted: libft/objs/dlst/ft_dlstrtostr.d env lvl 8
deleted: libft/objs/dlst/ft_dlstsize.d env lvl 9
deleted: libft/objs/error/error.d env lvl 8
deleted: libft/objs/ft_printf/ft_conversion.d env lvl 9
deleted: libft/objs/ft_printf/ft_fmt_simplify.d env lvl 10
deleted: libft/objs/ft_printf/ft_fmt_validate_conv.d env lvl 7
deleted: libft/objs/ft_printf/ft_fmt_validate_flags.d env lvl 8
deleted: libft/objs/ft_printf/ft_fmt_validate_mod.d env lvl 9
deleted: libft/objs/ft_printf/ft_printf.d env lvl 10
deleted: libft/objs/ft_printf/ft_printf_color.d env lvl 9
deleted: libft/objs/ft_printf/ft_printf_parse.d env lvl 10
deleted: libft/objs/ft_printf/ft_transform.d env lvl 11
deleted: libft/objs/ft_printf/ft_vprintf.d env lvl 6
deleted: libft/objs/ft_printf/lib_fmt.d env lvl 7
deleted: libft/objs/ft_printf/lib_fmt_error.d env lvl 8
deleted: libft/objs/ft_printf/lib_pad.d env lvl 9
deleted: libft/objs/ft_printf/lib_pad_sharp.d env lvl 10
deleted: libft/objs/get_next_line/get_next_line.d env lvl 9
deleted: libft/objs/lst/ft_id.d env lvl 10
deleted: libft/objs/lst/ft_lst_at.d env lvl 11
deleted: libft/objs/lst/ft_lst_bfree.d env lvl 8
deleted: libft/objs/lst/ft_lst_cfree.d env lvl 9
deleted: libft/objs/lst/ft_lst_delif.d env lvl 10
deleted: libft/objs/lst/ft_lst_delsub.d env lvl 11
deleted: libft/objs/lst/ft_lst_filter.d env lvl 10
deleted: libft/objs/lst/ft_lst_find.d env lvl 11
deleted: libft/objs/lst/ft_lst_merge.d env lvl 12
deleted: libft/objs/lst/ft_lst_order_delsub.d
deleted: libft/objs/lst/ft_lst_print.d
deleted: libft/objs/lst/ft_lst_print2.d
deleted: libft/objs/lst/ft_lst_removeif.d
deleted: libft/objs/lst/ft_lst_reverse.d
deleted: libft/objs/lst/ft_lst_size.d
deleted: libft/objs/lst/ft_lst_sorted_insert.d
deleted: libft/objs/lst/ft_lst_sorted_merge.d
deleted: libft/objs/lst/ft_lstadd.d
deleted: libft/objs/lst/ft_lstdel.d
deleted: libft/objs/lst/ft_lstdelone.d
deleted: libft/objs/lst/ft_lsteadd.d
deleted: libft/objs/lst/ft_lstiter.d
deleted: libft/objs/lst/ft_lstlast.d
deleted: libft/objs/lst/ft_lstmap.d
deleted: libft/objs/lst/ft_lstnadd.d
deleted: libft/objs/lst/ft_lstnew.d
deleted: libft/objs/lst/ft_lstnew_range.d
deleted: libft/objs/lst/ft_lstsort.d
deleted: libft/objs/lst/pop.d
deleted: libft/objs/lst/push.d
deleted: libft/objs/math/ft_addrcmp.d
deleted: libft/objs/math/ft_ilen.d
deleted: libft/objs/math/ft_ilen_base.d
deleted: libft/objs/math/ft_itoa.d
deleted: libft/objs/math/ft_itoa_base.d
deleted: libft/objs/math/ft_lllen.d
deleted: libft/objs/math/ft_lllen_base.d
deleted: libft/objs/math/ft_lltoa_base.d
deleted: libft/objs/math/ft_uilen.d
deleted: libft/objs/math/ft_uitoa_base.d
deleted: libft/objs/math/ft_ulltoa_base.d
deleted: libft/objs/math/id.d
deleted: libft/objs/mem/ft_bzero.d
deleted: libft/objs/mem/ft_malloc.d
deleted: libft/objs/mem/ft_memalloc.d
deleted: libft/objs/mem/ft_memccpy.d
deleted: libft/objs/mem/ft_memchr.d
deleted: libft/objs/mem/ft_memcmp.d
deleted: libft/objs/mem/ft_memcpy.d
deleted: libft/objs/mem/ft_memdel.d
deleted: libft/objs/mem/ft_memmove.d
deleted: libft/objs/mem/ft_memset.d
deleted: libft/objs/mem/ft_realloc.d
deleted: libft/objs/path/ft_path_notdir.d
deleted: libft/objs/printing/ft_putchar.d
deleted: libft/objs/printing/ft_putendl.d
deleted: libft/objs/printing/ft_putnbr.d
deleted: libft/objs/printing/ft_putstr.d
deleted: libft/objs/sstr/ft_sstradd.d
deleted: libft/objs/sstr/ft_sstrcat.d
deleted: libft/objs/sstr/ft_sstrdel.d
deleted: libft/objs/sstr/ft_sstrdup.d
deleted: libft/objs/sstr/ft_sstrfree.d
deleted: libft/objs/sstr/ft_sstrprint.d
deleted: libft/objs/sstr/ft_sstrprint_fd.d
deleted: libft/objs/sstr/ft_sstrsort.d
deleted: libft/objs/sstr/ft_sstrstr.d
deleted: libft/objs/str/ft_atoi.d
deleted: libft/objs/str/ft_convert_base.d
deleted: libft/objs/str/ft_putaddr_fd.d
deleted: libft/objs/str/ft_split_whitespaces.d
deleted: libft/objs/str/ft_str3join.d
deleted: libft/objs/str/ft_strappend.d
deleted: libft/objs/str/ft_strbetween.d
deleted: libft/objs/str/ft_strcat.d
deleted: libft/objs/str/ft_strcatf.d
deleted: libft/objs/str/ft_strchr.d
deleted: libft/objs/str/ft_strchrcpy.d
deleted: libft/objs/str/ft_strclr.d
deleted: libft/objs/str/ft_strcmp.d
deleted: libft/objs/str/ft_strcpy.d
deleted: libft/objs/str/ft_strcspn.d
deleted: libft/objs/str/ft_strcut.d
deleted: libft/objs/str/ft_strdel.d
deleted: libft/objs/str/ft_strdup.d
deleted: libft/objs/str/ft_strdupchr.d
deleted: libft/objs/str/ft_strduptr.d
deleted: libft/objs/str/ft_strequ.d
deleted: libft/objs/str/ft_strinsert.d
deleted: libft/objs/str/ft_stris.d
deleted: libft/objs/str/ft_striter.d
deleted: libft/objs/str/ft_striteri.d
deleted: libft/objs/str/ft_strjoin.d
deleted: libft/objs/str/ft_strlcat.d
deleted: libft/objs/str/ft_strlen.d
deleted: libft/objs/str/ft_strlenchr.d
deleted: libft/objs/str/ft_strmap.d
deleted: libft/objs/str/ft_strmapi.d
deleted: libft/objs/str/ft_strncat.d
deleted: libft/objs/str/ft_strncmp.d
deleted: libft/objs/str/ft_strncpy.d
deleted: libft/objs/str/ft_strnequ.d
deleted: libft/objs/str/ft_strnew.d
deleted: libft/objs/str/ft_strnstr.d
deleted: libft/objs/str/ft_strrchr.d
deleted: libft/objs/str/ft_strreplace.d
deleted: libft/objs/str/ft_strrev.d
deleted: libft/objs/str/ft_strsplit.d
deleted: libft/objs/str/ft_strstr.d
deleted: libft/objs/str/ft_strsub.d
deleted: libft/objs/str/ft_strtok.d
deleted: libft/objs/str/ft_strtrim.d
deleted: libft/objs/sys/dup2_close.d
deleted: libft/objs/sys/fd_replace.d
deleted: libft/objs/sys/ft_getenv.d
deleted: libft/objs/sys/ft_xattr_count.d
deleted: libft/objs/sys/ft_xattr_print.d
deleted: libft/objs/time/ft_mytime_free.d
deleted: libft/objs/time/ft_mytime_get.d
deleted: libft/objs/time/ft_time_isrecent.d
deleted: objs/builtin/bt_read_get.d
deleted: objs/builtin/bt_read_term.d
deleted: objs/builtin/builtin_cd.d
deleted: objs/builtin/builtin_echo.d
deleted: objs/builtin/builtin_env.d
deleted: objs/builtin/builtin_exit.d
deleted: objs/builtin/builtin_export.d
deleted: objs/builtin/builtin_hash.d
deleted: objs/builtin/builtin_history.d
deleted: objs/builtin/builtin_math.d
deleted: objs/builtin/builtin_read.d
deleted: objs/builtin/builtin_return_status.d
deleted: objs/builtin/builtin_setenv.d
deleted: objs/builtin/builtin_unset.d
deleted: objs/builtin/builtin_unsetenv.d
deleted: objs/builtin/error_msg.d
deleted: objs/builtin/is_builtin.d
deleted: objs/completion/c_arrow.d
deleted: objs/completion/c_clear.d
deleted: objs/completion/c_find_abspath.d
deleted: objs/completion/c_find_binary.d
deleted: objs/completion/c_find_env.d
deleted: objs/completion/c_find_files.d
deleted: objs/completion/c_init.d
deleted: objs/completion/c_match.d
deleted: objs/completion/c_match_glob.d
deleted: objs/completion/c_match_update.d
deleted: objs/completion/c_misc.d
deleted: objs/completion/c_output.d
deleted: objs/completion/c_parser.d
deleted: objs/completion/c_pathsolver.d
deleted: objs/completion/c_printer.d
deleted: objs/completion/c_sizing.d
deleted: objs/completion/c_terminal.d
deleted: objs/completion/completion.d
deleted: objs/exec/ast_free.d
deleted: objs/exec/bad_fd.d
deleted: objs/exec/error_badidentifier.d
deleted: objs/exec/exec_ampersand.d
deleted: objs/exec/exec_and_if.d
deleted: objs/exec/exec_bang.d
deleted: objs/exec/exec_case_branch.d
deleted: objs/exec/exec_elif.d
deleted: objs/exec/exec_else.d
deleted: objs/exec/exec_leaf.d
deleted: objs/exec/exec_or_if.d
deleted: objs/exec/exec_pipe.d
deleted: objs/exec/exec_reset.d
deleted: objs/exec/exec_semi.d
deleted: objs/exec/exec_var.d
deleted: objs/exec/fd_is_valid.d
deleted: objs/exec/ft_exec.d
deleted: objs/exec/ft_findexec.d
deleted: objs/exec/is_function.d
deleted: objs/exec/mark_process_status.d
deleted: objs/exec/node_copy.d
deleted: objs/exec/pfree_cmd.d
deleted: objs/exec/pfree_cond.d
deleted: objs/exec/pfree_func.d
deleted: objs/exec/pfree_list.d
deleted: objs/exec/pfree_subshell.d
deleted: objs/exec/plaunch_brace.d
deleted: objs/exec/plaunch_builtin.d
deleted: objs/exec/plaunch_case.d
deleted: objs/exec/plaunch_empty.d
deleted: objs/exec/plaunch_file.d
deleted: objs/exec/plaunch_for.d
deleted: objs/exec/plaunch_function.d
deleted: objs/exec/plaunch_if.d
deleted: objs/exec/plaunch_subshell.d
deleted: objs/exec/plaunch_until.d
deleted: objs/exec/plaunch_while.d
deleted: objs/exec/process_launch.d
deleted: objs/exec/process_redirect.d
deleted: objs/exec/process_resetfds.d
deleted: objs/exec/process_set.d
deleted: objs/exec/process_setgroup.d
deleted: objs/exec/process_setsig.d
deleted: objs/exec/pset_brace.d
deleted: objs/exec/pset_case.d
deleted: objs/exec/pset_cmd.d
deleted: objs/exec/pset_for.d
deleted: objs/exec/pset_if.d
deleted: objs/exec/pset_subshell.d
deleted: objs/exec/pset_until.d
deleted: objs/exec/pset_while.d
deleted: objs/exec/redir_copy.d
deleted: objs/exec/redir_free.d
deleted: objs/exec/redirect_dgreat.d
deleted: objs/exec/redirect_dless.d
deleted: objs/exec/redirect_great.d
deleted: objs/exec/redirect_greatand.d
deleted: objs/exec/redirect_less.d
deleted: objs/exec/redirect_lessand.d
deleted: objs/exec/set_exitstatus.d
deleted: objs/exec/token_to_argv.d
deleted: objs/glob/command_getoutput.d
deleted: objs/glob/dir_glob.d
deleted: objs/glob/esc_print.d
deleted: objs/glob/expand_bquote.d
deleted: objs/glob/expand_brace.d
deleted: objs/glob/expand_esc.d
deleted: objs/glob/expand_home.d
deleted: objs/glob/expand_var.d
deleted: objs/glob/ft_strsplit_esc.d
deleted: objs/glob/ft_strsplit_spe.d
deleted: objs/glob/gen_tab_esc.d
deleted: objs/glob/glob.d
deleted: objs/glob/is_char_esc.d
deleted: objs/glob/lib_perso/ft_ld_back.d
deleted: objs/glob/lib_perso/ft_ld_clear.d
deleted: objs/glob/lib_perso/ft_ld_copy.d
deleted: objs/glob/lib_perso/ft_ld_del.d
deleted: objs/glob/lib_perso/ft_ld_front.d
deleted: objs/glob/lib_perso/ft_ld_new.d
deleted: objs/glob/lib_perso/ft_ld_order.d
deleted: objs/glob/lib_perso/ft_ld_pushback.d
deleted: objs/glob/lib_perso/ft_ld_pushfront.d
deleted: objs/glob/lib_perso/ft_ld_reverse.d
deleted: objs/glob/lib_perso/ft_ld_size.d
deleted: objs/glob/lib_perso/ft_ld_swap.d
deleted: objs/glob/lib_perso/ft_ld_to_tab.d
deleted: objs/glob/lib_perso/ft_memrealloc.d
deleted: objs/glob/lib_perso/ft_strjoinf.d
deleted: objs/glob/lib_perso/ft_strsubf.d
deleted: objs/glob/lib_perso/ft_tabdel.d
deleted: objs/glob/lib_perso/ft_tablen.d
deleted: objs/glob/match_pattern.d
deleted: objs/glob/tab_esc_copy.d
deleted: objs/glob/word_is_assignment.d
deleted: objs/hash_table/ft_add_hash.d
deleted: objs/hash_table/hash.d
deleted: objs/hash_table/hash_free.d
deleted: objs/hash_table/hash_str.d
deleted: objs/hash_table/is_hash.d
deleted: objs/history/add_str_in_history.d
deleted: objs/history/history.d
deleted: objs/history/history_parsing.d
deleted: objs/history/history_parsing_toolz.d
deleted: objs/history/history_parsing_toolz_2.d
deleted: objs/history/list_toolz.d
deleted: objs/history/surch_in_history.d
deleted: objs/job_control/builtin_bg.d
deleted: objs/job_control/builtin_fg.d
deleted: objs/job_control/builtin_jobs.d
deleted: objs/job_control/do_job_notification.d
deleted: objs/job_control/has_running_job.d
deleted: objs/job_control/has_stopped_job.d
deleted: objs/job_control/job_addprocess.d
deleted: objs/job_control/job_cmp_id.d
deleted: objs/job_control/job_format.d
deleted: objs/job_control/job_format_head.d
deleted: objs/job_control/job_free.d
deleted: objs/job_control/job_getprocess.d
deleted: objs/job_control/job_getrank.d
deleted: objs/job_control/job_hup_all.d
deleted: objs/job_control/job_is_completed.d
deleted: objs/job_control/job_is_stopped.d
deleted: objs/job_control/job_notify_change.d
deleted: objs/job_control/job_notify_new.d
deleted: objs/job_control/job_remove.d
deleted: objs/job_control/job_run.d
deleted: objs/job_control/job_update_id.d
deleted: objs/job_control/job_update_status.d
deleted: objs/job_control/job_wait.d
deleted: objs/job_control/mark_job_as_running.d
deleted: objs/job_control/pprint_brace.d
deleted: objs/job_control/pprint_case.d
deleted: objs/job_control/pprint_cmd.d
deleted: objs/job_control/pprint_for.d
deleted: objs/job_control/pprint_function.d
deleted: objs/job_control/pprint_if.d
deleted: objs/job_control/pprint_subshell.d
deleted: objs/job_control/pprint_until.d
deleted: objs/job_control/pprint_while.d
deleted: objs/job_control/process_cmp_pid.d
deleted: objs/job_control/process_format.d
deleted: objs/job_control/process_free.d
deleted: objs/job_control/put_job_in_background.d
deleted: objs/job_control/put_job_in_foreground.d
deleted: objs/job_control/sigchld_handler.d
deleted: objs/job_control/sigint_handler.d
deleted: objs/job_control/sigtstp_handler.d
deleted: objs/job_control/sigttin_handler.d
deleted: objs/job_control/sigttou_handler.d
deleted: objs/lexer/do_lexer_routine.d
deleted: objs/lexer/get_lexer_stack.d
deleted: objs/lexer/get_reserved_words.d
deleted: objs/lexer/get_state_global.d
deleted: objs/lexer/get_state_redir.d
deleted: objs/lexer/insert_newline.d
deleted: objs/lexer/isrw_delim.d
deleted: objs/lexer/keep_last_type.d
deleted: objs/lexer/lexer_backslash.d
deleted: objs/lexer/lexer_bquote.d
deleted: objs/lexer/lexer_curly_braces.d
deleted: objs/lexer/lexer_default.d
deleted: objs/lexer/lexer_delim.d
deleted: objs/lexer/lexer_destroy.d
deleted: objs/lexer/lexer_dquote.d
deleted: objs/lexer/lexer_end.d
deleted: objs/lexer/lexer_great.d
deleted: objs/lexer/lexer_heredoc.d
deleted: objs/lexer/lexer_init.d
deleted: objs/lexer/lexer_less.d
deleted: objs/lexer/lexer_lex.d
deleted: objs/lexer/lexer_newline.d
deleted: objs/lexer/lexer_number.d
deleted: objs/lexer/lexer_paren.d
deleted: objs/lexer/lexer_quote.d
deleted: objs/lexer/lexer_sep.d
deleted: objs/lexer/lexer_word.d
deleted: objs/lexer/token_append.d
deleted: objs/lexer/token_cmp_type.d
deleted: objs/lexer/token_free.d
deleted: objs/lexer/token_init.d
deleted: objs/lexer/token_print.d
deleted: objs/line_editing/completion.d
deleted: objs/line_editing/control_features.d
deleted: objs/line_editing/copy_cut_paste.d
deleted: objs/line_editing/ft_prompt.d
deleted: objs/line_editing/get_key.d
deleted: objs/line_editing/home_end.d
deleted: objs/line_editing/init_history.d
deleted: objs/line_editing/init_line.d
deleted: objs/line_editing/init_termcaps.d
deleted: objs/line_editing/lib_line_editing/ft_nb_line.d
deleted: objs/line_editing/lib_line_editing/tool_line.d
deleted: objs/line_editing/lib_line_editing/tool_line_2.d
deleted: objs/line_editing/lib_line_editing/toolz.d
deleted: objs/line_editing/lib_line_editing/toolz2.d
deleted: objs/line_editing/lib_line_editing/toolz_parseur.d
deleted: objs/line_editing/lib_line_editing/toolz_termcaps.d
deleted: objs/line_editing/move_left_and_right.d
deleted: objs/line_editing/move_to_word.d
deleted: objs/line_editing/move_up_and_down.d
deleted: objs/line_editing/print_and_del.d
deleted: objs/line_editing/queue.d
deleted: objs/line_editing/readline.d
deleted: objs/line_editing/resize.d
deleted: objs/main/data_exit.d
deleted: objs/main/data_init.d
deleted: objs/main/data_singleton.d
deleted: objs/main/ft_putast.d
deleted: objs/main/main.d
deleted: objs/main/shell_init.d
deleted: objs/parser/add_bang.d
deleted: objs/parser/add_case.d
deleted: objs/parser/add_cmd.d
deleted: objs/parser/add_condition.d
deleted: objs/parser/add_func.d
deleted: objs/parser/add_loop.d
deleted: objs/parser/add_number.d
deleted: objs/parser/add_redir.d
deleted: objs/parser/add_sep.d
deleted: objs/parser/add_subshell.d
deleted: objs/parser/aggregate_sym.d
deleted: objs/parser/build_tree.d
deleted: objs/parser/do_parser_routine.d
deleted: objs/parser/error_syntax.d
deleted: objs/parser/eval_sym.d
deleted: objs/parser/ft_parse.d
deleted: objs/parser/heredoc_parser.d
deleted: objs/parser/parser_destroy.d
deleted: objs/parser/parser_init.d
deleted: objs/parser/pop_stack.d
deleted: objs/parser/produce_sym.d
deleted: objs/parser/push_stack.d
deleted: objs/parser/read_stack.d
deleted: objs/parser/redir_init.d
deleted: objs/parser/stack_init.d
deleted: objs/parser/sym_free.d
deleted: objs/parser/tree_func_free.d
deleted: objs/parser/tree_wrapper.d
modified: src/parser/add_bang.c
modified: src/parser/add_case.c
modified: src/parser/add_condition.c
modified: src/parser/add_loop.c
modified: src/parser/add_number.c
modified: src/parser/add_sep.c
modified: src/parser/add_subshell.c
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: log

View file

@ -6,103 +6,60 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/17 18:54:00 by ariard #+# #+# */ /* Created: 2017/03/17 18:54:00 by ariard #+# #+# */
/* Updated: 2017/03/21 18:08:31 by ariard ### ########.fr */ /* Updated: 2017/03/23 01:08:14 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "minishell.h" #include "minishell.h"
#define MATHERR_0 "math : invalid number of arguments" #define MATHERR_0 "usage: math variable operator(+-/*%) operand"
#define MATHERR_1 "math : invalid variable name" #define MATHERR_2 "math: %c: invalid operator"
#define MATHERR_2 "math : invalid operator" #define MATHERR_3 "math: %s: operand must be digits only"
#define MATHERR_3 "math : invalid operand" #define MATHERR_4 "math: division by 0"
#define MATHERR_4 "math : division by 0" #define MATHERR_5 "math: modulo by 0"
static int init_math(char **var, char **value, char **operator, static char *do_math(char *value, char operator, char *operand)
char **operand)
{
*var = NULL;
*value = NULL;
*operator = NULL;
*operand = NULL;
return (0);
}
static int get_value(char *var, char **value)
{
char *temp;
char *esc;
int ret;
esc = ft_strnew((ft_strlen(var) >> 3) + 1);
ret = word_is_assignment((char *[]) {var, (esc + 1)});
ft_strdel(&esc);
if (!ret)
return (SH_ERR(MATHERR_1));
temp = ft_sstrstr(data_singleton()->local_var, var);
if (temp)
{
temp += ft_strlenchr(temp, '=') + 1;
*value = ft_strdup(temp);
if (!(ft_stris(*value, &ft_isdigit)))
{
ft_strdel(value);
*value = ft_itoa(0);
}
}
else
*value = ft_itoa(0);
return (0);
}
static int do_math(char **value, char *operator, char *operand)
{ {
long ope1; long ope1;
long ope2; long ope2;
ope1 = ft_atoi(*value); ope1 = ft_atoi(value);
if (operand) ope2 = ft_atoi(operand);
ope2 = ft_atoi(operand); DG("value %s -> %i", value, ope1);
else DG("operand %s -> %i", operand, ope2);
ope2 = 0; if ((operator == '/') && ope2 == 0)
if ((operator[0] == '/' || operator[0] == '%') && ope2 == 0) return (SH_ERR(MATHERR_4) ? NULL : NULL);
return (SH_ERR(MATHERR_4)); if ((operator == '%') && ope2 == 0)
else return (SH_ERR(MATHERR_5) ? NULL : NULL);
{ ope1 = (operator == '+') ? ope1 + ope2 : ope1;
ope1 = (operator[0] == '+') ? ope1 + ope2 : ope1; ope1 = (operator == '-') ? ope1 - ope2 : ope1;
ope1 = (operator[0] == '-') ? ope1 - ope2 : ope1; ope1 = (operator == '/') ? ope1 / ope2 : ope1;
ope1 = (operator[0] == '/') ? ope1 / ope2 : ope1; ope1 = (operator == '*') ? ope1 * ope2 : ope1;
ope1 = (operator[0] == '*') ? ope1 * ope2 : ope1; ope1 = (operator == '%') ? ope1 % ope2 : ope1;
ope1 = (operator[0] == '%') ? ope1 % ope2 : ope1; DG("output=%s (%i)", ft_itoa(ope1), ope1);
} return (ft_itoa(ope1));
ft_strdel(value);
*value = ft_itoa(ope1);
return (0);
} }
int builtin_math(const char *path, char *const av[], char *const envp[]) int builtin_math(const char *path, char *const av[], char *const envp[])
{ {
char *var;
char *value; char *value;
char *operator; char operator;
char *operand; char *operand;
(void)path; (void)path;
(void)envp; (void)envp;
if (!av || !av[1] || !av[2] || !av[3] || av[4]) if (!av || !av[1] || !av[2] || !av[3] || av[4])
return (SH_ERR(MATHERR_0)); return (SH_ERR(MATHERR_0));
init_math(&var, &value, &operator, &operand); value = ft_getenv(data_singleton()->local_var, av[1]);
var = av[1]; operator = av[2][0];
if (get_value(var, &value)) if (!(ft_strchr("+-/*%", operator)))
return (1); return (SH_ERR(MATHERR_2, operator));
operator = av[2];
if (ft_strlen(operator) != 1 || !(ft_strchr("+-/*%", operator[0])))
return (SH_ERR(MATHERR_2));
operand = av[3]; operand = av[3];
if (!ft_stris(operand, &ft_isdigit)) if (!ft_stris(operand, &ft_isdigit))
return (SH_ERR(MATHERR_3)); return (SH_ERR(MATHERR_3, operand));
if (do_math(&value, operator, operand)) if (!(value = do_math(value, operator, operand)))
return (1); return (1);
builtin_setenv("setenv", (char *[]){"local", var, value, 0}, NULL); builtin_setenv("setenv", (char *[]){"math", av[1], value, 0}, NULL);
ft_strdel(&value);
return (0); return (0);
} }

View file

@ -6,7 +6,7 @@
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */ /* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/11/28 14:25:17 by jhalford #+# #+# */ /* Created: 2016/11/28 14:25:17 by jhalford #+# #+# */
/* Updated: 2017/03/22 16:21:49 by gwojda ### ########.fr */ /* Updated: 2017/03/22 22:08:20 by jhalford ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */ /* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/08 17:20:01 by gwojda #+# #+# */ /* Created: 2017/03/08 17:20:01 by gwojda #+# #+# */
/* Updated: 2017/03/22 14:51:44 by gwojda ### ########.fr */ /* Updated: 2017/03/23 00:06:08 by gwojda ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -76,7 +76,7 @@ static int c_check_glob(char **ss_glob, char *current_word,
str = data_singleton()->line.input; str = data_singleton()->line.input;
free(current_word); free(current_word);
free(glob_echap); free(glob_echap);
if (!*ss_glob || !**ss_glob || if (!ss_glob || !*ss_glob || !**ss_glob ||
!ft_strncmp(str + pos, *ss_glob, ft_strlen(*ss_glob))) !ft_strncmp(str + pos, *ss_glob, ft_strlen(*ss_glob)))
{ {
ft_sstrfree(ss_glob); ft_sstrfree(ss_glob);

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */ /* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/05 11:50:51 by jhalford #+# #+# */ /* Created: 2016/12/05 11:50:51 by jhalford #+# #+# */
/* Updated: 2017/03/21 19:14:31 by ariard ### ########.fr */ /* Updated: 2017/03/22 21:50:11 by jhalford ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */ /* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/07 20:33:45 by wescande #+# #+# */ /* Created: 2017/03/07 20:33:45 by wescande #+# #+# */
/* Updated: 2017/03/22 22:06:11 by ariard ### ########.fr */ /* Updated: 2017/03/22 22:10:26 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */ /* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/07 15:47:30 by wescande #+# #+# */ /* Created: 2017/03/07 15:47:30 by wescande #+# #+# */
/* Updated: 2017/03/22 18:27:03 by jhalford ### ########.fr */ /* Updated: 2017/03/22 21:48:12 by jhalford ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,33 +6,30 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/07 11:12:05 by ariard #+# #+# */ /* Created: 2017/03/07 11:12:05 by ariard #+# #+# */
/* Updated: 2017/03/22 21:34:39 by ariard ### ########.fr */ /* Updated: 2017/03/23 00:51:22 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "minishell.h" #include "minishell.h"
static int set_var(char *stream, char **var, char **value)
{
*var = ft_strdupchr(stream, '=');
stream += ft_strlenchr(stream, '=') + 1;
*value = ft_strdup(stream);
return (0);
}
int exec_var(t_btree **ast) int exec_var(t_btree **ast)
{ {
t_astnode *node; t_astnode *node;
char **av; char **av;
char *var; char *var;
char *value; char *value;
char *equal;
node = (*ast)->item; node = (*ast)->item;
av = token_to_argv(node->data.cmd.token, 1); DG("before");
set_var(av[0], &var, &value); if (!(av = token_to_argv(node->data.cmd.token, 1)))
return (0);
DG("after");
var = av[0];
if ((equal = ft_strchr(av[0], '=')))
*equal = 0;
value = equal ? equal + 1 : NULL;
builtin_setenv("internal", (char*[]){"local", var, value, 0}, NULL); builtin_setenv("internal", (char*[]){"local", var, value, 0}, NULL);
ft_strdel(&var); ft_sstrfree(av);
ft_strdel(&value);
ft_tabdel(&av);
return (0); return (0);
} }

View file

@ -6,7 +6,7 @@
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */ /* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/08 03:38:36 by wescande #+# #+# */ /* Created: 2017/03/08 03:38:36 by wescande #+# #+# */
/* Updated: 2017/03/21 18:44:57 by ariard ### ########.fr */ /* Updated: 2017/03/22 21:50:06 by jhalford ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */ /* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/08 00:58:02 by wescande #+# #+# */ /* Created: 2017/03/08 00:58:02 by wescande #+# #+# */
/* Updated: 2017/03/20 16:29:37 by gwojda ### ########.fr */ /* Updated: 2017/03/22 23:17:54 by jhalford ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */ /* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/08 02:37:04 by wescande #+# #+# */ /* Created: 2017/03/08 02:37:04 by wescande #+# #+# */
/* Updated: 2017/03/20 15:50:03 by gwojda ### ########.fr */ /* Updated: 2017/03/23 00:31:18 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -16,5 +16,6 @@ int pfree_list(t_process *p)
{ {
ft_ld_del(&p->data.d_for.token, &ft_tabdel); ft_ld_del(&p->data.d_for.token, &ft_tabdel);
btree_del(&p->data.d_for.content, &ast_free); btree_del(&p->data.d_for.content, &ast_free);
sleep(5);
return (0); return (0);
} }

View file

@ -6,7 +6,7 @@
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */ /* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/15 00:49:20 by wescande #+# #+# */ /* Created: 2017/03/15 00:49:20 by wescande #+# #+# */
/* Updated: 2017/03/22 15:51:04 by ariard ### ########.fr */ /* Updated: 2017/03/22 22:20:02 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -32,6 +32,5 @@ int plaunch_for(t_process *p)
ft_exec(&p->data.d_for.content); ft_exec(&p->data.d_for.content);
} }
ft_tabdel(&av); ft_tabdel(&av);
sleep(10); return (1);
return (0);
} }

View file

@ -6,36 +6,34 @@
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */ /* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/08 03:23:59 by wescande #+# #+# */ /* Created: 2017/03/08 03:23:59 by wescande #+# #+# */
/* Updated: 2017/03/22 19:37:08 by jhalford ### ########.fr */ /* Updated: 2017/03/23 03:15:20 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "minishell.h" #include "minishell.h"
#define FUNCERR_0 SHELL_NAME ":maximum nested function level reached" #define FUNCERR_0 ":maximum nested function level reached"
#define FUNC_LVL 200
int plaunch_function(t_process *p) int plaunch_function(t_process *p)
{ {
char *temp; static int protection= 0;
char *func_lvl;
int value;
func_lvl = ft_sstrstr(data_singleton()->env, "FUNC_LVL"); if (ft_atoi(ft_getenv(data_singleton()->env, "FUNC_LVL")) > 10)
if ((temp = func_lvl)) return(SH_ERR(FUNCERR_0));
{
func_lvl += ft_strlenchr(func_lvl, '=') + 1; if (protection >= FUNC_LVL)
if ((value = ft_atoi(func_lvl)) >= 199) return(SH_ERR(FUNCERR_0));
{ protection++;
ft_strdel(&temp);
return (SH_ERR(FUNCERR_0)); // jack faut qu on parle
}
value += 1;
}
else
value = 0;
builtin_setenv("setenv", (char *[]){"env", "FUNC_LVL", builtin_setenv("setenv", (char *[]){"env", "FUNC_LVL",
ft_itoa(value), 0}, NULL); ft_itoa(ft_atoi(ft_getenv(data_singleton()->env, "FUNC_LVL")) + 1),
NULL}, NULL);
ft_exec(&p->data.function.content); ft_exec(&p->data.function.content);
builtin_setenv("setenv", (char *[]){"env", "FUNC_LVL", "0", 0}, NULL); builtin_setenv("setenv", (char *[]){"env", "FUNC_LVL",
ft_itoa(ft_atoi(ft_getenv(data_singleton()->env, "FUNC_LVL")) - 1),
NULL}, NULL);
protection--;
return (ft_atoi(ft_getenv(data_singleton()->env, "?"))); return (ft_atoi(ft_getenv(data_singleton()->env, "?")));
} }

View file

@ -6,7 +6,7 @@
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */ /* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/07 20:36:04 by wescande #+# #+# */ /* Created: 2017/03/07 20:36:04 by wescande #+# #+# */
/* Updated: 2017/03/20 15:59:05 by gwojda ### ########.fr */ /* Updated: 2017/03/23 00:31:39 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */ /* By: wescande <wescande@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/07 19:38:05 by wescande #+# #+# */ /* Created: 2017/03/07 19:38:05 by wescande #+# #+# */
/* Updated: 2017/03/20 15:59:25 by gwojda ### ########.fr */ /* Updated: 2017/03/22 22:25:55 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */ /* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/09 22:03:48 by jhalford #+# #+# */ /* Created: 2017/02/09 22:03:48 by jhalford #+# #+# */
/* Updated: 2017/03/17 21:01:50 by jhalford ### ########.fr */ /* Updated: 2017/03/22 23:59:05 by jhalford ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -25,7 +25,10 @@ int lexer_bquote(t_list **alst, t_lexer *lexer)
if (get_lexer_stack(*lexer) != BQUOTE) if (get_lexer_stack(*lexer) != BQUOTE)
push(&lexer->stack, lexer->state); push(&lexer->stack, lexer->state);
else else
lexer->state = pop(&lexer->stack) == DQUOTE ? DQUOTE : DEFAULT; {
lexer->state = pop(&lexer->stack) &&
get_lexer_stack(*lexer) == DQUOTE ? DQUOTE : DEFAULT;
}
} }
else if (lexer->str[lexer->pos] == '\\' && (back = 1)) else if (lexer->str[lexer->pos] == '\\' && (back = 1))
{ {

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */ /* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/11/28 18:36:58 by jhalford #+# #+# */ /* Created: 2016/11/28 18:36:58 by jhalford #+# #+# */
/* Updated: 2017/03/17 20:08:02 by jhalford ### ########.fr */ /* Updated: 2017/03/22 23:56:49 by jhalford ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */ /* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/19 12:45:06 by gwojda #+# #+# */ /* Created: 2016/12/19 12:45:06 by gwojda #+# #+# */
/* Updated: 2017/03/22 21:14:34 by gwojda ### ########.fr */ /* Updated: 2017/03/22 23:53:57 by gwojda ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -27,13 +27,15 @@ int ft_x(char **str, size_t *pos)
ret = 0; ret = 0;
if (read(STDIN, &ret, sizeof(int)) < 0) if (read(STDIN, &ret, sizeof(int)) < 0)
return (-1); return (-1);
if ((*str)[*pos] == '\n') if (ret == FLECHE_GAUCHE && !underline_left(str, pos, pos_ref))
return (reset_term_hard()); return (0);
if (ret == FLECHE_GAUCHE) else if (ret == FLECHE_DROITE && !underline_right(str, pos, pos_ref))
underline_left(str, pos, pos_ref); return (0);
else if (ret == FLECHE_DROITE) else if (ret == TOUCHE_HOME)
underline_right(str, pos, pos_ref); underline_home(str, pos, pos_ref);
else else if (ret == TOUCHE_END)
underline_end(str, pos, pos_ref);
else if (ret != FLECHE_DROITE && ret != FLECHE_GAUCHE)
break ; break ;
} }
if (data_singleton()->line.copy_tmp && *data_singleton()->line.copy_tmp) if (data_singleton()->line.copy_tmp && *data_singleton()->line.copy_tmp)
@ -56,13 +58,15 @@ int ft_c(char **str, size_t *pos)
ret = 0; ret = 0;
if (read(STDIN, &ret, sizeof(int)) < 0) if (read(STDIN, &ret, sizeof(int)) < 0)
return (-1); return (-1);
if ((*str)[*pos] == '\n') if (ret == FLECHE_GAUCHE && !underline_left(str, pos, pos_ref))
return (reset_term_hard()); return (0);
if (ret == FLECHE_GAUCHE) else if (ret == FLECHE_DROITE && !underline_right(str, pos, pos_ref))
underline_left(str, pos, pos_ref); return (0);
else if (ret == FLECHE_DROITE) else if (ret == TOUCHE_HOME)
underline_right(str, pos, pos_ref); underline_home(str, pos, pos_ref);
else else if (ret == TOUCHE_END)
underline_end(str, pos, pos_ref);
else if (ret != FLECHE_DROITE && ret != FLECHE_GAUCHE)
break ; break ;
} }
reset_term(str, pos); reset_term(str, pos);

View file

@ -0,0 +1,35 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* underline_end.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* 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 */
/* */
/* ************************************************************************** */
#include "minishell.h"
void underline_end(char **str, size_t *pos, size_t pos_ref)
{
size_t pos_tmp;
pos_tmp = *pos;
if ((*str)[pos_tmp] == '\n')
{
underline_right(str, pos, pos_ref);
++pos_tmp;
}
while ((*str)[pos_tmp] && (*str)[pos_tmp] != '\n')
{
underline_right(str, pos, pos_ref);
++pos_tmp;
}
if ((*str)[pos_tmp] == '\n')
{
underline_left(str, pos, pos_ref);
--pos_tmp;
}
}

View file

@ -6,13 +6,13 @@
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */ /* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/22 20:55:24 by gwojda #+# #+# */ /* Created: 2017/03/22 20:55:24 by gwojda #+# #+# */
/* Updated: 2017/03/22 21:28:31 by gwojda ### ########.fr */ /* Updated: 2017/03/22 22:59:02 by gwojda ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "minishell.h" #include "minishell.h"
static void underline_check_end_of_line(char *str, size_t pos) void underline_check_end_of_line(char *str, size_t pos)
{ {
if (!str) if (!str)
return ; return ;
@ -22,61 +22,3 @@ static void underline_check_end_of_line(char *str, size_t pos)
ft_puttermcaps("le"); ft_puttermcaps("le");
} }
} }
void underline_right(char **str, size_t *pos, size_t pos_ref)
{
if (!(*pos < ft_strlen(*str)))
return ;
if (*pos >= pos_ref)
{
ft_puttermcaps("mr");
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_puttermcaps("me");
++(data_singleton()->line.pos_tmp);
++(*pos);
underline_check_end_of_line(*str, *pos);
}
else
{
data_singleton()->line.copy_tmp = ft_remove_imput(data_singleton()->
line.copy_tmp, data_singleton()->line.pos_tmp);
ft_putchar((*str)[*pos]);
if (data_singleton()->line.pos_tmp)
--(data_singleton()->line.pos_tmp);
++(*pos);
underline_check_end_of_line(*str, *pos);
}
}
void underline_left(char **str, size_t *pos, size_t pos_ref)
{
if (!*pos)
return ;
if (*pos > pos_ref)
{
--(*pos);
ft_putchar('\b');
ft_putchar((*str)[*pos]);
underline_check_end_of_line(*str, *pos + 1);
ft_putchar('\b');
data_singleton()->line.copy_tmp = ft_remove_imput(data_singleton()->
line.copy_tmp, data_singleton()->line.pos_tmp);
if (data_singleton()->line.pos_tmp)
--(data_singleton()->line.pos_tmp);
}
else
{
data_singleton()->line.pos_tmp = 0;
--(*pos);
ft_putchar('\b');
ft_puttermcaps("mr");
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_puttermcaps("me");
ft_putchar('\b');
}
}

View file

@ -0,0 +1,32 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* underline_home.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* 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 */
/* */
/* ************************************************************************** */
#include "minishell.h"
void underline_home(char **str, size_t *pos, size_t pos_ref)
{
size_t pos_tmp;
pos_tmp = *pos;
if ((*str)[pos_tmp] == '\n')
{
underline_left(str, pos, pos_ref);
--pos_tmp;
}
while ((pos_tmp && (*str)[pos_tmp] != '\n')
&& (pos_tmp + 1 > 0 && (*str)[pos_tmp - 1] != '\n'))
{
underline_left(str, pos, pos_ref);
--pos_tmp;
}
*pos = pos_tmp;
}

View file

@ -0,0 +1,62 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* underline_left.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* 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 */
/* */
/* ************************************************************************** */
#include "minishell.h"
static int reset_term_hard(void)
{
ft_putstr(data_singleton()->line.copy_tmp);
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);
}
static void left_abs(char **str, size_t *pos)
{
--(*pos);
ft_putchar('\b');
data_singleton()->line.pos_tmp = 0;
ft_puttermcaps("mr");
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_puttermcaps("me");
ft_putchar('\b');
}
static void left_mv_back(char **str, size_t *pos)
{
--(*pos);
ft_putchar('\b');
ft_putchar((*str)[*pos]);
underline_check_end_of_line(*str, *pos + 1);
data_singleton()->line.copy_tmp = ft_remove_imput(data_singleton()->
line.copy_tmp, data_singleton()->line.pos_tmp);
if (data_singleton()->line.pos_tmp)
--(data_singleton()->line.pos_tmp);
ft_putchar('\b');
}
int underline_left(char **str, size_t *pos, size_t pos_ref)
{
if (!*pos)
return (1);
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);
}

View file

@ -6,7 +6,7 @@
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */ /* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/22 21:14:07 by gwojda #+# #+# */ /* Created: 2017/03/22 21:14:07 by gwojda #+# #+# */
/* Updated: 2017/03/22 21:16:24 by gwojda ### ########.fr */ /* Updated: 2017/03/22 23:40:39 by gwojda ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -14,7 +14,7 @@
void reset_term(char **str, size_t *pos) void reset_term(char **str, size_t *pos)
{ {
size_t pos_ref; size_t pos_ref;
pos_ref = *pos; pos_ref = *pos;
if (*pos) if (*pos)
@ -26,39 +26,30 @@ void reset_term(char **str, size_t *pos)
ft_current_str(*str, *pos); ft_current_str(*str, *pos);
ft_get_next_str(*str, pos); ft_get_next_str(*str, pos);
ft_putnc('\b', *pos - pos_ref); ft_putnc('\b', *pos - pos_ref);
(*pos) = pos_ref; (*pos) = pos_ref + (((*str)[*pos]) ? 1 : 0);
} }
void reset_and_remove_term(char **str, size_t *pos, char *copy_tmp) void reset_and_remove_term(char **str, size_t *pos, char *copy_tmp)
{ {
size_t pos_ref; size_t pos_ref;
pos_ref = *pos; pos_ref = *pos;
if (!data_singleton()->line.pos_tmp) if (!data_singleton()->line.pos_tmp)
pos_ref += ft_strlen(data_singleton()->line.copy_tmp); pos_ref += ft_strlen(data_singleton()->line.copy_tmp);
if (*pos)
{
--(*pos);
ft_get_beggin_with_curs(*str, pos);
}
while (*copy_tmp) while (*copy_tmp)
{ {
--pos_ref; --pos_ref;
*str = ft_remove_imput(*str, pos_ref); *str = ft_remove_imput(*str, pos_ref);
++copy_tmp; ++copy_tmp;
} }
if (*pos)
{
--(*pos);
ft_get_beggin_with_curs(*str, pos);
}
ft_puttermcaps("cd"); ft_puttermcaps("cd");
ft_current_str(*str, *pos); ft_current_str(*str, *pos);
ft_get_next_str(*str, pos); ft_get_next_str(*str, pos);
ft_putnc('\b', *pos - pos_ref); ft_putnc('\b', *pos - pos_ref);
(*pos) = pos_ref; (*pos) = pos_ref + (((*str)[*pos]) ? 1 : 0);
}
int reset_term_hard(void)
{
ft_putnc('\b', ft_strlen(data_singleton()->line.copy_tmp));
ft_putstr(data_singleton()->line.copy_tmp);
ft_strdel(&data_singleton()->line.copy_tmp);
data_singleton()->line.pos_tmp = 0;
return (0);
} }

View file

@ -0,0 +1,58 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* underline_right.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/22 22:50:52 by gwojda #+# #+# */
/* Updated: 2017/03/22 23:00:32 by gwojda ### ########.fr */
/* */
/* ************************************************************************** */
#include "minishell.h"
static int reset_term_hard(void)
{
ft_putnc('\b', ft_strlen(data_singleton()->line.copy_tmp));
ft_putstr(data_singleton()->line.copy_tmp);
ft_strdel(&data_singleton()->line.copy_tmp);
data_singleton()->line.pos_tmp = 0;
return (0);
}
static void right_abs(char **str, size_t *pos)
{
ft_puttermcaps("mr");
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_puttermcaps("me");
++(data_singleton()->line.pos_tmp);
++(*pos);
underline_check_end_of_line(*str, *pos);
}
static void right_mv_back(char **str, size_t *pos)
{
data_singleton()->line.copy_tmp = ft_remove_imput(data_singleton()->
line.copy_tmp, data_singleton()->line.pos_tmp);
ft_putchar((*str)[*pos]);
if (data_singleton()->line.pos_tmp)
--(data_singleton()->line.pos_tmp);
++(*pos);
underline_check_end_of_line(*str, *pos);
}
int underline_right(char **str, size_t *pos, size_t pos_ref)
{
if (!(*pos < ft_strlen(*str)))
return (1);
if ((*str)[*pos] == '\n')
return (reset_term_hard());
if (*pos >= pos_ref)
right_abs(str, pos);
else
right_mv_back(str, pos);
return (1);
}

View file

@ -6,7 +6,7 @@
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */ /* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */
/* Updated: 2017/03/22 15:55:07 by jhalford ### ########.fr */ /* Updated: 2017/03/23 03:16:08 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -66,6 +66,9 @@ int data_init(int ac, char **av)
data->lst_func = NULL; data->lst_func = NULL;
lexer_init(&data->lexer); lexer_init(&data->lexer);
parser_init(&data->parser); parser_init(&data->parser);
if (!ft_getenv(data_singleton()->env, "FUNC_LVL"))
builtin_setenv("setenv", (char *[]){"env", "FUNC_LVL", "-1",
NULL}, NULL);
if ((term_name = ft_getenv(data->env, "TERM")) == NULL) if ((term_name = ft_getenv(data->env, "TERM")) == NULL)
{ {
term_name = "dumb"; term_name = "dumb";

View file

@ -6,7 +6,7 @@
/* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */ /* By: gwojda <gwojda@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/20 14:45:40 by gwojda #+# #+# */ /* Created: 2017/03/20 14:45:40 by gwojda #+# #+# */
/* Updated: 2017/03/22 22:02:30 by ariard ### ########.fr */ /* Updated: 2017/03/23 00:28:58 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -45,7 +45,7 @@ static int handle_instruction(t_list **token, t_btree **ast)
continue ; continue ;
if ((ret = do_parser_routine(token, ast)) == 1 if ((ret = do_parser_routine(token, ast)) == 1
&& SH_NO_INTERACTIVE(data->opts)) && SH_NO_INTERACTIVE(data->opts))
return (ret); return (ret);
else if (ret > 0) else if (ret > 0)
break ; break ;
} }
@ -66,6 +66,7 @@ int main(int ac, char **av)
t_btree *ast; t_btree *ast;
g_argv = av; g_argv = av;
DG("----------------");
setlocale(LC_ALL, ""); setlocale(LC_ALL, "");
if (shell_init(ac, av) != 0) if (shell_init(ac, av) != 0)
return (1); return (1);