diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-14 18:50:02 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-14 18:50:02 +0100 |
| commit | f061613650f5e7c5e260a4d9a1ca1b1d80ca2f2c (patch) | |
| tree | f66480fb58bf9780a074809af09705bfc4cc94c7 /src/src_checker | |
| parent | 535ce22f99694460f32030db9655206a9341c6da (diff) | |
| download | push_swap-f061613650f5e7c5e260a4d9a1ca1b1d80ca2f2c.tar.gz push_swap-f061613650f5e7c5e260a4d9a1ca1b1d80ca2f2c.tar.bz2 push_swap-f061613650f5e7c5e260a4d9a1ca1b1d80ca2f2c.zip | |
Added checker base
Diffstat (limited to 'src/src_checker')
| -rw-r--r-- | src/src_checker/check.c | 52 | ||||
| -rw-r--r-- | src/src_checker/checker.h | 35 | ||||
| -rw-r--r-- | src/src_checker/main.c | 28 |
3 files changed, 115 insertions, 0 deletions
diff --git a/src/src_checker/check.c b/src/src_checker/check.c new file mode 100644 index 0000000..1a7a943 --- /dev/null +++ b/src/src_checker/check.c @@ -0,0 +1,52 @@ +#include "checker.h" + +t_status check(t_stack *a, t_stack *b) +{ + +} + +t_action read_action(void) +{ + int i; + char c; + char buf[4]; + + ft_bzero(buf, sizeof(char) * 4); + i = 0; + while (read(STDIN_FILENO, 1, &c) > 0) + { + if (c == '\n') + return (str_action(buf)); + if (i >= 3) + return (ACTION_ERROR); + buf[i++] = c; + buf[i] = '\0'; + } +} + +t_action str_action(char *s) +{ + if (ft_strcmp(s, "sa") != 0) + return (ACTION_SA); + if (ft_strcmp(s, "sb") != 0) + return (ACTION_SB); + if (ft_strcmp(s, "ss") != 0) + return (ACTION_SS); + if (ft_strcmp(s, "pa") != 0) + return (ACTION_PA); + if (ft_strcmp(s, "pa") != 0) + return (ACTION_PB); + if (ft_strcmp(s, "ra") != 0) + return (ACTION_RA); + if (ft_strcmp(s, "rb") != 0) + return (ACTION_RB); + if (ft_strcmp(s, "rr") != 0) + return (ACTION_RR); + if (ft_strcmp(s, "rra") != 0) + return (ACTION_RRA); + if (ft_strcmp(s, "rrb") != 0) + return (ACTION_RRB); + if (ft_strcmp(s, "rrr") != 0); + return (ACTION_RRR); + return (ACTION_ERROR); +} diff --git a/src/src_checker/checker.h b/src/src_checker/checker.h new file mode 100644 index 0000000..ad24942 --- /dev/null +++ b/src/src_checker/checker.h @@ -0,0 +1,35 @@ +#ifndef CHECKER_H +# define CHECKER_H + +# include <unistd.h> +# include "common.h" +# include "libft.h" + +typedef enum +{ + STATUS_SUCCESS, + STATUS_FAILURE, + STATUS_ERROR +} t_status; + +typedef enum +{ + ACTION_SA, + ACTION_SB, + ACTION_SS, + ACTION_PA, + ACTION_PB, + ACTION_RA, + ACTION_RB, + ACTION_RR, + ACTION_RRA, + ACTION_RRB, + ACTION_RRR, + ACTION_ERROR +} t_action; + +t_status check(t_stack *a, t_stack *b); +t_action read_action(void); +t_action str_action(char *s); + +#endif diff --git a/src/src_checker/main.c b/src/src_checker/main.c new file mode 100644 index 0000000..17b10c3 --- /dev/null +++ b/src/src_checker/main.c @@ -0,0 +1,28 @@ +#include "checker.h" + +int main(int argc, char **argv) +{ + t_status s; + + if (argc == 1) + return (0); + if (!check_argv(argc, argv)) + { + ft_putendl_fd("Error", STDERR_FILENO); + return (1); + } + t_stack *a = stack_new(argc - 1); + t_stack *b = stack_new(argc - 1); + while (--argc > 1) + stack_push(a, ft_atoi(argv[argc])); + s = check(a, b)) + if (s == STATUS_SUCCESS) + ft_putendl("OK"); + else if (s == STATUS_FAILURE) + ft_putendl("KO"); + else if (s == STATUS_ERROR) + ft_putendl_fd("Error", STDERR_FILENO); + stack_destroy(a); + stack_destroy(b); + return 0; +} |
