From 62764dc5e7362933b7014dc8ef1120fd0ec8bae5 Mon Sep 17 00:00:00 2001 From: Tanguy MAZE Date: Sun, 24 Feb 2019 18:15:56 +0100 Subject: [PATCH] the week-end party goes on \o\ /o/ finished transition to t_psdata format corrected some pointer formating started testing on parser function: - weird valgrind errors about uninitialised values - some read/write/free errors still hanging around ** END TRANSMISSION ** --- Makefile | 8 +++---- includes/push_swap.h | 14 +++++++----- srcs/checker.c | 9 ++++---- srcs/ps_rerot.c | 20 ++++++++-------- srcs/ps_rot.c | 12 +++++----- srcs/ps_stktools.c | 54 +++++++++++++++++++++++++++++++++----------- srcs/ps_swap.c | 10 ++++---- 7 files changed, 78 insertions(+), 49 deletions(-) diff --git a/Makefile b/Makefile index 3c5d178..74e3aa6 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: tmaze +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2019/02/23 14:30:57 by tmaze #+# #+# # -# Updated: 2019/02/23 14:54:34 by tmaze ### ########.fr # +# Updated: 2019/02/24 14:17:55 by tmaze ### ########.fr # # # #******************************************************************************# @@ -86,16 +86,16 @@ $(OBJDIR) : @mkdir -p $(OBJS_DIRS) $(LIBDIR)/$(LIBFILE) : - @echo -e "$(YEL)===> $(GRE)$(NAME) : $(YEL) Librairy Compilation <===$(DEFOB)" + @echo -e "$(YEL)===> $(GRE)$(NAME) : $(YEL) Librairy Compilation <===$(DEF)" $(MAKE) -C $(LIBDIR) all $(NAME1) : $(OBJP1) $(OBJP) $(LIBDIR)/$(LIBFILE) @echo -e "$(YEL)===> $(GRE)$(NAME) : $(YEL) Binary Compilation <===$(DEF)" - $(CC) $(FLAGS) -c $@ $^ $(INCP) -L$(LIBDIR) -l$(LIB) + $(CC) $(FLAGS) -o $@ $^ $(INCP) -L$(LIBDIR) -l$(LIB) $(NAME2) : $(OBJP2) $(OBJP) $(LIBDIR)/$(LIBFILE) @echo -e "$(YEL)===> $(GRE)$(NAME) : $(YEL) Binary Compilation <===$(DEF)" - $(CC) $(FLAGS) -c $@ $^ $(INCP) -L$(LIBDIR) -l$(LIB) + $(CC) $(FLAGS) -o $@ $^ $(INCP) -L$(LIBDIR) -l$(LIB) # Cleaner rules clean : diff --git a/includes/push_swap.h b/includes/push_swap.h index 3af7873..2773fa8 100644 --- a/includes/push_swap.h +++ b/includes/push_swap.h @@ -6,7 +6,7 @@ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/02/21 14:13:53 by tmaze #+# #+# */ -/* Updated: 2019/02/23 15:46:05 by tmaze ### ########.fr */ +/* Updated: 2019/02/24 14:56:19 by tmaze ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,8 @@ # include # include "libft.h" +#include + typedef struct s_stack { int nb; @@ -29,12 +31,12 @@ typedef struct s_psdata t_stack *b; size_t size_a; size_t size_b; - t_list op; + t_list *op; } t_psdata; t_stack *ps_stknew(int nb); -void *ps_stkpsh(t_stack **s, t_stack *new); -t_stack *ps_stkpop(t_stack **s); +void ps_stkpsh(t_psdata *data, char c, t_stack *new); +t_stack *ps_stkpop(t_psdata *data, char c); void ps_stkclean(t_psdata *data); void ps_swap(t_psdata *data, char c); @@ -42,7 +44,7 @@ void ps_sswap(t_psdata *data); void ps_push(t_psdata *data, char c); void ps_rot(t_psdata *data, char c); void ps_rrot(t_psdata *data); -void ps_rerot(t_stack **s); -void ps_rrerot(t_stack **a, t_stack **b); +void ps_rerot(t_psdata *data, char c); +void ps_rrerot(t_psdata *data); #endif diff --git a/srcs/checker.c b/srcs/checker.c index b2a279e..65b1a5c 100644 --- a/srcs/checker.c +++ b/srcs/checker.c @@ -6,7 +6,7 @@ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/02/23 13:35:15 by tmaze #+# #+# */ -/* Updated: 2019/02/23 14:55:14 by tmaze ### ########.fr */ +/* Updated: 2019/02/24 15:38:10 by tmaze ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,7 +38,6 @@ int check_input(char *in, int *ret) int i; i = 0; - ret = 0; while (in[i] && ft_iswhitespace(in[i])) i++; if (in[i] && ft_issign(in[i])) @@ -62,16 +61,16 @@ int main(int ac, char **av) t_psdata data; i = ac; - while (i > 0) + nb = 0; + while (--i > 0) { if (check_input(av[i], &nb) && (new = ps_stknew(nb)) != NULL) - ps_stkpsh(&(data.a), new); + ps_stkpsh(&data, 'a', new); else { ft_putendl_fd("Error", 2); ps_stkclean(&data); return (2); } - i--; } } diff --git a/srcs/ps_rerot.c b/srcs/ps_rerot.c index 05d4cf9..5b1f773 100644 --- a/srcs/ps_rerot.c +++ b/srcs/ps_rerot.c @@ -6,7 +6,7 @@ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/02/21 16:32:04 by tmaze #+# #+# */ -/* Updated: 2019/02/23 16:08:12 by tmaze ### ########.fr */ +/* Updated: 2019/02/24 13:58:12 by tmaze ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,24 +27,24 @@ void ps_rerot(t_psdata *data, char c) s = data->b; if (c == 'b') size = data->size_b; - if (*s != NULL && size > 2) + if (s != NULL && size > 2) { - prec = *s; - tmp = (*s)->next; + prec = s; + tmp = s->next; while (tmp->next != NULL) { tmp = tmp->next; prec = prec->next; } prec->next = NULL; - ps_stkpsh(s, tmp); + ps_stkpsh(data, c, tmp); } - else if (*s != NULL && ps_stksize(*s) == 2) - ps_swap(s); + else if (s != NULL && size == 2) + ps_swap(data, c); } -void ps_rrerot(t_stack **a, t_stack **b) +void ps_rrerot(t_psdata *data) { - ps_rerot(a); - ps_rerot(b); + ps_rerot(data, 'a'); + ps_rerot(data, 'b'); } diff --git a/srcs/ps_rot.c b/srcs/ps_rot.c index 5d0e97b..c9cd6f2 100644 --- a/srcs/ps_rot.c +++ b/srcs/ps_rot.c @@ -6,7 +6,7 @@ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/02/21 16:07:55 by tmaze #+# #+# */ -/* Updated: 2019/02/23 15:19:59 by tmaze ### ########.fr */ +/* Updated: 2019/02/24 13:56:33 by tmaze ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,16 +27,16 @@ void ps_rot(t_psdata *data, char c) s = data->b; if (c == 'b') size = data->size_b; - if (*s != NULL && size > 2) + if (s != NULL && size > 2) { - tmp = ps_stkpop(s); - ind = *s; + tmp = ps_stkpop(data, c); + ind = s; while (ind->next != NULL) ind = ind->next; ind->next = tmp; } - else if (*s != NULL && size == 2) - ps_swap(s); + else if (s != NULL && size == 2) + ps_swap(data, c); } void ps_rrot(t_psdata *data) diff --git a/srcs/ps_stktools.c b/srcs/ps_stktools.c index 5b4940f..77a0f60 100644 --- a/srcs/ps_stktools.c +++ b/srcs/ps_stktools.c @@ -6,7 +6,7 @@ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/02/22 14:41:27 by tmaze #+# #+# */ -/* Updated: 2019/02/23 13:30:09 by tmaze ### ########.fr */ +/* Updated: 2019/02/24 17:41:40 by tmaze ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,36 +24,64 @@ t_stack *ps_stknew(int nb) return (ret); } -void *ps_stkpsh(t_stack **s, t_stack *new) +void ps_stkpsh(t_psdata *data, char c, t_stack *new) { t_stack *ind; + t_stack **s; + size_t size; - if (s != NULL && *s == NULL) - *s = new; - else if (s != NULL) + s = NULL; + if (data != NULL && new != NULL) { - ind = *s; - *s = new; - new->next = ind; + if (c == 'a') + s = &(data->a); + if (c == 'a') + size = data->size_a; + if (c == 'b') + s = &(data->b); + if (c == 'b') + size = data->size_b; + if (s != NULL && *s == NULL && (size++)) + *s = new; + else if (s != NULL && *s != NULL) + { + ind = *s; + *s = new; + new->next = ind; + size++; + } } } -t_stack *ps_stkpop(t_stack **s) +t_stack *ps_stkpop(t_psdata *data, char c) { t_stack *ret; + t_stack **s; + size_t size; + if (c == 'a') + s = &(data->a); + if (c == 'a') + size = data->size_a; + if (c == 'b') + s = &(data->b); + if (c == 'b') + size = data->size_b; + else if (c != 'a' && c != 'b') + return (NULL); ret = NULL; if (s != NULL && *s != NULL) { ret = *s; *s = ret->next; + size--; } return (ret); } void ft_lstdelstr(void *content, size_t content_size) { - ft_strdel(&content); + ft_strdel((char**)&content); content_size = 0; } @@ -66,7 +94,7 @@ void ps_stkclean(t_psdata *data) { tmp = data->a; data->a = data->a->next; - ft_memedel(&tmp); + ft_memdel((void**)&tmp); data->size_a--; } tmp = data->b; @@ -74,8 +102,8 @@ void ps_stkclean(t_psdata *data) { tmp = data->b; data->b = data->b->next; - ft_memedel(&tmp); + ft_memdel((void**)&tmp); data->size_b--; } - ft_lstdel(&op, &ft_lstdelstr); + ft_lstdel(&(data->op), &ft_lstdelstr); } diff --git a/srcs/ps_swap.c b/srcs/ps_swap.c index 6db54c3..da964e1 100644 --- a/srcs/ps_swap.c +++ b/srcs/ps_swap.c @@ -6,7 +6,7 @@ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/02/21 14:06:40 by tmaze #+# #+# */ -/* Updated: 2019/02/23 15:24:12 by tmaze ### ########.fr */ +/* Updated: 2019/02/24 13:59:48 by tmaze ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,11 +26,11 @@ void ps_swap(t_psdata *data, char c) s = data->b; if (c == 'b') size = data->size_b; - if (*s != NULL && size >= 2) + if (s != NULL && size >= 2) { - tmp = (*s)->nb; - (*s)->nb = (*s)->next->nb; - (*s)->next->nb = tmp; + tmp = s->nb; + s->nb = s->next->nb; + s->next->nb = tmp; } }