From 39fea719bfb70e431c1cdd7e121bdf3ccf1c80db Mon Sep 17 00:00:00 2001 From: whaffman Date: Thu, 24 Apr 2025 11:40:35 +0200 Subject: [PATCH] valid_arguments --- inc/parser.h | 3 ++- src/main.c | 7 ++--- src/parser/valid_arguments.c | 50 ++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 src/parser/valid_arguments.c diff --git a/inc/parser.h b/inc/parser.h index 8caecf6..7e31609 100644 --- a/inc/parser.h +++ b/inc/parser.h @@ -6,7 +6,7 @@ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/04/19 14:41:55 by whaffman #+# #+# */ -/* Updated: 2025/04/23 12:28:37 by whaffman ######## odam.nl */ +/* Updated: 2025/04/24 11:38:31 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ @@ -28,5 +28,6 @@ int parse_file(char *buffer, t_map *map); void print_config(t_map *map); t_tile **copy_map(t_tile **grid, int width, int height); char **pointer_lines(char *buffer, char c); +int valid_arguments(int argc, char **argv); #endif \ No newline at end of file diff --git a/src/main.c b/src/main.c index 35d6d35..3fbb717 100644 --- a/src/main.c +++ b/src/main.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ */ /* +#+ */ /* Created: 2025/04/15 16:01:29 by qmennen #+# #+# */ -/* Updated: 2025/04/23 11:58:04 by whaffman ######## odam.nl */ +/* Updated: 2025/04/24 11:39:05 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ @@ -18,11 +18,8 @@ int main(int argc, char **argv) errno = 0; game = NULL; - if (argc != 2) - { - ft_putstr_fd("Usage: ./cub3d \n", 2); + if (!valid_arguments(argc, argv)) return (EXIT_FAILURE); - } if (!initialize_cub3d(&game, argv[1])) { perror("initialize_cub3d"); diff --git a/src/parser/valid_arguments.c b/src/parser/valid_arguments.c new file mode 100644 index 0000000..6c34884 --- /dev/null +++ b/src/parser/valid_arguments.c @@ -0,0 +1,50 @@ +/* ************************************************************************** */ +/* */ +/* :::::::: */ +/* valid_arguments.c :+: :+: */ +/* +:+ */ +/* By: whaffman +#+ */ +/* +#+ */ +/* Created: 2025/04/24 11:28:55 by whaffman #+# #+# */ +/* Updated: 2025/04/24 11:38:05 by whaffman ######## odam.nl */ +/* */ +/* ************************************************************************** */ + +#include "cub3d.h" +#include "libft.h" + +static int valid_extension(char *filename) +{ + int len; + + len = ft_strlen(filename); + if (len < 4) + return (FAILURE); + if (!ft_strncmp(filename + len - 4, ".cub", 4)) + return (SUCCESS); + return (FAILURE); +} + +int valid_arguments(int argc, char **argv) +{ + int fd; + + if (argc != 2) + return (ft_putstr_fd("Usage: ./cub3d \n", 2), FAILURE); + if (!valid_extension(argv[1])) + { + ft_putstr_fd("Error: Invalid file extension. Expected .cub\n", 2); + return (FAILURE); + } + fd = open(argv[1], O_RDONLY); + if (fd < 0) + return (perror("Error opening file"), FAILURE); + if (read(fd, NULL, 0) < 0) + { + perror("Error reading file"); + close(fd); + return (FAILURE); + } + close(open(argv[1], O_RDONLY)); + return (SUCCESS); +}