From 3adaa2c31586c3f76cb572f5d407cdb5f06fca93 Mon Sep 17 00:00:00 2001 From: Charles Date: Sat, 22 Feb 2020 10:45:05 +0100 Subject: Added argument parsing base --- src/args.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++++ src/main.c | 6 ++-- src/md5/main_md5.c | 4 +-- src/sha256/main_sha256.c | 4 +-- 4 files changed, 98 insertions(+), 7 deletions(-) create mode 100644 src/args.c (limited to 'src') diff --git a/src/args.c b/src/args.c new file mode 100644 index 0000000..6cfdb3f --- /dev/null +++ b/src/args.c @@ -0,0 +1,91 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* args.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 09:43:42 by cacharle #+# #+# */ +/* Updated: 2020/02/22 10:44:04 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_ssl.h" + +static void st_print_digest_id(t_flags flags, char *id) +{ + if (flags & FLAG_STRING) + ft_putchar('"'); + ft_putstr(id); + if (flags & FLAG_STRING) + ft_putchar('"'); +} + +static void st_print_digest(t_digest *digest, t_flags flags, char *name, char *id) +{ + int i; + + if (!(flags & FLAG_REVERSE) && !(flags & FLAG_QUIET)) + { + ft_putstr(name); + ft_putchar('('); + st_print_digest_id(flags, id); + ft_putstr(") = "); + } + i = -1; + while (++i < digest->size) + ft_putnbr_base(digest->data[i], "0123456789abcdef"); + if (flags & FLAG_QUIET) + return ; + ft_putchar(' '); + st_print_digest_id(flags, id); +} + +int fl_parse_args(char *name, int argc, char **argv, t_func_hash func_hash) +{ + t_flags flags; + t_digest digest; + char *file; + + flags = 0x0; + while (**argv == '-') + { + (*argv)++; + if (**argv == 's') + { + if ((*argv)[1] == '\0') + { + func_hash(*(++argv), &digest); + argc--; + } + else + func_hash(ft_strdup(*argv + 1), &digest); + st_print_digest(&digest, flags, name, ""); + } + else if (**argv == 'p') + flags |= FLAG_PIPE; + else if (**argv == 'q') + flags |= FLAG_QUIET; + else if (**argv == 'r') + flags |= FLAG_REVERSE; + else + return (1); + if (ft_strchr("pqrs", (*argv)[1]) != NULL) + { + **argv = '-'; + continue; + } + argv++; + argc--; + } + while (argc-- > 0) + { + if ((file = ft_read_file(*argv)) == NULL) + return (1); + func_hash(file, &digest); + free(file); + st_print_digest(&digest, flags, name, *argv); + argv++; + } + return (0); +} diff --git a/src/main.c b/src/main.c index 1d4b928..5bfd97f 100644 --- a/src/main.c +++ b/src/main.c @@ -6,15 +6,15 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/03 20:29:33 by cacharle #+# #+# */ -/* Updated: 2020/02/22 07:22:09 by cacharle ### ########.fr */ +/* Updated: 2020/02/22 08:57:39 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "ft_ssl.h" static t_command g_commands[] = { - {"md5", main_md5}, - {"sha256", main_sha256} + {"md5", fl_main_md5}, + {"sha256", fl_main_sha256} }; int fl_dispatch_command(char *command, int argc, char **argv) diff --git a/src/md5/main_md5.c b/src/md5/main_md5.c index 703f8ef..02dcaa0 100644 --- a/src/md5/main_md5.c +++ b/src/md5/main_md5.c @@ -6,13 +6,13 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 07:20:07 by cacharle #+# #+# */ -/* Updated: 2020/02/22 07:20:15 by cacharle ### ########.fr */ +/* Updated: 2020/02/22 08:57:32 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "ft_ssl_md5.h" -int main_md5(int argc, char **argv) +int fl_main_md5(int argc, char **argv) { return (0); } diff --git a/src/sha256/main_sha256.c b/src/sha256/main_sha256.c index e2b0955..7a83a61 100644 --- a/src/sha256/main_sha256.c +++ b/src/sha256/main_sha256.c @@ -6,13 +6,13 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/22 07:19:18 by cacharle #+# #+# */ -/* Updated: 2020/02/22 07:19:47 by cacharle ### ########.fr */ +/* Updated: 2020/02/22 08:57:22 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "ft_ssl_sha256.h" -int main_sha256(int argc, char **argv) +int fl_main_sha256(int argc, char **argv) { return (0); } -- cgit