diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-19 08:38:07 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-19 08:38:07 +0100 |
| commit | 2b4327b7a448228f67a054b4bdaa3f84b9db2164 (patch) | |
| tree | 154e15f5533dee898f180e3588165c06b43a76ec /src/checker/main.c | |
| parent | 5e0e41652315114a8b0d883c473dbbbfc1c28342 (diff) | |
| download | push_swap-2b4327b7a448228f67a054b4bdaa3f84b9db2164.tar.gz push_swap-2b4327b7a448228f67a054b4bdaa3f84b9db2164.tar.bz2 push_swap-2b4327b7a448228f67a054b4bdaa3f84b9db2164.zip | |
refactored stack functions and checking for duplicates in args
Diffstat (limited to 'src/checker/main.c')
| -rw-r--r-- | src/checker/main.c | 51 |
1 files changed, 27 insertions, 24 deletions
diff --git a/src/checker/main.c b/src/checker/main.c index 3866800..3b4b313 100644 --- a/src/checker/main.c +++ b/src/checker/main.c @@ -6,18 +6,31 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/18 10:16:14 by cacharle #+# #+# */ -/* Updated: 2020/01/18 12:04:47 by cacharle ### ########.fr */ +/* Updated: 2020/01/19 08:37:03 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "checker.h" -// need to check duplicate -int main(int argc, char **argv) +t_status has_dup(int *xs, size_t size) { - t_status s; - t_stack *a; - t_stack *b; + int *tmp; + t_status ret; + + if ((tmp = (int*)malloc(size * sizeof(int))) == NULL) + return (STATUS_ERROR); + ft_memcpy(tmp, xs, size * sizeof(int)); + ret = ft_is_set(tmp, size, sizeof(int), &ft_compar_int) ? + STATUS_SUCCESS : STATUS_FAILURE; + free(tmp); + return (ret); +} + +int main(int argc, char **argv) +{ + t_status s; + t_stack *a; + t_stack *b; if (argc == 1) return (0); @@ -25,7 +38,6 @@ int main(int argc, char **argv) return (1); while (--argc >= 1) { - printf("argc %d\n", argc); errno = 0; stack_push(a, ft_strict_atoi(argv[argc])); if (errno != 0) @@ -35,19 +47,18 @@ int main(int argc, char **argv) return (1); } } + + if (has_dup(a->elements, stack_length(a)) != STATUS_SUCCESS) + { + ft_putendl_fd("Error", STDERR_FILENO); + stack_destroy(a); + return (1); + } if ((b = stack_new(stack_length(a))) == NULL) { stack_destroy(a); return (1); } - printf("stack a: "); - for (int i = 0; i <= a->top; i++) - printf("[%d]", a->elements[i]); - printf("\nstack b: "); - for (int i = 0; i <= b->top; i++) - printf("[%d]", b->elements[i]); - printf("\n"); - s = check(a, b); if (s == STATUS_SUCCESS) ft_putendl("OK"); @@ -55,15 +66,7 @@ int main(int argc, char **argv) ft_putendl("KO"); else if (s == STATUS_ERROR) ft_putendl_fd("Error", STDERR_FILENO); - - printf("stack a: "); - for (int i = 0; i <= a->top; i++) - printf("[%d]", a->elements[i]); - printf("\nstack b: "); - for (int i = 0; i <= b->top; i++) - printf("[%d]", b->elements[i]); - printf("\n"); stack_destroy(a); stack_destroy(b); - return 0; + return (0); } |
