From 6be6c78c8856b14c19a1958dfa3993cc0ced1b3f Mon Sep 17 00:00:00 2001 From: Charles Date: Sun, 19 Jan 2020 14:21:53 +0100 Subject: Added stack operation visualizer, random stack generator, quick sort of some sort (WIP) --- src/common/parse.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/common/parse.c (limited to 'src/common/parse.c') diff --git a/src/common/parse.c b/src/common/parse.c new file mode 100644 index 0000000..b0415cd --- /dev/null +++ b/src/common/parse.c @@ -0,0 +1,49 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parse.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/01/19 09:03:28 by cacharle #+# #+# */ +/* Updated: 2020/01/19 13:33:17 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "common.h" + +static t_status has_dup(int *xs, size_t size) +{ + 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); +} + +t_status parse(int argc, char **argv, t_stack *a) +{ + while (--argc >= 1) + { + errno = 0; + stack_push(a, ft_strict_atoi(argv[argc])); + if (errno != 0) + { + ft_putendl_fd("Error", STDERR_FILENO); + stack_destroy(a); + return (STATUS_FAILURE); + } + } + if (has_dup(a->elements, stack_length(a)) != STATUS_SUCCESS) + { + ft_putendl_fd("Error", STDERR_FILENO); + stack_destroy(a); + return (STATUS_FAILURE); + } + return (STATUS_SUCCESS); +} -- cgit