From 4c7350e1c2bd54d11c5b0f63d934c583f013cff5 Mon Sep 17 00:00:00 2001 From: Charles Date: Sat, 22 Feb 2020 07:29:29 +0100 Subject: added sub commands main, dispatcher, basic error handling --- .gitignore | 2 +- Makefile | 10 ++++++---- include/ft_ssl.h | 18 +++++++++++++++++- include/ft_ssl_md5.h | 22 ++++++++++++++++++++++ include/ft_ssl_sha256.h | 22 ++++++++++++++++++++++ src/error.c | 27 +++++++++++++++++++++++++++ src/main.c | 29 ++++++++++++++++++++++++++--- src/md5/main_md5.c | 18 ++++++++++++++++++ src/sha256/main_sha256.c | 18 ++++++++++++++++++ 9 files changed, 157 insertions(+), 9 deletions(-) create mode 100644 include/ft_ssl_md5.h create mode 100644 include/ft_ssl_sha256.h create mode 100644 src/error.c create mode 100644 src/md5/main_md5.c create mode 100644 src/sha256/main_sha256.c diff --git a/.gitignore b/.gitignore index dd339c2..e2452c0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ *.o *.ghc -ft_sll +ft_ssl a.out diff --git a/Makefile b/Makefile index b4d28f8..6e449a7 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: cacharle +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2020/02/03 20:14:50 by cacharle #+# #+# # -# Updated: 2020/02/03 20:31:02 by cacharle ### ########.fr # +# Updated: 2020/02/22 07:27:54 by cacharle ### ########.fr # # # # **************************************************************************** # @@ -18,8 +18,10 @@ INCLUDE_DIR = include SRC_DIR = src OBJ_DIR = obj +OBJ_SUBDIR = $(shell find $(SRC_DIR) -type d | sed 's/src/obj/') + CC = gcc -CCFLAGS = -Wall -Wextra #-Werror +CCFLAGS = -I$(LIBFT_DIR)/include -I$(INCLUDE_DIR) -Wall -Wextra #-Werror LDFLAGS = -L$(LIBFT_DIR) -lft INCLUDE = $(shell find $(INCLUDE_DIR) -type f -name "*.h") @@ -31,13 +33,13 @@ NAME = ft_ssl all: prebuild libft_all $(NAME) prebuild: - @if [ ! -d $(OBJ_DIR) ]; then mkdir $(OBJ_DIR); fi + for subdir in $(OBJ_SUBDIR); do mkdir -p $$subdir; done $(NAME): $(OBJ) @echo "Linking: $@" @$(CC) -o $@ $^ $(LDFLAGS) -$(OBJ_DIR)%.o: $(SRC_DIR)/%.c $(INCLUDE) +$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(INCLUDE) @echo "Compiling: $@" @$(CC) $(CCFLAGS) -c -o $@ $< diff --git a/include/ft_ssl.h b/include/ft_ssl.h index 26fbc7e..c5709d6 100644 --- a/include/ft_ssl.h +++ b/include/ft_ssl.h @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/03 20:27:19 by cacharle #+# #+# */ -/* Updated: 2020/02/03 20:29:15 by cacharle ### ########.fr */ +/* Updated: 2020/02/22 07:20:34 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,4 +15,20 @@ # include "libft.h" +# include "ft_ssl_md5.h" +# include "ft_ssl_sha256.h" + +typedef int (*t_func_main)(int argc, char **argv); +typedef struct +{ + char *name; + t_func_main entry; +} t_command; + +/* +** error.c +*/ + +void fl_error_command(char *command); + #endif diff --git a/include/ft_ssl_md5.h b/include/ft_ssl_md5.h new file mode 100644 index 0000000..cc0f498 --- /dev/null +++ b/include/ft_ssl_md5.h @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_ssl_md5.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 07:14:45 by cacharle #+# #+# */ +/* Updated: 2020/02/22 07:18:24 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FT_SSL_MD5_H +# define FT_SSL_MD5_H + +/* +** main_md5.c +*/ + +int main_md5(int argc, char **argv); + +#endif diff --git a/include/ft_ssl_sha256.h b/include/ft_ssl_sha256.h new file mode 100644 index 0000000..7bb05ff --- /dev/null +++ b/include/ft_ssl_sha256.h @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_ssl_sha256.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 07:18:42 by cacharle #+# #+# */ +/* Updated: 2020/02/22 07:18:57 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FT_SSL_SHA256_H +# define FT_SSL_SHA256_H + +/* +** main_sha256.c +*/ + +int main_sha256(int argc, char **argv); + +#endif diff --git a/src/error.c b/src/error.c new file mode 100644 index 0000000..1492bde --- /dev/null +++ b/src/error.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* error.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 07:02:59 by cacharle #+# #+# */ +/* Updated: 2020/02/22 07:13:57 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_ssl.h" + +void fl_error_command(char *command) +{ + ft_putstr_fd("ft_ssl: Error: '", STDERR_FILENO); + ft_putstr_fd(command, STDERR_FILENO); + ft_putendl_fd("' is an invalid command.", STDERR_FILENO); + ft_putstr_fd("\nStandard commands:\n" + "\nMessage Digest commands:\n" + "md5\n" + "sha256\n" + "\nCipher commands:\n", + STDERR_FILENO + ); +} diff --git a/src/main.c b/src/main.c index b670ba6..1d4b928 100644 --- a/src/main.c +++ b/src/main.c @@ -6,14 +6,37 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/03 20:29:33 by cacharle #+# #+# */ -/* Updated: 2020/02/03 20:30:03 by cacharle ### ########.fr */ +/* Updated: 2020/02/22 07:22:09 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "ft_ssl.h" +static t_command g_commands[] = { + {"md5", main_md5}, + {"sha256", main_sha256} +}; + +int fl_dispatch_command(char *command, int argc, char **argv) +{ + unsigned long i; + + i = -1; + while (++i < sizeof(g_commands) / sizeof(t_command)) + if (ft_strcmp(g_commands[i].name, command) == 0) + return (g_commands[i].entry(argc, argv)); + fl_error_command(command); + return (1); +} + int main(int argc, char **argv) { - ft_putendl("hello\n"); - return (0); + if (argc == 1) + { + ft_putstr("usage: "); + ft_putstr(argv[0]); + ft_putendl_fd(" command [command opts] [command args]", STDERR_FILENO); + return (1); + } + return (fl_dispatch_command(argv[1], argc - 2, argv + 2)); } diff --git a/src/md5/main_md5.c b/src/md5/main_md5.c new file mode 100644 index 0000000..703f8ef --- /dev/null +++ b/src/md5/main_md5.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main_md5.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 07:20:07 by cacharle #+# #+# */ +/* Updated: 2020/02/22 07:20:15 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_ssl_md5.h" + +int main_md5(int argc, char **argv) +{ + return (0); +} diff --git a/src/sha256/main_sha256.c b/src/sha256/main_sha256.c new file mode 100644 index 0000000..e2b0955 --- /dev/null +++ b/src/sha256/main_sha256.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main_sha256.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 07:19:18 by cacharle #+# #+# */ +/* Updated: 2020/02/22 07:19:47 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_ssl_sha256.h" + +int main_sha256(int argc, char **argv) +{ + return (0); +} -- cgit