diff options
author | JozanLeClerc <bousset.rudy@gmail.com> | 2020-08-26 18:39:48 +0200 |
---|---|---|
committer | JozanLeClerc <bousset.rudy@gmail.com> | 2020-08-26 18:39:48 +0200 |
commit | eb40600dc1e7e4c61547173953958d50bf6a89b3 (patch) | |
tree | ab42e6335884a63bba2b7f8234e5ea18270799ec /src/b_sqb_err.c | |
parent | Err check in progress (diff) | |
download | 42-minishell-eb40600dc1e7e4c61547173953958d50bf6a89b3.tar.gz 42-minishell-eb40600dc1e7e4c61547173953958d50bf6a89b3.tar.bz2 42-minishell-eb40600dc1e7e4c61547173953958d50bf6a89b3.tar.xz 42-minishell-eb40600dc1e7e4c61547173953958d50bf6a89b3.tar.zst 42-minishell-eb40600dc1e7e4c61547173953958d50bf6a89b3.zip |
Err check done
Diffstat (limited to 'src/b_sqb_err.c')
-rw-r--r-- | src/b_sqb_err.c | 57 |
1 files changed, 46 insertions, 11 deletions
diff --git a/src/b_sqb_err.c b/src/b_sqb_err.c index eac6a8a..6c68841 100644 --- a/src/b_sqb_err.c +++ b/src/b_sqb_err.c @@ -30,17 +30,24 @@ static uint8_t } static uint8_t - b_double_op(const uint64_t argc, + b_expect_arg(const uint64_t argc, char *argv[]) { - if (argc > 4) + if (argc == 3) { - ft_dprintf(STDERR_FILENO, "[: %s: unexpected operator\n", argv[2]); + ft_dprintf(STDERR_FILENO, "[: %s: argument expected\n", argv[1]); return (1); } - else if (argc == 3) + return (0); +} + +static uint8_t + b_double_op(const uint64_t argc, + char *argv[]) +{ + if (argc > 4) { - ft_dprintf(STDERR_FILENO, "[: %s: argument expected\n", argv[1]); + ft_dprintf(STDERR_FILENO, "[: %s: unexpected operator\n", argv[2]); return (1); } return (0); @@ -49,7 +56,30 @@ static uint8_t static uint8_t b_bad_nbr(char *argv[]) { - (void)argv; + char *ptr; + + if (ft_ischarset("+-0123456789", argv[0][0]) == FALSE || + ft_ischarset("+-0123456789", argv[2][0]) == FALSE) + return (1); + ptr = argv[0] + 1; + while (*ptr != '\0') + { + if (ft_isdigit(*ptr) == FALSE) + { + ft_dprintf(STDERR_FILENO, "[: %s: bad number\n", argv[0]); + return (1); + } + ptr++; + } + ptr = argv[2] + 1; + while (*ptr != '\0') + { + if (ft_isdigit(*ptr) == FALSE) + ft_dprintf(STDERR_FILENO, "[: %s: bad number\n", argv[2]); + if (ft_isdigit(*ptr) == FALSE) + return (1); + ptr++; + } return (0); } @@ -59,6 +89,16 @@ uint8_t { const uint64_t argc = u_builtins_get_argc((const char**)argv); + if (id >= FT_ID_SQB_NT) + { + if (b_expect_arg(argc, argv) != 0) + return (1); + } + if (id >= FT_ID_SQB_EQ) + { + if (b_bad_nbr(argv) != 0) + return (1); + } if (id < FT_ID_SQB_NT) { if (b_single_op(argc, argv) != 0) @@ -69,10 +109,5 @@ uint8_t if (b_double_op(argc, argv) != 0) return (1); } - if (id >= FT_ID_SQB_EQ) - { - if (b_bad_nbr(argv) != 0) - return (1); - } return (0); } |