aboutsummaryrefslogtreecommitdiff
path: root/src/checker/main.c
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-19 08:38:07 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-19 08:38:07 +0100
commit2b4327b7a448228f67a054b4bdaa3f84b9db2164 (patch)
tree154e15f5533dee898f180e3588165c06b43a76ec /src/checker/main.c
parent5e0e41652315114a8b0d883c473dbbbfc1c28342 (diff)
downloadpush_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.c51
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);
}