diff --git a/.gitignore b/.gitignore index a231196..d9c4f04 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1 @@ - -includes/fillit\.h\.gch - -a\.out - -*.out - objs/ - -fillit diff --git a/Makefile b/Makefile index c8b192f..ac53509 100644 --- a/Makefile +++ b/Makefile @@ -6,26 +6,20 @@ # By: vmanzoni +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2019/03/01 13:24:35 by vmanzoni #+# #+# # -# Updated: 2019/04/14 14:21:26 by vmanzoni ### ########.fr # +# Updated: 2019/04/14 22:01:39 by vmanzoni ### ########.fr # # # # **************************************************************************** # NAME = fillit -SRC_DIR = srcs/ - -SRCS = *.c - OBJ_DIR = objs/ - -OBJS = $(SRCS:.c=.o) - HEADER = includes/ +SRCS = *.c +OBJS = $(SRCS:.c=.o) LIB = fillit.h CC = gcc - CFLAGS = -Wall -Werror -Wextra RM = rm -rf @@ -33,15 +27,20 @@ RM = rm -rf all: $(NAME) $(NAME): - $(CC) $(CFLAGS) -I$(HEADER) -c $(addprefix $(SRC_DIR), $(SRCS)) - $(CC) $(OBJS) -o $(NAME) + make -C libft/ + $(CC) $(CFLAGS) -I$(HEADER) -c $(SRCS) + $(CC) -o $(NAME) $(OBJS) -L libft/ -lft + #$(CC) $(CFLAGS) -I$(HEADER) -c $(addprefix $(SRC_DIR), $(SRCS)) + #$(CC) $(OBJS) -o $(NAME) mkdir $(OBJ_DIR) mv $(OBJS) $(OBJ_DIR) clean: + make -C libft/ clean $(RM) $(OBJ_DIR) fclean: clean + make -C libft/ fclean $(RM) $(NAME) re: fclean all diff --git a/fillit b/fillit new file mode 100755 index 0000000..a41305e Binary files /dev/null and b/fillit differ diff --git a/includes/fillit.h b/fillit.h similarity index 85% rename from includes/fillit.h rename to fillit.h index 0c1eacb..4031d87 100644 --- a/includes/fillit.h +++ b/fillit.h @@ -6,7 +6,7 @@ /* By: vmanzoni +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/03/01 13:34:46 by vmanzoni #+# #+# */ -/* Updated: 2019/04/14 22:24:29 by hulamy ### ########.fr */ +/* Updated: 2019/04/15 00:14:19 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,7 @@ #include // for debug printf #include // to use bool type -# define BUFFER_SIZE 1024 +# define BUFF_SIZE 1024 /* ** DELETE BEFORE EVALUATION @@ -33,8 +33,10 @@ void print_test(char *test); */ char *read_file(char *file); -void print_error(char *s, int fd); -int ft_file_errors(char *file); +void print_error(char *s); +int check_file_errors(char *file); +int check_tetri_errors(char *tetri); +int check_tetri_errors2(char *tetri); typedef struct s_fillist { diff --git a/srcs/get_smallest_square.c b/get_smallest_square.c similarity index 90% rename from srcs/get_smallest_square.c rename to get_smallest_square.c index 03893e4..ad03c58 100644 --- a/srcs/get_smallest_square.c +++ b/get_smallest_square.c @@ -6,11 +6,11 @@ /* By: vmanzoni +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/04/12 22:29:45 by vmanzoni #+# #+# */ -/* Updated: 2019/04/14 14:17:47 by vmanzoni ### ########.fr */ +/* Updated: 2019/04/14 21:37:19 by vmanzoni ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../includes/fillit.h" +#include "fillit.h" /* char *get_smallest_square() diff --git a/srcs/handle_errors.c b/handle_errors.c similarity index 53% rename from srcs/handle_errors.c rename to handle_errors.c index b0b4dc8..f553bb9 100644 --- a/srcs/handle_errors.c +++ b/handle_errors.c @@ -6,19 +6,20 @@ /* By: vmanzoni +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/03/01 13:29:05 by vmanzoni #+# #+# */ -/* Updated: 2019/04/14 14:39:12 by vmanzoni ### ########.fr */ +/* Updated: 2019/04/15 00:13:18 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../includes/fillit.h" +#include "fillit.h" /* -** Function that display error message *s on fd +** Function that display error message *s on fd and exit program */ void print_error(char *s) { write(2, s, strlen(s)); + exit(1); } /* @@ -28,27 +29,65 @@ void print_error(char *s) ** - two \n in a row */ -int ft_file_errors(char *file) +int check_file_errors(char *file) { + int i; int line_nbr; + i = 0; line_nbr = 0; - while (*file) + while (file[i]) { - if (*file == '\n') + if (file[i] != '.' && file[i] != '#' && file[i] != '\n') + return (1); + if (file[i] == '\n') line_nbr++; - file++; - //if (*file == '\n') - //return (1); +// if (file[i] == '\n' && file[i+2] != '.' && file[i+2] != '#') +// return (1); + i++; } if (line_nbr < 4 || line_nbr > 129) return (1); return (0); } -/* -int ft_tetri_errors() +int check_tetri_errors(char *tetri) { + int i; + int htg; + int dot; + i = 0; + htg = 0; + dot = 0; + while (tetri[i]) + { + if (tetri[i] == '#') + htg++; + else if (tetri[i] == '.') + dot++; + i++; + } + if (htg != 4 || dot != 12 || check_tetri_errors2(tetri)) + return (1); + return (0); +} + + +int check_tetri_errors2(char *tetri) +{ + int i; + + i = 0; + while (tetri[i]) + { + if (tetri[i] == '.' || tetri[i] == '\n') + i++; + else if (tetri[i] == '#' && (tetri[i + 1] == '#' || tetri[i - 1] == '#' + || tetri[i + 5] == '#' || tetri[i - 5] == '#')) + i++; + else + return (1); + } + return (0); } -*/ diff --git a/libft b/libft new file mode 160000 index 0000000..dad20d5 --- /dev/null +++ b/libft @@ -0,0 +1 @@ +Subproject commit dad20d5d96b1865b150de700861cfc63630dffa1 diff --git a/srcs/main.c b/main.c similarity index 83% rename from srcs/main.c rename to main.c index db049da..b3bd85c 100644 --- a/srcs/main.c +++ b/main.c @@ -6,11 +6,11 @@ /* By: vmanzoni +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/02/12 13:20:48 by vmanzoni #+# #+# */ -/* Updated: 2019/04/14 15:18:46 by hulamy ### ########.fr */ +/* Updated: 2019/04/15 00:12:25 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../includes/fillit.h" +#include "fillit.h" int main(int argc, char **argv) { @@ -20,8 +20,10 @@ int main(int argc, char **argv) { if (!(input = read_file(argv[1]))) print_error("Error: Could not read file.\n"); - else if (ft_file_errors(input)) + if (check_file_errors(input)) print_error("Error: Invalid file.\n"); + if (check_tetri_errors(input)) + print_error("Error: Tetrimino not valid.\n"); /* Check if every tetrimino is valid Transform input to tetriminos @@ -32,6 +34,6 @@ int main(int argc, char **argv) print_test(input); } else - print_error("Error: Please submit a file.\n"); + print_error("Usage: Please submit a file.\n"); return (0); } diff --git a/srcs/print_fillit.c b/print_fillit.c similarity index 90% rename from srcs/print_fillit.c rename to print_fillit.c index 75ef681..adc26c4 100644 --- a/srcs/print_fillit.c +++ b/print_fillit.c @@ -6,11 +6,11 @@ /* By: vmanzoni +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/03/01 13:35:48 by vmanzoni #+# #+# */ -/* Updated: 2019/04/14 14:32:02 by vmanzoni ### ########.fr */ +/* Updated: 2019/04/15 00:11:22 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../includes/fillit.h" +#include "fillit.h" /* void ft_print_fillit() diff --git a/srcs/read_file.c b/read_file.c similarity index 60% rename from srcs/read_file.c rename to read_file.c index 837ce68..345e91f 100644 --- a/srcs/read_file.c +++ b/read_file.c @@ -6,31 +6,68 @@ /* By: vmanzoni +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/04/13 12:09:46 by vmanzoni #+# #+# */ -/* Updated: 2019/04/14 14:23:24 by vmanzoni ### ########.fr */ +/* Updated: 2019/04/14 23:01:31 by vmanzoni ### ########.fr */ /* */ /* ************************************************************************** */ -#include "../includes/fillit.h" +#include "fillit.h" + +/* +** Function that read and return a ptr to file +*/ char *read_file(char *file) { - char buf[BUFFER_SIZE]; + char buf[BUFF_SIZE]; int fd; int rv; int i; char *result; if (((fd = open(file, O_RDONLY)) < 0) \ - || ((rv = read(fd, &buf, BUFFER_SIZE)) < 0) \ - || !(result = malloc(sizeof(char)))) + || ((rv = read(fd, &buf, BUFF_SIZE)) < 0) \ + || !(result = malloc(sizeof(char) * rv))) return (NULL); buf[rv] = '\0'; i = 0; - while (rv--) + while (buf[i]) { result[i] = buf[i]; i++; } + result[i] = '\0'; close(fd); return (result); } + +/* +** Function that parse a file and return each tetrimino +*/ + +int parse_input(char *input) +{ + char tetri; + int c; + int i; + int j; + + c = 0; + while (input[c]) + { + i = 0; + while (i < 4) + { + j = 0; + while (j < 4) + { + tetri[j] = input[c++]; + j++; + } + if (check_tetri_errors(tetri)) + print_error("Error: Tetrimino not valid.\n"); + c++; + i++; + } + c++; + } +} diff --git a/samples/test b/samples/test new file mode 100644 index 0000000..cb1a109 --- /dev/null +++ b/samples/test @@ -0,0 +1,4 @@ +..#. +..#. +..#. +.. diff --git a/srcs/a.out b/srcs/a.out new file mode 100755 index 0000000..04aa84c Binary files /dev/null and b/srcs/a.out differ